




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、12.1 操作系統(tǒng)的設(shè)計(jì)11.1.1 設(shè)計(jì)的目標(biāo)和原則操作系統(tǒng)的設(shè)計(jì)目標(biāo):(1)可維護(hù)性與可擴(kuò)充性可維護(hù)性:軟件是否容易修改可擴(kuò)充性:軟件是否能增加新的功能維護(hù)性可分為三種:改錯(cuò)性維護(hù);適應(yīng)性維護(hù);完善性維護(hù)(2)可靠性。它包括:正確性;穩(wěn)健性(3)可理解性。有時(shí)也稱為可讀性。(4)有效性。指有效地使用(不浪費(fèi))計(jì)算機(jī)的資源,特別是 CPU 和內(nèi)存空間。操作系統(tǒng)的設(shè)計(jì)原則:(1)抽象原則。為實(shí)際問題建立求解的模型。(2)信息隱藏和信息局部化原則。 信息隱藏:使得一個(gè)模塊內(nèi)的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊不能訪問。 信息局部化:把一些關(guān)系密切的軟件元素(如數(shù)據(jù)以及施加于該數(shù)據(jù)的各種操
2、作)物理地放得比較接近 - 放在一個(gè)模塊中或一個(gè)程序包中。 信息局部化顯然有助于實(shí)現(xiàn)信息隱藏。 面向?qū)ο笤O(shè)計(jì)技術(shù)(Object-Oriented,O-O)中“對象類”所具有的“封裝性”就是一種信息隱藏和信息局部化技術(shù),它把數(shù)據(jù)及其屬性以及施加于數(shù)據(jù)上的操作,像信封一樣全部封裝在對象類里面,對象外部不能隨便了解,只能通過對象提供的操作請求給予服務(wù)。 (3)模塊化。把程序按模塊獨(dú)立性原則劃分為若干個(gè)模塊,使得每個(gè)模塊成為單入口、單出口且功能單一的程序單元。 (4)一致性。 (5)完整性。 (6)確定性。11.1.2 操作系統(tǒng)的設(shè)計(jì) 操作系統(tǒng)是一種系統(tǒng)軟件,所以它的設(shè)計(jì)與實(shí)現(xiàn)也遵循軟件工程中的軟件生
3、命周期模型,即分為五個(gè)階段:(1)需求分析階段;(2)設(shè)計(jì)階段;(3)實(shí)現(xiàn)階段;(4)測試階段;(5)運(yùn)行和維護(hù)階段。 上述五個(gè)階段形成所謂的“瀑布模型”。它不是單調(diào)的,而是構(gòu)成多個(gè)循環(huán)。 第一、二兩個(gè)階段的實(shí)現(xiàn)方法,傳統(tǒng)上是使用結(jié)構(gòu)化分析方法(SA)和結(jié)構(gòu)化設(shè)計(jì)方法(SD)。近年來使用面向?qū)ο蟮姆椒ū容^多。11.2 操作系統(tǒng)的結(jié)構(gòu)11.2.1 模塊接口法(單塊法) (第一代模式)模塊通常是指命名的一段程序語句或子程序。以前的模塊一般是多入口、多出口、多功能的。模塊之間的相互調(diào)用過程中要有輸入和輸出參數(shù)的傳送,這稱為模塊間的接口關(guān)系。接口關(guān)系的簡單或復(fù)雜取決于三個(gè)因素:(1)模塊間的調(diào)用方式(
4、通過 go to 語句直接引用或過程調(diào)用)(2)模塊間參數(shù)的作用(作數(shù)據(jù)使用或作控制作用的開關(guān)量)(3)相互傳送參數(shù)的數(shù)量 如果模塊間傳送的參數(shù)起控制作用,指揮其他多功能的模塊具體實(shí)現(xiàn)哪個(gè)功能,則稱這種復(fù)雜的接口關(guān)系為耦合緊密。 模塊接口法的特點(diǎn):(1)模塊間的調(diào)用呈現(xiàn)無序的形式;(2)模塊間耦合緊密。 耦合緊密和錯(cuò)綜復(fù)雜的調(diào)用關(guān)系使得模塊間形成一個(gè)堅(jiān)實(shí)的整體,因此模塊接口法也被稱為單塊法。 模塊接口法的缺點(diǎn):(1)系統(tǒng)的結(jié)構(gòu)關(guān)系不清晰,可讀性與適應(yīng)性差。(2)模塊間相互調(diào)用,相互依賴,容易造成循環(huán)調(diào)用,系統(tǒng)可靠性降低。11.2.2 層次結(jié)構(gòu)設(shè)計(jì)法(第二代模式) 把操作系統(tǒng)的所有功能模塊按功能
5、流圖的調(diào)用次序排成若干層,只允許各層間的模塊單向調(diào)用(全序關(guān)系)或還允許同層的模塊相互調(diào)用(半序關(guān)系)。例如 ,MS-DOS 操作系統(tǒng)便是一種層次結(jié)構(gòu)。用 戶COMMAND.COMMSDOS.SYSROM-BIOS硬 件IO.SYS11.2.3 客戶/服務(wù)器方式(第三代模式) 操作系統(tǒng)由兩大部分組成:(1)內(nèi)核:在核心態(tài)運(yùn)行,提供所有操作系統(tǒng)基本都具有的操作,如線程調(diào)用、虛擬存儲(chǔ)、消息傳遞、設(shè)備驅(qū)動(dòng)、內(nèi)核原語操作集、中斷處理等。這些部分通常采用層次結(jié)構(gòu)并構(gòu)成基本操作系統(tǒng)。(2)服務(wù)器進(jìn)程層:操作系統(tǒng)的其他部分分成若干相對獨(dú)立的進(jìn)程,提供一組服務(wù)。它們自包含地在用戶態(tài)運(yùn)行,采用客戶/服務(wù)器方式活
6、動(dòng)。 服務(wù)器進(jìn)程是各種應(yīng)用程序接口 API 或者文件系統(tǒng)與網(wǎng)絡(luò)等。服務(wù)器進(jìn)程的任務(wù)是檢查是否有客戶提出服務(wù)請求,在滿足客戶進(jìn)程的請求后將結(jié)果返回。 客戶進(jìn)程可以是一個(gè)應(yīng)用程序,也可以是一個(gè)要求其他服務(wù)器進(jìn)程提供服務(wù)的服務(wù)器進(jìn)程。 進(jìn)程之間采用統(tǒng)一的發(fā)送消息機(jī)制進(jìn)行通信。 客戶進(jìn)程/服務(wù)器進(jìn)程內(nèi)核服務(wù)器進(jìn)程請求消息結(jié)果消息結(jié)果消息請求消息核心態(tài)用戶態(tài)用戶態(tài)客戶/服務(wù)器方式的優(yōu)點(diǎn):(1)可靠性(魯棒性,robust)好。每個(gè)服務(wù)器都是自包含的,耦合最松散。即使某個(gè)服務(wù)器失敗,也不會(huì)造成其他服務(wù)器或系統(tǒng)損壞與崩潰。(2)易維護(hù)、易擴(kuò)充。每個(gè)服務(wù)器都是自包含,且接口規(guī)范,所以容易維護(hù)和增加新的服務(wù)器功
7、能。(3)適宜于分布式的計(jì)算環(huán)境。因?yàn)榫W(wǎng)絡(luò)上的計(jì)算機(jī)是以客戶/服務(wù)器模型為基礎(chǔ),并且也是用消息來通信,所以本地服務(wù)器(或客戶)很容易給遠(yuǎn)程計(jì)算機(jī)上的客戶應(yīng)用程序(或服務(wù)器)發(fā)送消息。第12章 Windows NT 操作系統(tǒng)12.1 Windows NT 操作系統(tǒng)概述 由微軟于 1993 年推出的 32 位操作系統(tǒng) 用 C 和 C+ 語言編寫(部分用匯編語言) 支持多用戶、多任務(wù) 采用圖形用戶界面(GUI) 內(nèi)裝網(wǎng)絡(luò)功能 虛擬資源管理 支持多操作系統(tǒng)、多重文件系統(tǒng) 對稱多處理能力.12.2 Windows NT 的設(shè)計(jì)目標(biāo)(1)客戶/服務(wù)器工作方式(詳見 11.2.3 )。(2)可移植性。操作系
8、統(tǒng)只要作少量的修改,便能在一個(gè)采用不同類型的處理器或不同配置的計(jì)算機(jī)上工作。NT 可移植性的關(guān)鍵是設(shè)置了硬件抽象層,它在高層操作系統(tǒng)中隱藏了硬件的實(shí)際差別,使得 NT 的其余部分認(rèn)為所有硬件本質(zhì)上都是一樣的。因此,NT 不僅可在 Intel x86 微處理器上運(yùn)行,而且也可在 RISC 芯片上運(yùn)行,如 DEC Alpha AXP、Motorola Power PC 等。(3)平面 32 位內(nèi)存模式。DOS 的 16 位內(nèi)存管理方式要求任何文件的代碼段不得超過 64K,同時(shí)16位的 FAT 允許每個(gè)邏輯分區(qū)最大只能為 2GB(采用LBA)。NT 采用平面 32 位內(nèi)存模式,內(nèi)存尋址空間可達(dá) 4G
9、,并且使用一種新的文件系統(tǒng) - NTFS,每個(gè)邏輯分區(qū)最大為 402000000TB。FAT16 的文件系統(tǒng)可以轉(zhuǎn)換為 NTFS,但反過來不行。(4)受保護(hù)內(nèi)存模式。DOS 和 Windows 3.x 的所有程序可以訪問內(nèi)存的任何位置,造成系統(tǒng)可靠性很差。在 NT 中每個(gè)進(jìn)程被分配 4GB 的虛擬內(nèi)存空間,其中應(yīng)用程序使用的是低端的 2GB,高端的 2GB 留給系統(tǒng)使用。進(jìn)程只能在自己的內(nèi)存空間中運(yùn)行。(5)容錯(cuò)性。多級的系統(tǒng)容錯(cuò)能力可按預(yù)定方式處理一切意外事件,不會(huì)引起系統(tǒng)不良后果。(6)安全性。采用類似于 UNIX 的安全機(jī)制,符合美國國家安全機(jī)構(gòu)的 C2 級檢測標(biāo)準(zhǔn)。 (7)兼容性。能執(zhí)
10、行為其他操作系統(tǒng)編寫的程序,如 MS-DOS、16 位 Windows、OS/2、POSIX(面向計(jì)算環(huán)境的可移植操作系統(tǒng)接口)。(8)本地化。NT 顯示字符時(shí)不是采用 ASCII 碼,而是使用 Unicode 標(biāo)準(zhǔn)。ASCII 是 8 位的,它的代碼集只包含 256 個(gè)字符,而 Unicode 代碼集是 16 位,可表示 65536 個(gè)不同字符。全面支持中國的簡、繁體漢字。(9)搶占式多任務(wù)。進(jìn)程調(diào)度可分為: 搶占式:正在執(zhí)行的進(jìn)程要讓位于更重要的進(jìn)程(包括時(shí)間片到和高優(yōu)先級)。 非搶占式:進(jìn)程一旦擁有 CPU,則執(zhí)行到結(jié)束,除非因某原因被阻塞而不能繼續(xù)執(zhí)行。 Windows 3.x 采用的
11、是非搶占式,萬一應(yīng)用程序出錯(cuò),就會(huì)完全霸占 CPU 時(shí)間,將整個(gè)系統(tǒng)掛起。NT 使用搶占式,微內(nèi)核始終保持對系統(tǒng)的控制,時(shí)間片一到便中止進(jìn)程運(yùn)行,將控制交給下一個(gè)進(jìn)程。同時(shí) ,NT 的代碼全部是可重入的,從而支持多任務(wù)系統(tǒng)中多進(jìn)程(或線程)共享操作系統(tǒng)的代碼段。12.3 Windows NT 的系統(tǒng)模型Windows NT 的系統(tǒng)模型是: C/S 模型 + 對象模型 + 對稱多處理模型1. 客戶/服務(wù)器模型(詳見 11.2.3 )。2. 對象模型傳統(tǒng)的軟件設(shè)計(jì)方法是結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計(jì)技術(shù)。采用自頂向下,逐步細(xì)化的方法導(dǎo)出模塊的層次結(jié)構(gòu)圖。在這種設(shè)計(jì)中,系統(tǒng)均有一個(gè)“主程序”,用來控制、管理
12、和調(diào)度下層模塊。但在操作系統(tǒng)這樣的大系統(tǒng)中,要找出單個(gè)“主程序”是困難的,有人稱操作系統(tǒng)是沒有“頂”的程序。 面向?qū)ο蟮能浖_發(fā)方法不是試圖設(shè)計(jì)一個(gè)自頂向下的系統(tǒng),而是找出軟件為了完成其工作所必須處理的對象?!皩ο蟆笔且粋€(gè)抽象的數(shù)據(jù)結(jié)構(gòu),它符合軟件工程原則 - 抽象、信息隱藏和信息局部化。它是現(xiàn)代軟件系統(tǒng)中最好的構(gòu)成部件。 NT 使用對象模型的優(yōu)點(diǎn)是:(1)操作系統(tǒng)訪問和操縱其資源 - 事件對象、資源對象、進(jìn)程對象都是用同樣的方法,即使用對象句柄。(2)所有對象采用同樣的保護(hù)方法,簡化了安全措施。3. 對稱多處理模型 多處理模式:一臺計(jì)算機(jī)中有兩個(gè)以上的處理機(jī),可同時(shí)執(zhí)行進(jìn)程(或線程)。它可分
13、為: 非對稱多處理模式(主從式):由一臺處理機(jī)執(zhí)行操作系統(tǒng),負(fù)責(zé)處理機(jī)調(diào)度和資源管理。其他處理機(jī)只執(zhí)行用戶進(jìn)程(或線程)。所有處理機(jī)共用主存,并通過主存相聯(lián)系。 對稱多處理模式:各處理機(jī)地位平等,操作系統(tǒng)可以在任何一臺處理機(jī)上運(yùn)行。所有處理機(jī)共用主存,并通過主存相聯(lián)系。NT 使用對稱多處理模型的優(yōu)點(diǎn)是:(1)操作系統(tǒng)可在任一空閑的處理機(jī)上運(yùn)行,也可以同時(shí)在多個(gè)處理機(jī)上運(yùn)行。并且當(dāng)一個(gè)高優(yōu)先級線程需要時(shí),可以搶占操作系統(tǒng)的所有代碼(除內(nèi)核部分外),即強(qiáng)迫把操作系統(tǒng)給一個(gè)處理機(jī)。(2)一個(gè)進(jìn)程的多個(gè)線程可以同時(shí)在多個(gè)處理機(jī)上運(yùn)行。(3)服務(wù)器進(jìn)程可使用多個(gè)線程同時(shí)在不同的處理機(jī)上處理多個(gè)客戶進(jìn)程的
14、服務(wù)請求。12.4 Windows NT 的結(jié)構(gòu)Windows NT 的結(jié)構(gòu)可以分為兩部分:(1)系統(tǒng)用戶態(tài)部分(Windows NT 保護(hù)子系統(tǒng))保護(hù)子系統(tǒng)由一些客戶進(jìn)程和服務(wù)器進(jìn)程組成,其結(jié)構(gòu)關(guān)系為客戶/服務(wù)器模型。每個(gè)服務(wù)器駐留在單獨(dú)的進(jìn)程中,它的主存由 NT 執(zhí)行體的虛擬存儲(chǔ)系統(tǒng)所保護(hù),不受其他進(jìn)程的影響。有兩類保護(hù)子系統(tǒng):集成子系統(tǒng):完成重要操作系統(tǒng)功能的服務(wù)器,包括安全子系統(tǒng),網(wǎng)絡(luò)軟件中的若干部件。 環(huán)境子系統(tǒng):每個(gè)環(huán)境子系統(tǒng)是一個(gè)用戶態(tài)服務(wù)器,為特定的操作系統(tǒng)提供一個(gè) API。但在多個(gè)環(huán)境子系統(tǒng)運(yùn)行時(shí),用戶所能看到的只有 Win32子系統(tǒng),它是 NT 的基本子系統(tǒng),充當(dāng)其他環(huán)境子
15、系統(tǒng)的服務(wù)器;其余環(huán)境子系統(tǒng)擔(dān)任客戶角色,并將它們的 API 調(diào)用傳送給適當(dāng)?shù)?Win32 API。 Win32 API 由 Win32 子系統(tǒng)提供服務(wù)。 Win32 子系統(tǒng)負(fù)責(zé)所有的用戶輸入和輸出,包括顯示器、鍵盤和鼠標(biāo)。當(dāng)其他子系統(tǒng)(如 OS/2 或 POSIX)需要使用這些設(shè)備時(shí),它們向 Win32 子系統(tǒng)發(fā)出請求,要求提供服務(wù)??蛻暨M(jìn)程(應(yīng)用程序)本地過程調(diào)用API服務(wù)器API請求消息結(jié)果消息結(jié)果消息API請求消息核心態(tài)用戶態(tài)用戶態(tài)(2)系統(tǒng)核心態(tài)部分(NT 執(zhí)行體) NT 執(zhí)行體的結(jié)構(gòu)是層次式與微內(nèi)核的結(jié)合。它基本上是一個(gè)完整的操作系統(tǒng),由一組部件組成,這些部件形成層次結(jié)構(gòu)。 系統(tǒng)服
16、務(wù)是 NT 執(zhí)行體為用戶態(tài)進(jìn)程提供的接口。 第一層由幾個(gè)部件組成,它們通過內(nèi)部界面可以互相調(diào)用(半序結(jié)構(gòu))。 第二層是 NT 的微內(nèi)核。它負(fù)責(zé)處理系統(tǒng)的所有操作,幾乎所有的系統(tǒng)功能都要經(jīng)過內(nèi)核。它可以看作是 NT 執(zhí)行體的總負(fù)責(zé)人。 第三層是硬件抽象層,它將 NT 執(zhí)行體的其余部分與運(yùn)行機(jī)器的硬件特性隔離開來。 I/O 管理器內(nèi)部又分成若干層,它由文件系統(tǒng)、緩沖存儲(chǔ)管理程序、設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)驅(qū)動(dòng)程序等層次組成。I/O 管理程序FAT 驅(qū)動(dòng)程序NTFS 驅(qū)動(dòng)程序HPFS 驅(qū)動(dòng)程序軟盤 驅(qū)動(dòng)程序硬盤 驅(qū)動(dòng)程序登錄進(jìn)程OS/2 應(yīng)用程序32位Windows 應(yīng)用程序POSIX 應(yīng)用程序DOS 應(yīng)用
17、程序Win32上Windows應(yīng)用程序16位Windows 應(yīng)用程序POSIX子系統(tǒng)NT 虛擬DOS 機(jī)NT 虛擬DOS 機(jī)OS/2 子系統(tǒng)安 全 子系統(tǒng)Win 32子系統(tǒng)系 統(tǒng) 服 務(wù) 對象 安全調(diào)用 進(jìn)程 本地過程 虛擬內(nèi)存 I/O管理器 監(jiān)視器 管理器 調(diào)用功能 管理器 管理器 微 內(nèi) 核硬件抽象層硬 件NT執(zhí)行體用戶態(tài)核心態(tài)12.5 Windows NT 的基元成分 - 對象、進(jìn)程和線程12.5.1 對象對象是數(shù)據(jù)、數(shù)據(jù)的屬性及有關(guān)操作的封裝體。它體現(xiàn)了很好的信息隱藏性,有利于軟件維護(hù)和軟件重用。具有相同特性的對象歸為一個(gè)對象類,軟件設(shè)計(jì)中定義的是對象類,對象則是對象類一個(gè)具體實(shí)現(xiàn)的示
18、例。對象類是一種廣義的資源類,它可以包括進(jìn)程、文件、信號量、窗口、菜單等。對象 = 對象頭(用來管理對象的信息) + 對象體 (對象類的屬性)12.5.2 進(jìn)程 在 Windows NT 中進(jìn)程用來表示操作系統(tǒng)所要做的工作,它由四個(gè)部分組成:(1)一個(gè)可執(zhí)行的程序:初始代碼和數(shù)據(jù)。(2)一個(gè)私用地址空間:進(jìn)程的虛擬地址空間。(3)系統(tǒng)資源:由操作系統(tǒng)分配給進(jìn)程。由于資源是一種對象,所以進(jìn)程所需要的資源集用局限于該進(jìn)程的對象表來描述。(4)至少有一個(gè)執(zhí)行線程。 NT 與傳統(tǒng)操作系統(tǒng)的進(jìn)程概念的主要不同點(diǎn):(1)所有的進(jìn)程都是對象,但對象不一定是進(jìn)程。(2)NT 的進(jìn)程沒有進(jìn)程控制塊 PCB。進(jìn)程
19、的信息存在于進(jìn)程對象的對象體及局限于進(jìn)程的對象表中。(3)每個(gè) NT 進(jìn)程至少有一個(gè)執(zhí)行線程。(4)在 NT 中競爭處理機(jī)、參與處理機(jī)調(diào)度的基本單位不是進(jìn)程而是線程。所以對進(jìn)程不去區(qū)分其狀態(tài)的變化。(5)NT 中每個(gè)進(jìn)程(包括父子進(jìn)程)都在獨(dú)立的地址空間中運(yùn)行,而一個(gè)進(jìn)程的多個(gè)線程均在同一個(gè)地址空間中運(yùn)行。12.5.3 線程 線程是進(jìn)程內(nèi)的一個(gè)執(zhí)行單元或一個(gè)可調(diào)度實(shí)體。 進(jìn)程在邏輯上表示操作系統(tǒng)所做的作業(yè);線程是完成該作業(yè)的子任務(wù)。進(jìn)程與線程均可以并發(fā)地執(zhí)行。 線程的四個(gè)基本成分:(1)唯一的標(biāo)識符,稱為客戶 ID。(2)一組狀態(tài)寄存器的內(nèi)容,記錄處理器的狀態(tài)(相當(dāng)于“程序狀態(tài)字”)。(3)兩
20、個(gè)棧,分別在用戶態(tài)和核心態(tài)執(zhí)行時(shí)使用。(4)一個(gè)私用的存儲(chǔ)器。 線程的特點(diǎn):(1)線程作為對象來實(shí)現(xiàn)。(2)線程是處理機(jī)調(diào)度的基本單位。NT 采用可搶占的動(dòng)態(tài)優(yōu)先級調(diào)度算法。 (3)每個(gè)進(jìn)程創(chuàng)建時(shí)只有一個(gè)線程,該線程需要時(shí)可以創(chuàng)建其他線程。進(jìn)程只有在它的一個(gè)線程被調(diào)度執(zhí)行時(shí)才被激活。(4)線程調(diào)用系統(tǒng)服務(wù)采用陷阱(trap)方式(類似于中斷方式)。(5)線程在其生命期有六種狀態(tài)的變化。 使用線程的好處:(1)方便而有效地實(shí)現(xiàn)并行性。進(jìn)程可創(chuàng)建多個(gè)線程來執(zhí)行同一程序的不同部分,這些線程共享進(jìn)程的同一地址空間、對象句柄以及其他資源,避免了將父進(jìn)程地址空間的所有內(nèi)容拷貝到子進(jìn)程的地址空間的時(shí)間消耗。
21、(2)創(chuàng)建線程比創(chuàng)建進(jìn)程要快,而且只需很少的開銷。(3)服務(wù)器程序只要裝入主存一次,然后建立多個(gè)獨(dú)立的服務(wù)器線程,便可以并行地為多個(gè)客戶提供服務(wù)。12.5.4 對象、進(jìn)程和線程之間的關(guān)系 對象、進(jìn)程和線程是 Windows NT 的三個(gè)基元成分。其中,對象是非活動(dòng)成分;進(jìn)程和線程是活動(dòng)成分。 進(jìn)程和線程之間的關(guān)系:(1)線程是進(jìn)程的一個(gè)組成部分。(2)進(jìn)程的多個(gè)線程都在該進(jìn)程的地址空間中活動(dòng)。(3)資源分配的對象是進(jìn)程。系統(tǒng)分給進(jìn)程一定配額的資源。(4)處理機(jī)調(diào)度的基本單位是線程,真正在處理機(jī)上執(zhí)行的是線程,它所需要的資源從進(jìn)程的配額中扣除。(5)不同進(jìn)程的線程間的同步采用消息通信的辦法,使用
22、的資源是進(jìn)程的端口(消息隊(duì)列)。 總之,進(jìn)程相當(dāng)于董事長,線程相當(dāng)于部門執(zhí)行經(jīng)理。從某種意義上說,進(jìn)程不干活,它只通過線程來工作。12.6 內(nèi)核 內(nèi)核是 NT 真正的中心,它提供了一組精心定義的操作系統(tǒng)原語和機(jī)制。通過內(nèi)核原語,NT 執(zhí)行體可以構(gòu)成許多更高級的功能。 內(nèi)核執(zhí)行的主要任務(wù)有:(1)調(diào)度線程的執(zhí)行。(2)當(dāng)中斷和異常發(fā)生時(shí),將控制轉(zhuǎn)移到相應(yīng)的中斷和異常處理程序。(3)執(zhí)行低級的多處理器同步。(4)在電源失效后,實(shí)現(xiàn)系統(tǒng)的恢復(fù)過程。 內(nèi)核永遠(yuǎn)駐留內(nèi)存,內(nèi)核的執(zhí)行是不可搶占的,并且總運(yùn)行在核心態(tài)。12.6.1 內(nèi)核調(diào)度程序與線程的狀態(tài)轉(zhuǎn)換 線程在其生命期經(jīng)歷以下六種狀態(tài):(1)就緒狀態(tài)
23、:線程已具備執(zhí)行的條件等待 CPU 執(zhí)行。調(diào)度程序只從就緒線程池中挑選線程進(jìn)入備用狀態(tài)。(2)備用狀態(tài):被調(diào)度程序選定為某一特定處理器的下一個(gè)執(zhí)行對象。系統(tǒng)中每個(gè)處理器只能有一個(gè)處于備用狀態(tài)的線程。(3)運(yùn)行狀態(tài):在處理機(jī)上運(yùn)行。(4)等待狀態(tài):以下情況線程進(jìn)入等待狀態(tài)。 線程等待同步對象,同步它的執(zhí)行; 因 I/O 系統(tǒng)而等待; 環(huán)境子系統(tǒng)導(dǎo)致線程將自己掛起。 (5)轉(zhuǎn)換狀態(tài):如果線程已準(zhǔn)備好執(zhí)行,但由于資源成為不可用(如其內(nèi)核棧所在頁被換出主存)而成為轉(zhuǎn)換狀態(tài)。(6)終止?fàn)顟B(tài):線程完成它的執(zhí)行。 內(nèi)核的線程調(diào)度程序采用可搶占的動(dòng)態(tài)優(yōu)先級調(diào)度算法(類似于 5.5.7 節(jié)的多級反饋隊(duì)列)運(yùn)行備
24、用就緒已初始化終止等待轉(zhuǎn)換創(chuàng)建并初始化線程對象被調(diào)度執(zhí)行被搶占或時(shí)間段結(jié)束執(zhí)行完成等待一個(gè)對象句柄同步對象成為有信號狀態(tài)重新初始化資源不可用資源可用被選執(zhí)行被搶占12.6.2 中斷和異常處理 中斷:由硬件引起,是隨機(jī)發(fā)生的異步事件。 異常:某一特別指令執(zhí)行的結(jié)果,是同步情況,如主存存取錯(cuò)、被零除等。(注意:NT 的“異?!迸c一般說的“程序性中斷”類似。) 用戶程序陷阱處理程序相應(yīng)的處理程序保護(hù)現(xiàn)場;屏蔽中斷;轉(zhuǎn)至相應(yīng)的處理程序.用戶態(tài)核心態(tài)12.7 虛擬存儲(chǔ)管理12.7.1 進(jìn)程的虛擬地址空間NT 的內(nèi)存管理采用“請求分頁的虛擬存儲(chǔ)管理技術(shù)”,主要部件是虛擬存儲(chǔ)管理程序(Virtual Mem
25、ory Manager,VM 管理器)。每個(gè)進(jìn)程都有 4GB(232個(gè)字節(jié))的虛擬地址空間。其中應(yīng)用程序使用的是低端的 2GB,高端的 2GB 留給系統(tǒng)使用。進(jìn)程只能在自己的內(nèi)存空間中運(yùn)行。NT 中使用的頁面尺寸為 4KB(212)。12.7.2 NT 虛擬分頁的地址變換機(jī)構(gòu) 因?yàn)?NT 中每個(gè)進(jìn)程都有 232 個(gè)可能的虛地址,每頁大小為 4KB(212),所以每個(gè)進(jìn)程的地址空間可有 220 頁 ,即進(jìn)程的頁表可有 220 個(gè)表目 。每個(gè)表目占 4 個(gè)字節(jié),所以每個(gè)進(jìn)程的頁表要占用 4MB 的內(nèi)存空間,即要用 1024 個(gè)頁面來存放,這是一個(gè)很大的開銷。NT 采用把頁表放在外存,而不是主存,根
26、據(jù)需要把這些頁表換入、換出主存的辦法,避免把所有主存消耗在頁表上。 0頁 1頁 . 1023頁 1024頁 . 2047頁 . . . 220頁頁表(每頁對應(yīng)的頁架號)子頁表0子頁表1子頁表10234 字節(jié) NT 的地址變換機(jī)構(gòu)采用的一種稱為兩級頁表結(jié)構(gòu)的技術(shù)。第一級表叫頁目錄,每個(gè)進(jìn)程對應(yīng)一個(gè)頁目錄,它共有 1024 個(gè)表目,用來記錄該進(jìn)程每個(gè)子頁表所在的頁架號(稱為頁表地址)。第二級表是進(jìn)程的頁表(子頁表),也有 1024 個(gè)表目,用來記錄子頁表中每頁所在的頁架號。將該頁的頁架號與頁內(nèi)位移拼接,便可以得到絕對地址。目錄位移 頁表位移 頁內(nèi)位移頁表地址.頁架號.絕對地址.頁表主存頁目錄頁目錄
27、地址虛擬地址 由于每從主存訪問一個(gè)數(shù)據(jù)要三次訪問主存,速度變慢,所以 NT 采取了兩個(gè)有力的措施:(1)使用快表:用來存放經(jīng)常使用的頁表表目(NT 稱快表為變換查找緩沖區(qū))。(2)使用高速緩沖存儲(chǔ)器(Cache):在 CPU 和主存之間設(shè)置 32 KB 或 64 KB 的高速緩沖存儲(chǔ)器,大部分的指令和數(shù)據(jù)取自高速緩存(命中率98%)。12.7.3 頁面調(diào)度策略和工作集 頁面調(diào)度策略包括:取頁策略、置頁策略和淘汰(置換)策略 取頁策略:“提前取頁”和“請求取頁”相結(jié)合 置頁策略:將虛頁放在任一未分配的頁架 淘汰(置換)策略:(1)采用局部置換策略,為每個(gè)進(jìn)程分配一個(gè)固定數(shù)量的頁面(可動(dòng)態(tài)調(diào)整)。
28、(2)采用 FIFO 置換算法。 工作集是指為每個(gè)進(jìn)程所分配的固定數(shù)量的頁面。當(dāng)一個(gè)進(jìn)程創(chuàng)建時(shí),NT 為其指定一個(gè)最小工作集,它是保證進(jìn)程運(yùn)行時(shí)在主存中的頁面的數(shù)量。然后根據(jù)主存的負(fù)載動(dòng)態(tài)地調(diào)整工作集的大小。第13章 UNIX 操作系統(tǒng)13.1 UNIX 操作系統(tǒng)概述UNIX 是一個(gè)通用的、多用戶交互型操作系統(tǒng)。1965 年貝爾實(shí)驗(yàn)室、通用電氣公司和麻省理工學(xué)院合作開發(fā)一個(gè)多用戶的操作系統(tǒng),名為 MULTICS。它追求大而全,功能龐雜,不太成功。1969 年貝爾實(shí)驗(yàn)室在它的基礎(chǔ)上開發(fā) UNIX 操作系統(tǒng),它追求的是小而精,功能合理精悍,獲得成功。其開發(fā)者因此而獲得 1983 年度的 ACM 圖
29、靈獎(jiǎng)(國際計(jì)算機(jī)界的最高獎(jiǎng)賞)。MULTI - 多個(gè) CSUNI - 單獨(dú)、一個(gè) X同音 ACM 圖靈獎(jiǎng)評委會(huì)對 UNIX 的評價(jià)是:UNIX 系統(tǒng)的成功在于它對一些關(guān)鍵思想所作的恰如其分的選擇和精悍的實(shí)現(xiàn)。UNIX 系統(tǒng)關(guān)于程序設(shè)計(jì)的新的思想方法成了整整一代軟件設(shè)計(jì)師的楷模。UNIX 的天才在于它為程序員提供了一種可以利用別人的工作成果的機(jī)構(gòu)。 目前流行的 UNIX 操作系統(tǒng)是:(1)用于小型機(jī)和工作站的有:SUN / Solaris、HP / HP-UX、SGI / IRIX、IBM / AIX、DEC / OSF/1(2)用于微機(jī)的有:XENIX、SCO UNIX、UNIX/386、LI
30、NUX UNIX 的特點(diǎn):(1)UNIX 分為兩層結(jié)構(gòu):核心層和用戶層。核心只提供最基本的功能,包括進(jìn)程管理、存儲(chǔ)管理、設(shè)備管理和文件管理。系統(tǒng)提供的大量服務(wù),甚至終端命令的解釋程序也放在用戶層實(shí)現(xiàn)。用戶層的系統(tǒng)軟件和普通用戶的程序一樣看待,保存在文件系統(tǒng)中。這樣的系統(tǒng)不僅容易被用戶掌握,而且很容易擴(kuò)充。(2)采用有完整保護(hù)功能的樹形結(jié)構(gòu)文件系統(tǒng)。用戶可以在自己的可裝卸的文件存儲(chǔ)設(shè)備中建立一個(gè)子文件系統(tǒng),并將它連接到原有文件系統(tǒng)的一個(gè)空目錄上。不需要時(shí)可以將它卸下。比如: mount (special, name, rwflag) ; unmount (special)路徑名空目錄名 讀寫權(quán)限
31、(3)設(shè)備與文件統(tǒng)一看待。用戶可以使用普通文件的操作手段,對設(shè)備進(jìn)行 I/O 操作。比如: cp file1.c /dev/lp(4)用戶可以動(dòng)態(tài)地建立和消滅子進(jìn)程,進(jìn)程間有簡單實(shí)用的通信機(jī)制。如要傳輸大量的數(shù)據(jù),可以使用管道文件 pipe 來實(shí)現(xiàn)。如果一個(gè)命令需要很長的執(zhí)行時(shí)間又不太緊迫,可以將它放在后臺處理。(5)UNIX 有兩種用戶界面:程序級界面(系統(tǒng)調(diào)用)和用戶命令級界面(用 Shell 來實(shí)現(xiàn),它既是一種命令解釋程序,又是一種程序設(shè)計(jì)語言。)(6)良好的可移植性。90% 的實(shí)用程序和核心程序是用 C 語言來編寫的。13.2 UNIX 的系統(tǒng)結(jié)構(gòu)硬件硬件核心核心Shell進(jìn)程管理存儲(chǔ)
32、管理設(shè)備管理文件管理系功能調(diào)用統(tǒng)文本處理各種實(shí)用程序通信與網(wǎng) 絡(luò)程序員工作臺文件和數(shù)據(jù)庫各種語言編譯用戶態(tài)用戶態(tài) UNIX 的結(jié)構(gòu)大致分三層:(1)核心:以全局變量為中心的無序模塊結(jié)構(gòu)。(2)用戶態(tài)程序:除核心中的系統(tǒng)軟件外,還包括許多的系統(tǒng)軟件和應(yīng)用軟件。(3)Shell:用戶與 UNIX 核心的接口。 系統(tǒng)啟動(dòng)后,引導(dǎo)程序把系統(tǒng)的核心裝入主存空間,然后經(jīng)過內(nèi)部的初啟程序?yàn)橄到y(tǒng)建立進(jìn)程 0 和進(jìn)程 1。進(jìn)程 0 是系統(tǒng)中唯一的核心態(tài)進(jìn)程,它的功能是執(zhí)行把盤上準(zhǔn)備運(yùn)行的所有進(jìn)程換入主存。進(jìn)程 1 則負(fù)責(zé)為每個(gè)終端建立一個(gè)進(jìn)程,執(zhí)行 shell 解釋程序。用戶進(jìn)程執(zhí)行 trap 命令進(jìn)行系統(tǒng)調(diào)用。UNIX 核心核心態(tài)01a1a2a3an b1b2b3bm c1c2c3ck用戶態(tài)所有進(jìn)程的祖先所有終端控制進(jìn)程的父進(jìn)程終端控制進(jìn)程 (shell進(jìn)程)每條命令對應(yīng)的子進(jìn)程用戶為實(shí)現(xiàn)并發(fā)程序設(shè)計(jì)而建立的子進(jìn)程13.3 進(jìn)程管理 在 UNIX 系統(tǒng)中,每個(gè)用戶在自己的“虛擬計(jì)算機(jī)”上運(yùn)行。虛擬計(jì)算機(jī)的當(dāng)前狀態(tài)稱為一個(gè)“映象”(image),它包含:(1)存儲(chǔ)映象(虛擬存儲(chǔ)空間);(2)通用存儲(chǔ)器的值;(3)打開的文件的狀態(tài);(4)當(dāng)前記錄;(5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZGTX 27-2025 原生態(tài)雪域滑雪能力要求規(guī)范
- T-ZSM 0059-2024“領(lǐng)跑者”評價(jià)技術(shù)要求 數(shù)控圓鋸床
- 二零二五年度房屋租賃合同租賃雙方租賃期間租賃物租賃權(quán)法律適用協(xié)議
- 2025年度汽車行業(yè)代理招聘人才合作協(xié)議
- 2025年度餐廳員工勞動(dòng)合同試用期規(guī)定
- 鋼結(jié)構(gòu)合同補(bǔ)充協(xié)議(2025年度)安裝工程
- 二零二五年度危險(xiǎn)品車輛運(yùn)輸司機(jī)安全責(zé)任協(xié)議
- 2025年度食品飲料經(jīng)銷商授權(quán)及市場開發(fā)協(xié)議
- 二零二五年度借車車輛損失免責(zé)合同
- 二零二五年度雙方個(gè)人教育培訓(xùn)合作協(xié)議
- 2024-2025年中國鋰電池隔膜行業(yè)未來發(fā)展趨勢分析及投資規(guī)劃建議研究報(bào)告
- 2024年南昌健康職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2025浙江中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 月子會(huì)所護(hù)理人員禮儀
- 校園安全隱患排查培訓(xùn)
- 《化妝品包裝材料相容性試驗(yàn)評估指南》
- 無人機(jī)行業(yè)調(diào)查研究報(bào)告
- 2022版藝術(shù)新課標(biāo)解讀心得(課件)小學(xué)美術(shù)
- 四川政采評審專家入庫考試基礎(chǔ)題復(fù)習(xí)試題
- 鋰離子電池失效分析及后果PFMEA-電子表格版
- 2024解析:第十九章生活用電-基礎(chǔ)練(解析版)
評論
0/150
提交評論