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