日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

1 FreeBSD 核心( 四 )


kproc_start(&up_kp) kern/vfs_bio.c||
scheduler(NULL) vm/vm_glue.c
(||表示有多個(gè)程序)
proc-post()被呼叫后 , main()就是在對(duì)應(yīng)process 0 的kernel的虛擬
內(nèi)存里動(dòng)作 。kthread_init(),kproc_start(&page_kp),kproc_start(&vm_kp)
,kproc_start(&up_kp)等這幾個(gè)進(jìn)程 , 在fork()后相繼被調(diào)用 。它就是相
應(yīng)的進(jìn)程1 , 2 , 3 , 4等 。
除process 1 以外 , 其他的進(jìn)程調(diào)用并不返回調(diào)用的地址 。(也就是 , main()
的跟隨執(zhí)行后 , 并不返回locore.s) 。對(duì)于process #1的kernel的虛擬內(nèi)存 ,
在kthread_init()返回后 , main()的跟隨就完了 , 回到locore.s后,process #1
的進(jìn)程空間的配置文件/sbin/init就被執(zhí)行 。
main()在process #0對(duì)應(yīng)的kernel虛擬內(nèi)存運(yùn)行后 , 進(jìn)入時(shí)間鏈表scheduler() 。
這個(gè)并不返回 。那現(xiàn)在就有五個(gè)進(jìn)程了 。
然后 , fork() 的調(diào)用在下面說明 。
1 , 分配process ID , 保證struct proc()用的空間 。
2 , 復(fù)制父親的process的虛擬內(nèi)存空間 , 作成物理內(nèi)存的變換表 。對(duì)
應(yīng)兩個(gè)進(jìn)程 , 采用相對(duì)應(yīng)的物理內(nèi)存表 。
3 , 給回父親的struct proc和struct user , 然后對(duì)子進(jìn)程的struct和
struct user進(jìn)行初始化 。
4 , kernel的stacker也進(jìn)行復(fù)制 。
5 , 返回父進(jìn)程后 , 標(biāo)記生成的子進(jìn)程 。完成處理 。
但是 , process #0 -- 4 這五個(gè)進(jìn)程的虛擬內(nèi)存里面什么都沒有 。這些是核心
進(jìn)程的特殊部分 。進(jìn)程0 , 2 , 3是調(diào)節(jié)系統(tǒng)存在的進(jìn)程的執(zhí)行優(yōu)先級(jí) , 監(jiān)視物理
內(nèi)存的不足 , 如果不夠就使用swap區(qū)進(jìn)行交換 。進(jìn)程4的作用就是定期調(diào)查核心
的unix文件系統(tǒng)的管理信息與驅(qū)動(dòng)程序的管理信息的一致性 , 使它的信息一直
是最新的 。

1.3.3 /sbin/init
從kernel里面看 , /sbin/init就是單一的進(jìn)程空間里動(dòng)作 , 與一般的
user program一樣 , 提供user使用的unix文件系統(tǒng)的環(huán)境的服務(wù) 。
核心啟動(dòng)后最初的動(dòng)作就是/sbin/init 。作用如下:
。確保file system的一致性 , 進(jìn)行mount 。
。之后 , network的設(shè)定和各種daemon的啟動(dòng) 。
。監(jiān)視終端的login的配置和動(dòng)作狀態(tài) 。這個(gè)動(dòng)作完了后(logout) ,
修改和配置 login 。
也就是說 , 如果沒有它 , 用戶就不能使用unix文件系統(tǒng) 。還有就是 , 如果boot
progam參數(shù)指定-s的話 , 它就過渡到單一的用戶模式 。相對(duì)來說 , 普通的用戶
模式也就是multi模式 。為了使普通用戶能夠使用系統(tǒng) , /sbin/init的參考文件
主要在/etc目錄里放著 。主要就是運(yùn)行/etc/rc文件對(duì)系統(tǒng)進(jìn)行初始化 。
/etc/rc文件的主要內(nèi)容和作用如下:
。使系統(tǒng)能夠使用swap區(qū)
。檢查/etc/fstab,檢查它的連貫性 , 如果有問題就轉(zhuǎn)到單一的用戶模式
。mount nfs以外的文件系統(tǒng)
。讀入network 的設(shè)定和各種daemon進(jìn)程的設(shè)定情況的記錄文件
/etc/c.conf , 這個(gè)內(nèi)容作為shell script的變量設(shè)定 , 以下的就是
各個(gè)shell的動(dòng)作調(diào)整
。serial的初始化(/etc/rc.serial)
。運(yùn)行PCMCIA卡的插拔監(jiān)控守護(hù)進(jìn)程(/etc/rc.pccard)
。network的部分初始化(/etc/rc.network)
。如果有nfs的時(shí)候就進(jìn)行mount操作
。network的最終初始化(/etc/rc.network:?jiǎn)?dòng)和entwork有關(guān)的daemon)
。共有庫的有關(guān)信息的初始化
。intd,lpd,sendmail的啟動(dòng)
。依賴系統(tǒng)的一些初始化進(jìn)程
/etc/rc的處理完了后 , /sbin/init就對(duì)/etc/ttys等記述的一些終端的用戶login進(jìn)行
監(jiān)視 。對(duì)于這個(gè) , /etc/ttys里指定的終端 , fork()后的進(jìn)程里:
。exec()指定的程序(普通的情況是/usr/libexec/getty)
。/usr/libexec/getty進(jìn)行終端速度等的設(shè)定 。提示login:,等待用戶輸入
。用戶輸入后 , 名字作為參數(shù)exec() /etc/bin/login

推薦閱讀