圖1-3 UNIX系統(tǒng)的高層次的體系結(jié)構(gòu)
圖1-4 UNIX系統(tǒng)內(nèi)核結(jié)構(gòu)
圖1-4把系統(tǒng)調(diào)用的集合分成與文件子系統(tǒng)交互作用的部分及與進(jìn)程控制子系統(tǒng)交互作用的部分。文件子系統(tǒng)管理文件,其中包括分配文件空間、管理空閑空間、控制對(duì)文件的存取,以及為用戶檢索數(shù)據(jù)。進(jìn)程通過一個(gè)特定的系統(tǒng)調(diào)用集合,比如通過系統(tǒng)調(diào)用 open,close,read,write,stat,chown及chmod等與文件子系統(tǒng)交互。文件子系統(tǒng)使用一個(gè)緩沖機(jī)制存取文件數(shù)據(jù),緩沖機(jī)制調(diào)節(jié)在核心與二級(jí)存儲(chǔ) xhref="http://storage.it168.com/" mce_href="http://storage.it168.com/" target=_blank>存儲(chǔ)設(shè)備之間的數(shù)據(jù)流。緩沖機(jī)制同塊I/O設(shè)備驅(qū)動(dòng)程序交互作用,以便啟動(dòng)往核心去的數(shù)據(jù)傳送及從核心來的數(shù)據(jù)傳送。設(shè)備驅(qū)動(dòng)程序是用來控制外圍設(shè)備操作的核心模塊。塊I/O設(shè)備是隨機(jī)存取存儲(chǔ)設(shè)備,或者說,它們的設(shè)備驅(qū)動(dòng)程序使得它們對(duì)于系統(tǒng)的其他部分來說好像是隨機(jī)存取存儲(chǔ)設(shè)備。
例如,一個(gè)磁帶驅(qū)動(dòng)程序可以允許核心把一個(gè)磁帶裝置作為一個(gè)隨機(jī)存取存儲(chǔ)設(shè)備看待。文件子系統(tǒng)可以在沒有緩沖機(jī)制干預(yù)的情況下直接與"原始"I/O設(shè)備驅(qū)動(dòng)程序交互作用。原始設(shè)備,有時(shí)也被稱為字符設(shè)備,包括所有非塊設(shè)備。進(jìn)程控制子系統(tǒng)負(fù)責(zé)進(jìn)程同步、進(jìn)程間通信,存儲(chǔ)管理及進(jìn)程調(diào)度。當(dāng)要執(zhí)行一個(gè)文件而把該文件裝入存儲(chǔ)器中時(shí),文件子系統(tǒng)與進(jìn)程控制子系統(tǒng)交互:進(jìn)程子系統(tǒng)在執(zhí)行可執(zhí)行文件之前,把它們讀到內(nèi)存中。輸入/輸出存儲(chǔ)管理模塊控制存儲(chǔ)分配。
在任何時(shí)刻,只要系統(tǒng)沒有足夠的物理存儲(chǔ)供所有進(jìn)程使用,核心就在內(nèi)存與二級(jí)存儲(chǔ)之間對(duì)進(jìn)程進(jìn)行交換,以便所有的進(jìn)程都得到公平的執(zhí)行機(jī)會(huì)。調(diào)度程序模塊把CPU分配給進(jìn)程。該模塊調(diào)度各進(jìn)程依次運(yùn)行,直到它們因等待資源而自愿放棄CPU,或者知道它們最近一次的運(yùn)行時(shí)間超出一個(gè)時(shí)間量,從而核心搶占它們。于是調(diào)度程序選擇最高優(yōu)先權(quán)的合格進(jìn)程投入運(yùn)行;當(dāng)原來的進(jìn)程成為最高優(yōu)先權(quán)的合格進(jìn)程時(shí),還會(huì)再次投入運(yùn)行。進(jìn)程間通信有幾種形式,從時(shí)間的異步軟中斷信號(hào)到進(jìn)程間消息的同步傳輸?shù)取?/p>