1. Linux系統(tǒng)結(jié)構(gòu)
與Unix系統(tǒng)相似,Linux系統(tǒng)大致可分為三層:靠近硬件的底層是內(nèi)核,即Linux操作系統(tǒng)常駐內(nèi)存部分;中間層是內(nèi)核之外的Shell層,亦即操
作系統(tǒng)的系統(tǒng)程序部分;最高層是應(yīng)用層,即用戶程序部分,包括各種正文處理程序、語言編譯程序以及游戲程序等。如圖1所示。
圖1 Linux系統(tǒng)結(jié)構(gòu)
內(nèi)核是Linux操作系統(tǒng)的主要部分,它實(shí)現(xiàn)進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)系統(tǒng)等功能,從而為核外的所有程序提供運(yùn)行環(huán)境。
從結(jié)構(gòu)上看,Linux操作系統(tǒng)是采用單塊結(jié)構(gòu)的操作系統(tǒng)。就是說,所有的內(nèi)核系統(tǒng)功能都包含在一個(gè)大型的內(nèi)核軟件之中。當(dāng)然,Linux系統(tǒng)也支持可動(dòng)
態(tài)裝載和卸載的模塊。利用這些模塊,可以方便地在內(nèi)核中添加新的組件或卸載不再需要的內(nèi)核組件。Linux內(nèi)核結(jié)構(gòu)的框圖如圖2所示。
圖2 Linux系統(tǒng)核心框圖
圖2展示出三個(gè)層次:用戶層、核心層和硬件層。一般說來,可以將操作系統(tǒng)劃分為內(nèi)核和系統(tǒng)程序兩部分。系統(tǒng)程序及其它所有的程序都在內(nèi)核之上運(yùn)行,它們和
內(nèi)核之間的接口由操作系統(tǒng)提供的一組“抽象指令”定義,這些抽象指令稱為“系統(tǒng)調(diào)用”。系統(tǒng)調(diào)用看起來像C程序中的普通函數(shù)調(diào)用。所有運(yùn)行在內(nèi)核之上的程
序可分為系統(tǒng)程序和用戶程序兩大類,但它們統(tǒng)統(tǒng)運(yùn)行在“用戶模式”之下。內(nèi)核之外的所有程序必須通過系統(tǒng)調(diào)用才能進(jìn)入操作系統(tǒng)的內(nèi)核。
內(nèi)核程序在系統(tǒng)啟動(dòng)時(shí)被加載,然后它會(huì)初始化計(jì)算機(jī)硬件資源,并開始Linux的啟動(dòng)過程。
進(jìn)程是程序的一次執(zhí)行過程。進(jìn)程控制系統(tǒng)用于進(jìn)程管理、進(jìn)程同步、進(jìn)程通信、進(jìn)程調(diào)度和內(nèi)存管理等。程序以文件(源文件、可執(zhí)行文件等)形式存放。可執(zhí)行文件裝入內(nèi)存準(zhǔn)備執(zhí)行時(shí),進(jìn)程控制系統(tǒng)與文件系統(tǒng)相互作用,用可執(zhí)行文件更換子進(jìn)程的映像。
進(jìn)程是系統(tǒng)中的動(dòng)態(tài)實(shí)體??刂七M(jìn)程的系統(tǒng)調(diào)用包括進(jìn)程的創(chuàng)建、終止、執(zhí)行、等待、空間擴(kuò)充及信號(hào)傳送等。進(jìn)程調(diào)度模塊為進(jìn)程(線程)分配CPU
。Linux系統(tǒng)的進(jìn)程調(diào)度算法采用搶占式優(yōu)先級(jí)法,將進(jìn)程劃分為實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程,實(shí)時(shí)進(jìn)程的優(yōu)先級(jí)高于非實(shí)時(shí)進(jìn)程。Linux系統(tǒng)支持多種進(jìn)程通信機(jī)制,其中最常用的是信號(hào)、管道及Unix系統(tǒng)支持的System
V IPC機(jī)制等。
內(nèi)存管理控制內(nèi)存分配與回收。系統(tǒng)采用兩種策略管理內(nèi)存:交換和請求分頁。根據(jù)系統(tǒng)中物理內(nèi)存空間的使用情況進(jìn)程映像在內(nèi)存和輔存(磁盤)之間換入/換出,利用請求分頁技術(shù)提供虛擬存儲(chǔ)器。
文件系統(tǒng)來管理文件、分配文件空間、管理空閑空間、控制對文件的訪問,并為用戶檢索數(shù)據(jù)。進(jìn)程通過一組特定的系統(tǒng)調(diào)用(如open、close、read、write、chmod等)與文件系統(tǒng)交互作用。
Linux系統(tǒng)中使用了虛擬文件系統(tǒng)VFS,從而允許Linux支持多種不同的文件系統(tǒng),每個(gè)文件系統(tǒng)都要提供給VFS一個(gè)相同的接口。
文件系統(tǒng)利用緩沖機(jī)制訪問文件數(shù)據(jù)。緩沖機(jī)制與塊設(shè)備驅(qū)動(dòng)程序相互作用,以啟動(dòng)從核心向塊設(shè)備寫數(shù)據(jù),或者從塊設(shè)備向核心傳送(讀)數(shù)據(jù)。
Linux系統(tǒng)支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。Linux系統(tǒng)和設(shè)備驅(qū)動(dòng)程序之間使用標(biāo)準(zhǔn)的交互接口。這樣,內(nèi)核可以用同樣的方法來使用完全不同的各種設(shè)備。
核心底層的硬件控制負(fù)責(zé)處理中斷及與機(jī)器通信。外部設(shè)備(如磁盤或終端等)在完成某個(gè)工作或遇到某種事件時(shí)會(huì)中斷CPU執(zhí)行,由中斷處理系統(tǒng)進(jìn)行相應(yīng)分析、處理。處理之后將恢復(fù)被中斷進(jìn)程的執(zhí)行。
2. Unix系統(tǒng)結(jié)構(gòu)
由于Linux是Unix發(fā)展的一個(gè)分支,所以,二者的體系結(jié)構(gòu)有很多相似之處。為便于讀者了解相關(guān)情況,下面給出Unix
System V內(nèi)核的結(jié)構(gòu)框圖,見圖3。
圖3 Unix System V系統(tǒng)核心框圖
從圖3中看出,Unix核心可視為左、右兩大部分:左邊是文件系統(tǒng)部分,右邊是進(jìn)程控制系統(tǒng)部分。文件系統(tǒng)部分涉及操作系統(tǒng)中各種信息的保存,通常都是以
文件形式存放的,它相當(dāng)于核心的“靜態(tài)”部分。進(jìn)程控制系統(tǒng)部分涉及操作系統(tǒng)中各種活動(dòng)的調(diào)度和管理,通常以進(jìn)程形式展現(xiàn)其生命活力,相當(dāng)于核心的“動(dòng)
態(tài)”部分?!办o態(tài)”和“動(dòng)態(tài)”兩部分存在密切聯(lián)系。
圖3展示出了Unix的用戶層、核心層和硬件層三個(gè)層次。庫函數(shù)和系統(tǒng)調(diào)用的接口代表用戶程序和核心之間的界線。庫函數(shù)通過系統(tǒng)調(diào)用才能進(jìn)入操作系統(tǒng)。
3.Windows NT體系結(jié)構(gòu)
Windows
NT的體系結(jié)構(gòu)是分層的模塊系統(tǒng),如圖4所示。主要的層次有硬件抽象層HAL、內(nèi)核、執(zhí)行體和大量的子系統(tǒng)集合。前面三個(gè)都運(yùn)行在保護(hù)模式下,而各子系統(tǒng)
都在用戶模式下運(yùn)行。子系統(tǒng)又可分為環(huán)境子系統(tǒng)和保護(hù)子系統(tǒng)兩類,其中環(huán)境子系統(tǒng)仿真不同的操作系統(tǒng),保護(hù)子系統(tǒng)提供安全功能。
圖4 Windows NT結(jié)構(gòu)框圖
上面列出了Linux、Unix和Windows的體系結(jié)構(gòu)。從圖中可以看出,Linux與Unix的體系結(jié)構(gòu)基本相同。這也不奇怪,因?yàn)長inux本來
就是Unix大家族的一個(gè)新成員。這種層次結(jié)構(gòu)使得核心執(zhí)行的效率高,結(jié)構(gòu)關(guān)系清晰,易于移植、開發(fā)和維護(hù),在設(shè)計(jì)實(shí)現(xiàn)上也帶來方便。
Windows
NT采用客戶/服務(wù)器模型,在核心中應(yīng)用微內(nèi)核技術(shù),采用對象管理方式統(tǒng)一處理內(nèi)部所有事務(wù),這些是新一代操作系統(tǒng)的設(shè)計(jì)技術(shù)。然而,商業(yè)化運(yùn)作的特性使得新技術(shù)的普及應(yīng)用受到影響,代碼的保密、安全漏洞的不斷出現(xiàn),也影響了Windows
NT在政府的采購和重要部門的應(yīng)用。
金無足赤。事物在發(fā)展中前進(jìn)。誰代表著未來發(fā)展的方向,誰就能在競爭中取勝。
|