You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Linux</strong> <strong>i386</strong> <strong>Önyükleme</strong> <strong>Kodu</strong> <strong>NASIL</strong><br />
/*<br />
* Bu veri bölümünü ba¸slatır. Dikkat ederseniz yukarıda tümü<br />
* text bölümündedir çünkü bu bizim ba¸ska bir ¸sekilde<br />
* gideremeyece˘gimiz hizalama gereksinimidir.<br />
*/<br />
.data<br />
ALIGN<br />
/*<br />
* Tipik olarak 140 "quadwords" içerir; NR_CPUS’a ba˘glı olarak.<br />
*<br />
* D˙IKKAT! Herhangi bir ¸seyi de˘gi¸stirirseniz, bunun head.S’deki<br />
* gdt belirticisiyle e¸sle¸sti˘ginden emin olun.<br />
*/<br />
ENTRY(gdt_table)<br />
.quad 0x0000000000000000 /* NULL belirtici */<br />
.quad 0x0000000000000000 /* kullanılmadı */<br />
.quad 0x00cf9a000000ffff /* 0x10 kernel 4GB code at 0x00000000 */<br />
.quad 0x00cf92000000ffff /* 0x18 kernel 4GB data at 0x00000000 */<br />
.quad 0x00cffa000000ffff /* 0x23 user 4GB code at 0x00000000 */<br />
.quad 0x00cff2000000ffff /* 0x2b user 4GB data at 0x00000000 */<br />
.quad 0x0000000000000000 /* kullanılmadı */<br />
.quad 0x0000000000000000 /* kullanılmadı */<br />
/*<br />
* APM bölütleri bayt taneciklilik özelli˘gine sahiptir ve<br />
* tabanları ile sınırları çalı¸sma zamanında atanır.<br />
*/<br />
.quad 0x0040920000000000 /* 0x40 kötü BIOS’lar için APM ataması */<br />
.quad 0x00409a0000000000 /* 0x48 APM CS kod */<br />
.quad 0x00009a0000000000 /* 0x50 APM CS 16 kod (16 bit) */<br />
.quad 0x0040920000000000 /* 0x58 APM DS veri */<br />
.fill NR_CPUS*4,8,0 /* TSS’ler ve LDT’ler için bo¸sluk */<br />
idt_descr ve gdt_table’dan önce olan ALIGN makrosu performans ile ilgilidir.<br />
6.6. Kaynakça<br />
•<br />
•<br />
•<br />
•<br />
IA–32 Intel Architecture Software Developer’s Manual(B111)<br />
MultiProcessor Specification(B112)<br />
Using as(B113)<br />
GNU Binary Utilities(B114)<br />
7. linux/init/main.c<br />
Bu bölümü yazarken kendimi suçlu hissettim çünkü yeterince olmasa bile hakkında çok sayıda belge var.<br />
start_kernel() destekli i¸slevler, sürekli geli¸sen i¸sletim sistemi dahili bile¸senlerine ba˘gımlı oldu˘gu için,<br />
sürümden sürüme de˘gi¸sir. Sık sık belge güncellemek için vaktim olmadı˘gından bu bölümü olabildi˘gince basit<br />
tutmaya karar verdim.<br />
7.1. start_kernel()<br />
///////////////////////////////////////////////////////////////////////////////<br />
asmlinkage (B115) void _ _init (B116) start_kernel(void)<br />
http://belgeler.org <strong>Linux</strong> Kitaplı˘gı 46 / 77