getmemsize(),;1419行.;找出并計(jì)算所有可用之記憶體,;并保留;msgbuf
(保留在;avail_end;後面,;MSGBUF_SIZE;大小).
init386(),;1802行.;參數(shù);first;為未使用的;free;mem;addr;(physfree).
1824-1825行,;preload_bootstrap_relocate(),;kern/subr_module.c,;234行,;
relocate;預(yù)先載入(preload)的;kernel;module.;執(zhí)行;loader;的動(dòng)作,
修改;module;的;address;depend;資料.
1839-1860行,;設(shè)定;gdt;(global;descriptor;table).;由於;gdt;的格式較為
雜,;因此有所謂的;soft_segment_descriptor;(ssd),
i386/include/segments.h,;165行,;gdt_segs;就是
ssd;;list,;讓;gdt;較容易操作.;因此在;1853-1860行,;必需進(jìn)行
轉(zhuǎn)換動(dòng)作,;由;ssdtosd(),;i386/i386/support.s,;157行,;從;ssd;轉(zhuǎn)換
成;CPU;所能接受的;segment;descriptor;格式.
1862-1864行,;load;gdt,;使剛設(shè)好的;gdt;發(fā)生作用.;lgdt(),;i386/i386/support.s,
1521行.
1885-1894行,;設(shè)定;ldt.
1897-1923行,;設(shè)定;idt.
所有的;idt;entry;都指向;vector;routines,;i386/i386/exception.s,
122行.;每一個(gè);trap;or;fault;都會(huì)有對(duì)應(yīng)的;entry;point,;作為實(shí)
際;isr;和;cpu;之間介面.;關(guān)於上述介面,;另見專文.
1928行,;cninit(),;console;初始化.
1932行,;isa_defaultirq(),;i386/isa/intr_machdep.c,;219行.;設(shè)定;isa;device
所使用的;irq;(設(shè)定;icu;8259),;并設(shè)定對(duì)應(yīng)的;isr.
1948-1955行,;設(shè)定并安裝;tss.
1971行,;getmemsize(),;i386/i386/machdep.c,;1419行,;找出并計(jì)算所有可用之
memory,;并保留;msgbuf.;getmemsize;會(huì)設(shè)立幾個(gè);global;變數(shù).
physmem 實(shí)際可用的;page;數(shù)目.
Maxmem physcial;memory;address;的最大值.
phys_avail list;of;可用的;mem;block.
avail_start 由;pmap_bootstrap().
avail_end 最大可用之;physcial;memory;address.
所有的分配都必需小於這個(gè)位址.
1976-1979行,;msgbuf;initialization.
1982-1995行,;install;a;call;gate;for;system;call.
1999-2008行,;setup;process;0.
推薦閱讀
- FreeBSD 4.0 Kernel Hacking Guide--i386/i386/p
- 40 FreeBSD連載:郵件服務(wù)器
- FreeBSD 簡易編碼
- FreeBSD 4.0 Kernel Hacking Guide--kern/init_m
- 32 FreeBSD連載:系統(tǒng)備份
- FreeBSD 4.0 Kernel Hacking Guide--i386/i386/l
- 39 FreeBSD連載:定義自己的名字服務(wù)
- FreeBSD 4.0 Kernel Hacking Guide--vm/vm_init.
- FreeBSD 4.0 Kernel Hacking Guide--vm/vm_objec
- 刪除 FreeBSD 賬號(hào)
