版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)操作系統(tǒng)教程(第三版)第1章 計(jì)算機(jī)操作系統(tǒng)概述1.1 存儲(chǔ)程序式計(jì)算機(jī)模型1.2 操作系統(tǒng)的發(fā)展歷史1.3 操作系統(tǒng)的基本概念1.4 操作系統(tǒng)的硬件介紹1.5 操作系統(tǒng)的邏輯模型1.6 操作系統(tǒng)簡(jiǎn)介 開 始本章學(xué)習(xí)目標(biāo)操作系統(tǒng)的作用操作系統(tǒng)的發(fā)展操作系統(tǒng)的特征與功能多道程序設(shè)計(jì)的概念操作系統(tǒng)的模型返回本章首頁(yè)1.1 存儲(chǔ)程序式計(jì)算機(jī)模型1.1.1 作為擴(kuò)展機(jī)器的操作系統(tǒng)1.1.2 作為資源管理的操作系統(tǒng) 返回本章首頁(yè)儲(chǔ)程序式計(jì)算機(jī)模型儲(chǔ)程序式計(jì)算機(jī)模型的基本方案是,如要使計(jì)算機(jī)能夠自動(dòng)地計(jì)算,必須有一個(gè)存儲(chǔ)器用來(lái)存儲(chǔ)程序和數(shù)據(jù);同時(shí)要有一個(gè)運(yùn)算器,用以執(zhí)行指定的操作;有一個(gè)控制器,以便
2、實(shí)現(xiàn)自動(dòng)操作;另外,輔以輸入/輸出部件,以便輸入原始數(shù)據(jù)和輸出計(jì)算結(jié)果。于是形成了現(xiàn)代計(jì)算機(jī)的基本組成形式。如圖1.1所示。圖1.1 存儲(chǔ)程序計(jì)算機(jī)的組成 返回本節(jié)1.1.1 作為擴(kuò)展機(jī)器的操作系統(tǒng)一臺(tái)完全無(wú)軟件的計(jì)算機(jī)系統(tǒng)稱為裸機(jī),即便其性能再?gòu)?qiáng),相對(duì)于用戶來(lái)講,如果要面對(duì)計(jì)算機(jī)的指令集、存儲(chǔ)組織、I/O總線結(jié)構(gòu)的編程則是十分困難的。對(duì)于一般程序員也并不想涉足硬件編程的種種具體細(xì)節(jié),而希望針對(duì)數(shù)據(jù)結(jié)構(gòu)抽象地使用硬件。如果我們?cè)诼銠C(jī)上覆蓋一層I/O設(shè)備管理軟件,用戶便可以利用這層I/O設(shè)備管理軟件提供給用戶的接口來(lái)進(jìn)行數(shù)據(jù)的輸入和輸出,那么用戶此時(shí)看到的計(jì)算機(jī)是一臺(tái)功能強(qiáng)大、使用方便的計(jì)算機(jī),
3、但實(shí)際上,計(jì)算機(jī)的硬件絲毫沒有變化,這樣的計(jì)算機(jī)稱為軟件擴(kuò)充的機(jī)器,或稱軟件虛擬機(jī)。返回本節(jié)1.1.2 作為資源管理的操作系統(tǒng) 從作為機(jī)器功能擴(kuò)充的觀點(diǎn)看,操作系統(tǒng)是為用戶提供基本的方便的接口,這是一種自頂向下的觀點(diǎn)或是自內(nèi)向外的觀點(diǎn)。但是從用戶向機(jī)器的觀點(diǎn)或自底向上的觀點(diǎn)來(lái)看,操作系統(tǒng)則用來(lái)管理一個(gè)復(fù)雜計(jì)算機(jī)系統(tǒng)的各個(gè)部分?,F(xiàn)代計(jì)算機(jī)包含處理器、存儲(chǔ)器、時(shí)鐘、磁盤、終端、網(wǎng)絡(luò)接口、打印機(jī)以及許多其他設(shè)備。從這個(gè)角度來(lái)看,操作系統(tǒng)的任務(wù)是在相互競(jìng)爭(zhēng)的程序之間有序地控制對(duì)處理器、存儲(chǔ)器以及其他I/O接口設(shè)備的分配。返回本節(jié)1.2 操作系統(tǒng)的發(fā)展歷史1.2.1 無(wú)操作系統(tǒng)的計(jì)算機(jī)1.2.2 單道批
4、處理系統(tǒng)與多道批處理系統(tǒng)及執(zhí)行系統(tǒng)1.2.3 分時(shí)系統(tǒng)1.2.4 實(shí)時(shí)系統(tǒng)1.2.5 微機(jī)操作系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系統(tǒng) 返回本章首頁(yè)1.2.1 無(wú)操作系統(tǒng)的計(jì)算機(jī)從第一代計(jì)算機(jī)誕生到20世紀(jì)50年代中期還未出現(xiàn)操作系統(tǒng),這時(shí)的計(jì)算機(jī)采用人工操作方式。其過(guò)程是: 圖1.2 手工操作計(jì)算機(jī)返回本節(jié)1.2.2 單道批處理系統(tǒng)與多道批處理系統(tǒng)及執(zhí)行系統(tǒng)所謂批處理系統(tǒng)是指加載在計(jì)算機(jī)上的一個(gè)系統(tǒng)軟件,在它的控制下,計(jì)算機(jī)能夠自動(dòng)地成批地處理一個(gè)或多個(gè)用戶的作業(yè)。首先出現(xiàn)的是聯(lián)機(jī)批處理系統(tǒng)。如下圖1.3所示。下一頁(yè)脫離主機(jī)控制的輸入/輸出批處理系統(tǒng) 在外設(shè)處理數(shù)據(jù)時(shí),主機(jī)處理“忙等”狀態(tài),這樣高
5、速的主機(jī)與慢速的外設(shè)矛盾就顯現(xiàn)出來(lái)。為了克服與緩解主機(jī)與外設(shè)的矛盾。我們引入脫機(jī)批處理系統(tǒng),即脫離主機(jī)控制的輸入/輸出批處理系統(tǒng)。如圖1.4所示。下一頁(yè)圖1.4 脫機(jī)批處理系統(tǒng)下一頁(yè)在單道批處理系統(tǒng)中,內(nèi)存中僅有一道作業(yè),中斷和通道技術(shù)出現(xiàn)以后,雖然可以實(shí)現(xiàn)輸入/輸出設(shè)備與中央處理機(jī)并行操作,但由于屬于同一道作業(yè)的可并發(fā)執(zhí)行的進(jìn)程不多,大多數(shù)進(jìn)程是有同步關(guān)系的,這使系統(tǒng)中仍有較多的空閑資源,致使系統(tǒng)的性能較差。為了進(jìn)一步提高資源的利用率和系統(tǒng)對(duì)作業(yè)的吞吐量,在60年代中期,引入了多道程序設(shè)計(jì)技術(shù),由此而形成了多道批處理系統(tǒng)。單道程序與多道程序的執(zhí)行過(guò)程如圖1.5和圖1.6所示。 下一頁(yè)下一頁(yè)在
6、操作系統(tǒng)中引入多道程序設(shè)計(jì)技術(shù)以后,會(huì)使系統(tǒng)具有以下特征。(1)多道性 (2)無(wú)序性 (3)宏觀上并行、微觀上串行 (4)調(diào)度性 返回本節(jié)1.2.3 分時(shí)系統(tǒng)分時(shí)技術(shù)是把處理機(jī)的時(shí)間分成很短的時(shí)間片,這些時(shí)間片輪流地分配給各個(gè)聯(lián)機(jī)的各作業(yè)使用。如果某作業(yè)在分配給它的時(shí)間片用完時(shí)仍未完成,則該作業(yè)就暫時(shí)中斷,等待下一輪運(yùn)行,并把處理機(jī)的控制權(quán)讓給另一個(gè)作業(yè)使用。這樣在一個(gè)相對(duì)較短的時(shí)間間隔內(nèi),每個(gè)用戶作業(yè)都能得到快速響應(yīng),以實(shí)現(xiàn)人機(jī)交互。分時(shí)系統(tǒng)與多道批處理系統(tǒng)相比,具有完全不同的特征,由上所述可以歸納成以下幾點(diǎn):(1)多路性 (2)獨(dú)立性 (3)及時(shí)性 (4)交互性 返回本節(jié)1.2.4 實(shí)時(shí)系
7、統(tǒng)1實(shí)時(shí)操作系統(tǒng)的分類2實(shí)時(shí)操作系統(tǒng)的主要目標(biāo)1實(shí)時(shí)操作系統(tǒng)的分類l實(shí)時(shí)控制:當(dāng)計(jì)算機(jī)應(yīng)用于生產(chǎn)過(guò)程的控制形成以計(jì)算機(jī)為中心的控制系統(tǒng)時(shí),系統(tǒng)要求能實(shí)時(shí)采集現(xiàn)場(chǎng)數(shù)據(jù),并對(duì)所采集的數(shù)據(jù)進(jìn)行及時(shí)處理,從而自動(dòng)地控制相應(yīng)的執(zhí)行機(jī)構(gòu),使某些參數(shù)(如濕度、壓力、液位)能按預(yù)定的規(guī)律變化,以保證產(chǎn)品的質(zhì)量和提高產(chǎn)量。 l實(shí)時(shí)信息處理:通常,我們把要求對(duì)信息進(jìn)行實(shí)時(shí)處理的系統(tǒng)稱為實(shí)時(shí)信息處理系統(tǒng)。 2實(shí)時(shí)操作系統(tǒng)的主要目標(biāo)(1)實(shí)時(shí)時(shí)鐘管理。 (2)連續(xù)人機(jī)對(duì)話。(3)過(guò)載防護(hù)。 (4)高可靠性。 返回本節(jié)1.2.5 微機(jī)操作系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系統(tǒng) 微機(jī)操作系統(tǒng)到20世紀(jì)80年代,隨著超大規(guī)模集
8、成電路的發(fā)展產(chǎn)生了微型計(jì)算機(jī),配置在微機(jī)上的操作系統(tǒng)稱為微機(jī)操作系統(tǒng)。最早出現(xiàn)的微機(jī)操作系統(tǒng)是8位微機(jī)上的CP/M,它是一個(gè)單用戶單任務(wù)操作系統(tǒng),即只允許一個(gè)用戶上機(jī),且只允許用戶程序作為一個(gè)任務(wù)運(yùn)行。 計(jì)算機(jī)網(wǎng)絡(luò) 計(jì)算機(jī)技術(shù)和通訊技術(shù)的結(jié)合使得微機(jī)用戶資源共享及相互通信的愿望成為可能,即在一臺(tái)計(jì)算機(jī)上可以使用其他機(jī)器上的資源或進(jìn)行通信。這樣計(jì)算機(jī)網(wǎng)絡(luò)的概念得以產(chǎn)生。一些獨(dú)立自治的計(jì)算機(jī)利用通信線路相互連接形成的計(jì)算機(jī)的集合,稱為計(jì)算機(jī)網(wǎng)絡(luò)。分布式操作系統(tǒng) 大量的實(shí)際應(yīng)用要求一個(gè)一體化的系統(tǒng),用戶希望以統(tǒng)一的界面,標(biāo)準(zhǔn)的接口去使用系統(tǒng)的各種資源,實(shí)現(xiàn)所需的各種操作。這就導(dǎo)致了分布式系統(tǒng)的出現(xiàn)。
9、一個(gè)分布式系統(tǒng)是若干計(jì)算機(jī)的集合,它們都有自己的局部存儲(chǔ)器和外部設(shè)備,但分布式系統(tǒng)是一個(gè)一體化的系統(tǒng),在系統(tǒng)中有一個(gè)全局操作系統(tǒng),即分布式操作系統(tǒng),它負(fù)責(zé)整個(gè)系統(tǒng)的資源分配和調(diào)度、任務(wù)劃分、信息傳輸、控制協(xié)調(diào)等工作,為用戶提供一個(gè)統(tǒng)一的界面,標(biāo)準(zhǔn)的接口,用戶通過(guò)這一界面實(shí)現(xiàn)所需的操作和使用系統(tǒng)的資源,但操作和計(jì)算是在哪一臺(tái)計(jì)算機(jī)上執(zhí)行或使用哪個(gè)計(jì)算機(jī)的資源則由操作系統(tǒng)自動(dòng)完成,用戶不用知道,即分布或操作系統(tǒng)是透明的。返回本節(jié)1.3 操作系統(tǒng)的基本概念 1.3.1 操作系統(tǒng)的定義1.3.2 操作系統(tǒng)的基本功能1.3.3 操作系統(tǒng)的特征 返回本章首頁(yè)1.3.1 操作系統(tǒng)的定義操作系統(tǒng)是用戶和系統(tǒng)的
10、界面,系統(tǒng)內(nèi)部雖然十分復(fù)雜,但這些復(fù)雜性由于有操作系統(tǒng)的存在而不顯現(xiàn)在用戶面前。計(jì)算機(jī)操作系統(tǒng)向用戶提供系統(tǒng)調(diào)用,用戶通過(guò)操作系統(tǒng)提供的命令,簡(jiǎn)單方便地把自己的意圖告訴系統(tǒng),讓操作系統(tǒng)去完成工作。由于操作系統(tǒng)的卓越工作,才能保證系統(tǒng)資源的充分利用,又使用戶能方便使用計(jì)算機(jī)。 返回本節(jié)1.3.2 操作系統(tǒng)的基本功能1存儲(chǔ)器管理的功能2處理機(jī)管理的功能3設(shè)備管理的功能4文件管理的功能下一頁(yè)1存儲(chǔ)器管理的功能l內(nèi)存分配l內(nèi)存保護(hù)l地址映射l內(nèi)存擴(kuò)充下一頁(yè)2處理機(jī)管理的功能l進(jìn)程控制l進(jìn)程同步l進(jìn)程通信l調(diào)度下一頁(yè)3設(shè)備管理的功能 緩沖管理 設(shè)備分配 設(shè)備處理 設(shè)備獨(dú)立性和虛擬設(shè)備下一頁(yè)4文件管理的功
11、能 文件存儲(chǔ)空間的管理 目錄管理 文件的操作 返回本節(jié)1.3.3 操作系統(tǒng)的特征 1并發(fā)特征(Concurrence)2共享特征(Sharing)3虛擬特征(Virtual)4不確定性返回本章首頁(yè)1.4操作系統(tǒng)的硬件介紹1.4.1中央處理器(CPU)1.4.2存儲(chǔ)系統(tǒng)1.4.3 中斷機(jī)制1.4.4 I/O設(shè)備1.4.5 時(shí)鐘 返回本章首頁(yè)1.4.1中央處理器(CPU)計(jì)算機(jī)的“大腦”是CPU,它從內(nèi)存中取出指令并執(zhí)行。在每個(gè)CPU的基本周期中,首先從內(nèi)存中取出指令,解碼以確定其類型和操作數(shù),然后執(zhí)行。循環(huán)以上過(guò)程,程序得以執(zhí)行完畢。每種CPU都有一套獨(dú)特的可執(zhí)行的指令集,指令集在各類CPU中不
12、能通用。計(jì)算機(jī)程序是指令集中的各種指令組合而成,程序一般放在內(nèi)存中。CPU訪問(wèn)內(nèi)存得到指令和數(shù)據(jù),但由于訪問(wèn)內(nèi)存的時(shí)間要比執(zhí)行指令花費(fèi)的時(shí)間長(zhǎng)的多,因此,所有的CPU內(nèi)都有一些用來(lái)保存關(guān)鍵變量和臨時(shí)結(jié)果的寄存器。 1、程序計(jì)數(shù)器:它保存了將要執(zhí)行的下一條指令的內(nèi)存地址,在指令被取出之后,程序計(jì)數(shù)器就被更新為后續(xù)的指令地址。2、指令寄存器:它保存正在被執(zhí)行的指令。指令從內(nèi)存中取出后通過(guò)總線被送到指令寄存器中保存,然后送到指令譯碼器中譯碼并執(zhí)行。3、堆棧指針:它指向內(nèi)存中當(dāng)前棧的頂端。當(dāng)前棧包含已經(jīng)調(diào)用但是還沒有退出的每個(gè)過(guò)程的一個(gè)框架。在一個(gè)過(guò)程的堆??蚣苤斜4媪擞嘘P(guān)的輸入?yún)?shù),局部變量以及那些
13、沒有保存在寄存器中的臨時(shí)變量。4、程序狀態(tài)字(Program Status Word,PSW)寄存器:它記錄了處理器的運(yùn)行模式信息,如條件碼位(由比較指令設(shè)置)、CPU優(yōu)先級(jí)、模式(用戶狀態(tài)或核心態(tài))以及其他各種控制位。用戶程序通常讀入整個(gè)PSW,但只能對(duì)其中少量字段進(jìn)行修改。在系統(tǒng)調(diào)用和I/O中,PSW的作用很重要。 除了用在嵌入式系統(tǒng)中的非常簡(jiǎn)單的CPU外,多數(shù)CPU都有兩種模式,既核心態(tài)(也叫管態(tài)、系統(tǒng)態(tài))和用戶狀態(tài)(也叫目態(tài))。 1、用戶狀態(tài):具有較低特權(quán)的執(zhí)行狀態(tài),在這種狀態(tài)下,處理機(jī)只能執(zhí)行規(guī)定的指令,訪問(wèn)指定的寄存器和存儲(chǔ)器,用戶程序通常只能在這一級(jí)別執(zhí)行。2、核心態(tài):是指操作系
14、統(tǒng)內(nèi)核的運(yùn)行狀態(tài)。在這種狀態(tài)下,處理機(jī)具有較高的特權(quán),能執(zhí)行一切指令,可以訪問(wèn)所有的存儲(chǔ)器和寄存器。 1.4.2 存儲(chǔ)系統(tǒng)1、存儲(chǔ)系統(tǒng)的層次結(jié)構(gòu) 最高層是CPU中的寄存器,由于采用和CPU相同的材料制造,所以速度和CPU一樣快。但寄存器一般容量比較小,在1KB以下。 第二層是高速緩存,它主要被硬件控制使用。當(dāng)一個(gè)程序要讀一個(gè)存儲(chǔ)字時(shí),通過(guò)硬件系統(tǒng)首先檢查是否在高速緩存中。如果在,稱為高速緩存命中,直接讀取高速緩存中的內(nèi)容,不用訪問(wèn)內(nèi)存。未命中時(shí)就必須訪問(wèn)內(nèi)存讀取存儲(chǔ)字,這要付出大量的時(shí)間代價(jià)。 第三層是內(nèi)存,這是存儲(chǔ)系統(tǒng)的核心。任何程序和數(shù)據(jù)必須要裝入內(nèi)存后,cpu才能對(duì)它們進(jìn)行操作,因此操作
15、系統(tǒng)本身也要存放在內(nèi)存中運(yùn)行。 第四層為磁盤(硬盤)。磁盤同內(nèi)存相比,在容量上大很多,在每一位的成本上要低很多,但是在存取速度上要慢很多。磁盤低速的原因是它是一個(gè)機(jī)械裝置,而內(nèi)存是半導(dǎo)體結(jié)構(gòu)的存儲(chǔ)器。 最后一層是磁帶,它經(jīng)常用于磁盤的備份,并且可以保存非常大量的數(shù)據(jù)。磁帶的特點(diǎn)是大容量、低成本、可移動(dòng)、慢速存取。 2、存儲(chǔ)保護(hù)要將兩個(gè)或多個(gè)程序放在內(nèi)存中,必須解決下面兩個(gè)問(wèn)題:1)程序彼此之間如何保護(hù),以及內(nèi)核如何保護(hù)所有其他的程序。2)如何處理重定位。最簡(jiǎn)單的解決方案是給計(jì)算機(jī)配備了兩個(gè)特殊的寄存器,它們是基址寄存器(base register)和界限寄存器(limit register)。
16、 1.4.3 中斷機(jī)制 1、中斷概念 中斷(interrupt)是指計(jì)算機(jī)程序執(zhí)行過(guò)程中,當(dāng)發(fā)生某個(gè)事件時(shí),必須中止 CPU 上現(xiàn)行程序的運(yùn)行,調(diào)用處理該事件的服務(wù)程序執(zhí)行的過(guò)程。 現(xiàn)代計(jì)算機(jī)系統(tǒng)一般都具有處理突發(fā)事件的能力。這種處理突發(fā)事件的能力是由硬件和軟件協(xié)作完成的。 2、中斷類型引起中斷的事件很多,但是不同硬件結(jié)構(gòu)的計(jì)算機(jī)的中斷源各不相同。我們一般從中斷事件的性質(zhì)來(lái)說(shuō),可以分成五種類型: 1)硬件故障中斷 2)外部中斷 3)程序性中斷 4)輸入、輸出設(shè)備中斷 5)訪管中斷 3、中斷嵌套、中斷優(yōu)先級(jí)和中斷屏蔽1)中斷嵌套是指,當(dāng)CPU正在處理一個(gè)中斷事件時(shí),系統(tǒng)又響應(yīng)了一個(gè)新的中斷事件。
17、此時(shí),前一個(gè)中斷處理程序被中止執(zhí)行,由處理后一個(gè)事件的中斷處理程序先插入執(zhí)行。2)中斷優(yōu)先級(jí)是由硬件規(guī)定的,系統(tǒng)根據(jù)引起中斷事件的重要性和緊迫程度,將中斷源劃分為若干個(gè)級(jí)別。當(dāng)有多個(gè)中斷同時(shí)發(fā)生時(shí),系統(tǒng)根據(jù)優(yōu)先級(jí)決定響應(yīng)中斷的次序,優(yōu)先響應(yīng)級(jí)別高的中斷。中斷優(yōu)先級(jí)由高到低的順序?yàn)椋河布收现袛?、訪管中斷、程序性中斷、外部中斷、輸入輸出設(shè)備中斷。3)中斷屏蔽是指,讓程序狀態(tài)字中的中斷屏蔽位控制某些中斷事件的響應(yīng)。因此,當(dāng)有中斷請(qǐng)求產(chǎn)生后,首先查看當(dāng)前程序狀態(tài)字的中斷屏蔽標(biāo)志。如果沒有屏蔽,則可以響應(yīng)該中斷,否則不能響應(yīng)中斷。 1.4.4 I/O設(shè)備 存儲(chǔ)系統(tǒng)不是操作系統(tǒng)需要管理的唯一資源,I/O
18、設(shè)備也與操作系統(tǒng)有密切的相互影響。I/O設(shè)備一般包括兩個(gè)部分:控制器和設(shè)備本身??刂破魇怯梢粔K芯片或一組芯片組成的電路板,它通過(guò)介紹操作系統(tǒng)的命令來(lái)控制設(shè)備的實(shí)際工作。如,從設(shè)備讀數(shù)據(jù),寫入數(shù)據(jù)到設(shè)備等。 I/O設(shè)備的主體是實(shí)際設(shè)備本身。設(shè)備上有個(gè)相對(duì)比較簡(jiǎn)單的接口,這是因?yàn)榻涌诩炔荒茏龊芏嗟墓ぷ?,有已?jīng)被標(biāo)準(zhǔn)化了。由于實(shí)際設(shè)備接口隱藏在控制器中,所以,操作系統(tǒng)看到的是對(duì)控制器的接口,這個(gè)接口可能和設(shè)備接口有很大的區(qū)別。 1.4.5 時(shí)鐘 時(shí)鐘(clock),又稱為定時(shí)器(timer),由于各種各樣的原因決定了它對(duì)于任何多道程序設(shè)計(jì)系統(tǒng)的操作都是至關(guān)重要。1、時(shí)鐘硬件 典型的時(shí)鐘硬件由三個(gè)部件
19、構(gòu)成:晶體振蕩器,計(jì)數(shù)器和存儲(chǔ)寄存器。晶體振蕩器可以非常精確的產(chǎn)生周期性信號(hào),一般頻率為幾百兆赫茲。存儲(chǔ)寄存器是用來(lái)記錄計(jì)數(shù)的初值,當(dāng)開始計(jì)數(shù)時(shí),存儲(chǔ)寄存器把計(jì)數(shù)初值傳給計(jì)數(shù)器。計(jì)數(shù)器可以在晶體振蕩器每產(chǎn)生一個(gè)脈沖(也就是一個(gè)時(shí)鐘周期)時(shí)減1。當(dāng)計(jì)數(shù)器減到0時(shí),產(chǎn)生一個(gè)中斷事件,由CPU來(lái)處理后面的事情。 2、時(shí)鐘軟件 時(shí)鐘硬件只能根據(jù)已知的時(shí)間間隔產(chǎn)生中斷,而涉及時(shí)間的其他所有工作都必須由軟件-時(shí)鐘驅(qū)動(dòng)程序完成。時(shí)鐘驅(qū)動(dòng)程序通??梢酝瓿梢韵碌娜蝿?wù)。 1)維護(hù)日時(shí)鐘2)防止進(jìn)程超時(shí)運(yùn)行 3)記錄CPU的使用情況 4)為系統(tǒng)本身的各個(gè)部分提供監(jiān)視定時(shí)器 1.5 操作系統(tǒng)的邏輯模型 近年來(lái),大型軟
20、件都是采用層次式結(jié)構(gòu),也就是將一個(gè)軟件分為若干個(gè)邏輯層次。如下圖1.7所示,簡(jiǎn)要地示意了操作系統(tǒng)的分層邏輯結(jié)構(gòu)。用戶接口(命令接口、程序接口、圖形用戶接口)對(duì)對(duì)象操縱和管理的軟件集合(處理機(jī)管理軟件、存儲(chǔ)器管理軟件、設(shè)備管理軟件、文件管理軟件)操作系統(tǒng)對(duì)象(處理機(jī)、存儲(chǔ)器、設(shè)備、文件)返回本章首頁(yè)1操作系統(tǒng)的對(duì)象2操作系統(tǒng)對(duì)象操縱和管理的軟件集合3用戶接口(1)命令接口 (2)程序接口 (3)圖形用戶接口 1.6 微機(jī)操作系統(tǒng) 1.6.1 DOS操作系統(tǒng)1.6.2 MS-Windows操作系統(tǒng)1.6.3 UNIX操作系統(tǒng) 返回本章首頁(yè)1.6.1 DOS操作系統(tǒng)1981年IBM公司首次推出了IB
21、M-PC個(gè)人計(jì)算機(jī),在微機(jī)中采用了微軟公司開發(fā)的MS-DOS操作系統(tǒng)。該操作系統(tǒng)在8位計(jì)算機(jī)操作系統(tǒng)CP/M的基礎(chǔ)上進(jìn)行了較大的擴(kuò)充,增加了許多內(nèi)部和外部命令,使該操作系統(tǒng)具有較強(qiáng)的功能及性能優(yōu)良的文件系統(tǒng)。隨著IBM-PC及其兼容機(jī)的普及和暢銷,MS-DOS操作系統(tǒng)也就成了事實(shí)上的16位微機(jī)單用戶單任務(wù)操作系統(tǒng)的標(biāo)準(zhǔn)。返回本節(jié)1.6.2 MS-Windows操作系統(tǒng)1990年微軟公司推出的Windows 3.0以其易學(xué)易用、友好的圖形用戶界面、支持多任務(wù)的優(yōu)點(diǎn),很快占領(lǐng)了市場(chǎng)。1992年推出的Windows 3.1版,提供了386增強(qiáng)模式,提高了運(yùn)行速度,功能也更強(qiáng)大。1993年推出了Win
22、dows NT是一個(gè)全新的32位多任務(wù)操作系統(tǒng),成為Windows家族中功能最強(qiáng)并支持網(wǎng)絡(luò)功能的操作系統(tǒng)。 1995年推出的Windows 95之后在Windows 95的基礎(chǔ)上又推出了Windows 97、98 ,提供了Internet瀏纜器和網(wǎng)絡(luò)功能,使它們成了當(dāng)今個(gè)人計(jì)算機(jī)上最廣泛使用的操作系統(tǒng)。返回本節(jié)1.6.3 UNIX操作系統(tǒng) UNIX操作系統(tǒng)是目前大、中、小型計(jì)算機(jī)上廣泛使用的多用戶多任務(wù)操作系統(tǒng),在32位微機(jī)上也有不少配置多用戶多任務(wù)操作系統(tǒng)。 UNIX操作系統(tǒng)是美國(guó)電報(bào)電話公司的Bell實(shí)驗(yàn)室開發(fā)的,至今已有20多年的歷史,它最初是配置在DEC公司的PDP小型機(jī)上,后來(lái)在微機(jī)
23、亦可使用。 UNIX操作系統(tǒng)是唯一能在微機(jī)工作站、小型機(jī)到大型機(jī)上都能運(yùn)行的操作系統(tǒng),也是當(dāng)今世界最流行的多用戶、多任務(wù)操作系統(tǒng)。返回本節(jié)第2章 作業(yè)管理2.1 作業(yè)基本管理2.2操作系統(tǒng)向作業(yè)提供的程序級(jí)接口系統(tǒng)調(diào)用 2.3單道批處理系統(tǒng)的作業(yè)調(diào)度 2.4多道批處理系統(tǒng)作業(yè)調(diào)度應(yīng)考慮的因素 開 始本章學(xué)習(xí)目標(biāo) 操作命令:包括作業(yè)控制語(yǔ)言和鍵盤命令,這是用戶操作計(jì)算機(jī)的方式系統(tǒng)功能調(diào)用:這是用戶程序?qū)Σ僮飨到y(tǒng)提供的服務(wù)的調(diào)用接口系統(tǒng)功能調(diào)用的執(zhí)行過(guò)程批處理系統(tǒng)作業(yè)調(diào)度問(wèn)題返回本章首頁(yè)2.1作業(yè)的基本概念 返回本章首頁(yè)2.1.1 作業(yè)的形成過(guò)程2.1.2 批處理系統(tǒng)作業(yè)運(yùn)行前的準(zhǔn)備作業(yè)控制語(yǔ)言2
24、.1.3 分時(shí)系統(tǒng)作業(yè)控制方法命令 2.1.1 作業(yè)的形成過(guò)程一、使用計(jì)算機(jī)來(lái)計(jì)算來(lái)運(yùn)行用戶程序有三個(gè)步驟: (1)用某種語(yǔ)言(例如FORTRAN語(yǔ)言)編制一個(gè)程序,它被稱為源程序。(2)將源程序和初始數(shù)據(jù)記錄在某種輸入介質(zhì)上。例如穿成一盤紙帶,或在終端設(shè)備(包括鍵盤、顯示器)上直接編輯源程序。(3)按照一定要求來(lái)控制計(jì)算機(jī)工作,并經(jīng)過(guò)加工最后算出結(jié)果。二、對(duì)作業(yè)的處理的幾個(gè)作業(yè)步 (1)編輯(修改):建立新文件或是對(duì)原有文件進(jìn)行修改。(2)編譯:請(qǐng)求系統(tǒng)把修改好的源程序翻譯成浮動(dòng)目標(biāo)模塊,并將它放在磁盤上,也可以穿孔輸出或二者有之。(3)鏈接:請(qǐng)求系統(tǒng)把主程序模塊和其他所需要的子程序和例行程
25、序鏈接裝配在一起,成為一個(gè)可執(zhí)行的完整的內(nèi)存映像文件。(4)運(yùn)行:將內(nèi)存映像文件調(diào)入內(nèi)存,并啟動(dòng)之,最后給出計(jì)算結(jié)果。 下一頁(yè)三、作業(yè)步之間的關(guān)系表現(xiàn)為 (1)每個(gè)作業(yè)步運(yùn)行的結(jié)果產(chǎn)生下一個(gè)作業(yè)步所需要的文件。如圖2.1所示。(2)一個(gè)作業(yè)步能否正確地執(zhí)行,依賴于前一個(gè)作業(yè)步是否成功地完成。 下一頁(yè)圖2.1 作業(yè)步之間的關(guān)系返回本節(jié)2.1.2 批處理系統(tǒng)作業(yè)運(yùn)行前的準(zhǔn)備作業(yè)控制語(yǔ)言 在脫機(jī)工作方式下系統(tǒng)提供作業(yè)控制語(yǔ)言(JCL,Job Control Language),它既可以寫成操作說(shuō)明書的形式,也可穿孔成為作業(yè)控制卡的形式(前者較多地為批處理系統(tǒng)所采用)。 操作系統(tǒng)根據(jù)作業(yè)申請(qǐng)表來(lái)分配作
26、業(yè)所需的資源并注冊(cè)該作業(yè);通過(guò)作業(yè)說(shuō)明書(或作業(yè)控制卡)對(duì)作業(yè)實(shí)施運(yùn)行控制。一般在批處理系統(tǒng)中都提供JCL語(yǔ)言。2.1.3 分時(shí)系統(tǒng)作業(yè)控制方法命令 在分時(shí)系統(tǒng)(聯(lián)機(jī)工作方式)中,終端與主機(jī)的通信過(guò)程大致分為四步:呼叫、聯(lián)接、通信、退出。 1呼叫 2聯(lián)接3通信4退出(1)呼叫當(dāng)終端用戶想從終端打入命令或輸入信息時(shí),他首先要進(jìn)行呼叫,例如通過(guò)類似電話撥號(hào)的方式進(jìn)行呼叫。當(dāng)呼叫成功后,用戶就可以從終端的鍵盤上打入各種命令輸入到計(jì)算機(jī)系統(tǒng),即開始第二步聯(lián)接。下一頁(yè)(2)聯(lián)接 呼叫成功后,計(jì)算機(jī)即和終端聯(lián)上,于是計(jì)算機(jī)應(yīng)在終端設(shè)備上輸出引導(dǎo)信息,以告訴用戶終端設(shè)備與系統(tǒng)聯(lián)上了。這時(shí),用戶應(yīng)打入一條“錄
27、入命令”,向系統(tǒng)申請(qǐng)錄入一個(gè)作業(yè)。一般錄入命令應(yīng)給出以下參數(shù):用戶名、作業(yè)名、口令、資源需求等。系統(tǒng)接到錄入命令后,將檢查口令、資源需求等。在符合時(shí),就允許錄入。當(dāng)用戶從終端上看到允許錄入的信息后,就知道這個(gè)終端作業(yè)被接受了,從而就進(jìn)入第三步通信。下一頁(yè)(3)通信(1)環(huán)境設(shè)置。 (2)系統(tǒng)管理。 (3)文件管理。 (4)編輯修改。 (5)編譯、連接裝配和運(yùn)行。(6)輸入數(shù)據(jù)。 (7)操作方式轉(zhuǎn)換。 (8)申請(qǐng)資源。 終端作業(yè)被錄入后,就可以通過(guò)終端打入各種控制作業(yè)的命令和從終端輸入作業(yè)的程序和數(shù)據(jù)。屬于通信這一步的鍵盤命令是比較豐富的,一般有以下幾類:下一頁(yè)(4)退出 當(dāng)作業(yè)運(yùn)行結(jié)束時(shí),用戶
28、應(yīng)打入“退出”命令。系統(tǒng)響應(yīng)命令后將收回分配給作業(yè)的全部資源,然后在終端輸出日期和上機(jī)時(shí)間等,即通知用戶系統(tǒng)已結(jié)束了該作業(yè)。退出系統(tǒng)后,用戶若要求系統(tǒng)執(zhí)行新的作業(yè)可再打入“錄入”命令。每個(gè)作業(yè)結(jié)束后一定要打入“退出”命令。返回本節(jié)2.2操作系統(tǒng)向作業(yè)提供的程序級(jí)接口系統(tǒng)調(diào)用 2.2.1 系統(tǒng)功能調(diào)用的分類 2.2.2系統(tǒng)功能調(diào)用的實(shí)現(xiàn)過(guò)程描述 返回本章首頁(yè)系統(tǒng)調(diào)用 :用戶所需要的功能,有些是比較復(fù)雜的,硬件不能直接提供,只能通過(guò)軟件的程序來(lái)實(shí)現(xiàn)。而有些功能可由硬件完成,并設(shè)有相應(yīng)的指令,如啟動(dòng)外設(shè)工作,就有用于輸入/輸出的硬指令。但配置了操作系統(tǒng)后,對(duì)系統(tǒng)資源的分配、控制不能由用戶干預(yù),而必須
29、由操作系統(tǒng)統(tǒng)一管理。所以,對(duì)于這樣一類功能,也需有相應(yīng)的控制程序來(lái)實(shí)現(xiàn)。 自愿進(jìn)管指令 :為了實(shí)現(xiàn)對(duì)這些事先編制好的、具有特定功能的例行子程序的調(diào)用,現(xiàn)代計(jì)算機(jī)系統(tǒng)一般提供自愿進(jìn)管指令,其指令形式為:SVC N其中,SVC表示機(jī)器自愿進(jìn)管指令的操作碼記憶符,N為地址碼。SVC是Supervisor Call(訪問(wèn)管理程序)的縮寫,所以SVC指令又稱訪管指令。當(dāng)處理機(jī)執(zhí)行到這一條指令時(shí)就發(fā)生中斷,該中斷稱為訪管中斷,它表示正在運(yùn)行的程序?qū)Σ僮飨到y(tǒng)的某種需求。借助中斷可使機(jī)器狀態(tài)由目態(tài)轉(zhuǎn)為管態(tài)。 返回本節(jié)2.2.1 系統(tǒng)調(diào)用功能分類1設(shè)備管理:這類系統(tǒng)調(diào)用被用來(lái)請(qǐng)求和釋放設(shè)備,以及啟動(dòng)設(shè)備操作等。
30、2文件管理:這類系統(tǒng)調(diào)用包括創(chuàng)建、刪除文件,讀、寫文件操作以及移動(dòng)文件指針等。3進(jìn)程控制:當(dāng)多個(gè)用戶程序在系統(tǒng)內(nèi)執(zhí)行時(shí)引出了一個(gè)新的概念,稱為進(jìn)程。4進(jìn)程通信:進(jìn)程間傳遞消息或信號(hào)的系統(tǒng)調(diào)用。5存儲(chǔ)管理:內(nèi)存塊的申請(qǐng)、釋放,獲取作業(yè)占用內(nèi)存塊的首址、大小等。2.2.2系統(tǒng)功能調(diào)用的實(shí)現(xiàn)過(guò)程描述 操作系統(tǒng)的基本服務(wù)是通過(guò)系統(tǒng)功能調(diào)用來(lái)實(shí)現(xiàn)的,系統(tǒng)功能調(diào)用提供運(yùn)行程序和操作系統(tǒng)之間的界面。系統(tǒng)調(diào)用的實(shí)現(xiàn)取決于計(jì)算機(jī)的結(jié)構(gòu),它是由特定的硬件指令實(shí)現(xiàn)對(duì)操作系統(tǒng)某一服務(wù)例程的調(diào)用。 圖2.2說(shuō)明了系統(tǒng)功能調(diào)用的執(zhí)行過(guò)程。 圖2.2 系統(tǒng)調(diào)用的執(zhí)行過(guò)程 2.3 單道批處理系統(tǒng)的作業(yè)調(diào)度 2.3.1 作業(yè)調(diào)
31、度性能的衡量指標(biāo)2.3.2 先來(lái)先服務(wù)作業(yè)調(diào)度算法2.3.3 短作業(yè)優(yōu)先調(diào)度算法2.3.4 高響應(yīng)比優(yōu)先作業(yè)調(diào)度算法2.3.1 作業(yè)調(diào)度性能的衡量指標(biāo) 對(duì)于批處理系統(tǒng),作業(yè)調(diào)度的原則體現(xiàn)在一個(gè)指標(biāo),即各作業(yè)的平均周轉(zhuǎn)時(shí)間上,如設(shè)i作業(yè)的周轉(zhuǎn)時(shí)間為Ti=Tci-Tsc;Tci,Tsc分別為作業(yè)的完成時(shí)間和作業(yè)的提交時(shí)間,則平均周轉(zhuǎn)時(shí)間為:J=(Ti)/n;對(duì)這個(gè)公式涉及的n個(gè)作業(yè),相對(duì)于長(zhǎng)作業(yè),對(duì)J值的影響大,而短作業(yè)對(duì)J值的影響小。為了增加短作業(yè)對(duì)J值的影響,引入平均帶權(quán)周轉(zhuǎn)時(shí)間的概念。平均帶權(quán)周轉(zhuǎn)時(shí)間定義為:W=(Ti/tri)/n;tri作業(yè)的運(yùn)行時(shí)間。一般認(rèn)為J、W越小,系統(tǒng)對(duì)作業(yè)的吞吐
32、量越大,系統(tǒng)的性能越高。2.3.2 先來(lái)先服務(wù)作業(yè)調(diào)度算法先來(lái)先服務(wù)作業(yè)調(diào)度算法是一種較簡(jiǎn)單的作業(yè)調(diào)度算法,即每次調(diào)度是從后備作業(yè)隊(duì)列中選擇一個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它調(diào)入內(nèi)存,分配資源、創(chuàng)建相應(yīng)的進(jìn)程,放入進(jìn)程就緒隊(duì)列準(zhǔn)備運(yùn)行。FCFS算法利于長(zhǎng)作業(yè),不利于短作業(yè),而大多數(shù)的作業(yè)是I/O繁忙的短作業(yè)。以FCFS作為主調(diào)度算法是不常用的。下一頁(yè)2.3.3 短作業(yè)優(yōu)先調(diào)度算法 短作業(yè)優(yōu)先調(diào)度算法是指操作系統(tǒng)在進(jìn)行作業(yè)調(diào)度時(shí)以作業(yè)長(zhǎng)短作為優(yōu)先級(jí)進(jìn)行調(diào)度。該調(diào)度算法可以照顧到實(shí)際上占作業(yè)總數(shù)絕大部分的短作業(yè),使它們能比長(zhǎng)作業(yè)優(yōu)先調(diào)度執(zhí)行。這時(shí)后備作業(yè)隊(duì)列按作業(yè)優(yōu)先級(jí)由高到低順序排列,當(dāng)作業(yè)進(jìn)入后備
33、隊(duì)列時(shí)要按該作業(yè)優(yōu)先級(jí)放置到后備隊(duì)列相應(yīng)的位置。實(shí)踐證明,該調(diào)度算法的性能是最好的,單位時(shí)間的作業(yè)吞吐量也最大,但也存在缺點(diǎn):對(duì)長(zhǎng)作業(yè)極為不利。 。下一頁(yè)2.3.4 高響應(yīng)比優(yōu)先作業(yè)調(diào)度算法 這是一種折衷算法,是為了克服上述兩種算法的不足而提出來(lái)的。它既考慮到作業(yè)進(jìn)入系統(tǒng)的先后次序,又顧及到作業(yè)的運(yùn)行長(zhǎng)度。 響應(yīng)比為: RP=1+作業(yè)等待時(shí)間/作業(yè)執(zhí)行時(shí)間 該調(diào)度算法在調(diào)度作業(yè)時(shí)首先計(jì)算后備作業(yè)的響應(yīng)比RP,然后按RP值從大到小的順序調(diào)度作業(yè)運(yùn)行。從公式可見,作業(yè)的RP與作業(yè)執(zhí)行時(shí)間成反比,作業(yè)的執(zhí)行時(shí)間越短,其RP越高,同時(shí)作業(yè)的RP會(huì)隨著它的等待時(shí)間的增加而增加,只要等待時(shí)間足夠長(zhǎng),該作業(yè)
34、總會(huì)由于響應(yīng)比高而被調(diào)度。 下一頁(yè)2.4 多道批處理系統(tǒng)作業(yè)調(diào)度應(yīng)考慮的因素 在多道程序環(huán)境中,平均周轉(zhuǎn)時(shí)間、帶權(quán)平均周轉(zhuǎn)時(shí)間比單道時(shí)有明顯減少。其主要原因是,當(dāng)一個(gè)作業(yè)需要進(jìn)行I/O操作時(shí),可將CPU分給另一個(gè)作業(yè)運(yùn)行。由于通道和中斷的支持,CPU和I/O之間完全可以并行,使一部分運(yùn)行時(shí)間重疊,這樣總的運(yùn)行時(shí)間就縮短了。但是,總的運(yùn)行時(shí)間的縮短并不總能使平均周轉(zhuǎn)時(shí)間縮短。這與系統(tǒng)多道程序的道數(shù)有關(guān)。 第3章 進(jìn)程管理3.1 進(jìn)程的概述3.2 進(jìn)程的引入和定義3.3 進(jìn)程的狀態(tài)和進(jìn)程控制塊3.4 進(jìn)程控制3.5 線程的基本概念3.6 進(jìn)程調(diào)度3.7 進(jìn)程同步與互斥 3.8 進(jìn)程通信3.9 死鎖
35、問(wèn)題本章學(xué)習(xí)目標(biāo)在多道程序環(huán)境下,程序不能獨(dú)立運(yùn)行。作為資源分配和獨(dú)立運(yùn)行的基本單位是進(jìn)程。操作系統(tǒng)所有的特征都是基于進(jìn)程而體現(xiàn)的。所以,本章的主要問(wèn)題是: 進(jìn)程的概念進(jìn)程的實(shí)體、狀態(tài)及狀態(tài)的演變進(jìn)程的控制與調(diào)度進(jìn)程之間的關(guān)系協(xié)調(diào)進(jìn)程的通信死鎖問(wèn)題及解決返回本章首頁(yè)3.1 進(jìn)程的概述 處理機(jī)管理是操作系統(tǒng)的基本管理功能之一,它所關(guān)心的是處理機(jī)的分配問(wèn)題。也就是說(shuō)把CPU(中央處理機(jī))的使用權(quán)分給某個(gè)程序,通常把這個(gè)正準(zhǔn)備進(jìn)入內(nèi)存的程序稱為作業(yè),當(dāng)這個(gè)作業(yè)進(jìn)入內(nèi)存后我們把它稱為進(jìn)程。處理機(jī)管理分為作業(yè)管理和進(jìn)程管理兩個(gè)階段去實(shí)現(xiàn)處理機(jī)的分配,常常又把直接實(shí)行處理機(jī)時(shí)間分配的進(jìn)程調(diào)度工作作為處理機(jī)
36、管理的主要內(nèi)容。 進(jìn)程通常具有三種狀態(tài):運(yùn)行狀態(tài)(正在使用CPU)、阻塞狀態(tài)(等待輸入/輸出)和就緒狀態(tài)(等待分配CPU)。 返回本章首頁(yè)3.2 進(jìn)程的引入和定義3.2.1 進(jìn)程的引入3.2.2 進(jìn)程的定義返回本章首頁(yè)3.2.1 進(jìn)程的引入1程序的順序執(zhí)行及其特性2資源共享3程序的并發(fā)執(zhí)行及其特性 1程序的順序執(zhí)行及其特性 由于各類軟件的出現(xiàn)及日益復(fù)雜化,使得程序設(shè)計(jì)的概念和方法有了很大的發(fā)展,在單道程序工作環(huán)境中,我們把一個(gè)“程序”理解為“一個(gè)在時(shí)間上按嚴(yán)格次序前后相繼的操作序列”。 一切順序執(zhí)行的程序都具有下列特性: (1)順序性。 (2)資源獨(dú)占。 (3)結(jié)果的無(wú)關(guān)性。 2資源共享 操作
37、系統(tǒng)提供了兩種實(shí)現(xiàn)資源共享的方法。 (1)由操作系統(tǒng)統(tǒng)一管理和分配。 (2)由進(jìn)程自行使用。 3程序的并發(fā)執(zhí)行及其特性 無(wú)論是操作系統(tǒng)自身的程序還是用戶程序,通??偸谴嬖谝恍┫鄬?duì)獨(dú)立、但又能并發(fā)執(zhí)行的程序段。由于這些程序段可以被多個(gè)用戶作業(yè)調(diào)用,因此可在同一時(shí)間間隔內(nèi)發(fā)生。這樣一來(lái),某個(gè)程序段可能對(duì)應(yīng)多個(gè)“計(jì)算”,于是程序與“計(jì)算”已不具有一一對(duì)應(yīng)關(guān)系了。這些“并發(fā)程序”就構(gòu)成了一個(gè)“并發(fā)環(huán)境”。圖3.2 并行計(jì)算的先后次序程序的制約方式有如下兩種 :(1)間接制約方式。這是由于競(jìng)爭(zhēng)相同資源而引起的,得到資源的程序段可以投入運(yùn)行,而得不到資源的程序段就是暫時(shí)等待,直至獲得可用資源時(shí)再繼續(xù)運(yùn)行
38、。(2)直接制約方式。這通常是在那些邏輯上相關(guān)的程序段之間發(fā)生的。一般是由于各種程序段要求共享信息引起的 。返回本節(jié)目錄3.2.2 進(jìn)程的定義 進(jìn)程與程序的區(qū)別和相互關(guān)系 :(1)動(dòng)態(tài)性和靜態(tài)性。 (2)從結(jié)構(gòu)上看每個(gè)進(jìn)程的實(shí)體都是由程序段和相應(yīng)的數(shù)據(jù)段兩部分構(gòu)成的,這一特征與程序的含義相近。(3)一個(gè)進(jìn)程可以涉及到一個(gè)或幾個(gè)程序的執(zhí)行;反之一程序可以對(duì)應(yīng)多個(gè)進(jìn)程,即同一程序段可在不同數(shù)據(jù)集合上運(yùn)行,可構(gòu)成不同的進(jìn)程 。(4)并發(fā)性。 (5)進(jìn)程具有創(chuàng)建其他進(jìn)程的功能。 (6)操作系統(tǒng)中的每一個(gè)程序都是在一個(gè)進(jìn)程現(xiàn)場(chǎng)中運(yùn)行的。 返回本節(jié)目錄3.3 進(jìn)程的狀態(tài)和進(jìn)程控制塊 3.3.1 進(jìn)程的狀態(tài)
39、及狀態(tài)變化圖 3.3.2 進(jìn)程控制塊 返回本章首頁(yè)3.3.1 進(jìn)程的狀態(tài)及狀態(tài)變化圖 (1)運(yùn)行狀態(tài):進(jìn)程正在處理機(jī)上運(yùn)行的狀態(tài),該進(jìn)程已獲得必要的資源,也獲得了處理機(jī),用戶程序正在處理機(jī)上運(yùn)行。(2)阻塞狀態(tài):進(jìn)程等待某種事件完成(例如,等待輸入/輸出操作的完成)而暫時(shí)不能運(yùn)行的狀態(tài),處于該狀態(tài)的進(jìn)程不能參加競(jìng)爭(zhēng)處理機(jī),此時(shí),即使分配給它處理機(jī),它也不能運(yùn)行。(3)就緒狀態(tài):該進(jìn)程運(yùn)行所需的一切條件都得到滿足,但因處理機(jī)資源個(gè)數(shù)少于進(jìn)程個(gè)數(shù),所以該進(jìn)程不能運(yùn)行,而必須等待分配處理機(jī)資源,一旦獲得處理機(jī)就立即投入運(yùn)行。圖3.3 典型的進(jìn)程狀態(tài)演變圖狀態(tài)變化 :(1)就緒狀態(tài)變化到運(yùn)行狀態(tài) 。(
40、2)運(yùn)行狀態(tài)變化到就緒狀態(tài)。 (3)運(yùn)行狀態(tài)變化到阻塞狀態(tài)。 (4)阻塞狀態(tài)變化到就緒狀態(tài)。 返回本節(jié)目錄3.3.2進(jìn)程的結(jié)構(gòu)、進(jìn)程控制塊及組織方式 為了刻畫進(jìn)程的動(dòng)態(tài)變化,通常把進(jìn)程表示為由程序段、私有數(shù)據(jù)塊和進(jìn)程控制塊組成,如圖3.4(a)所示。程序部分描述進(jìn)程本身所要完成的功能,而“私有數(shù)據(jù)塊”是接受程序規(guī)定操作的一組存儲(chǔ)單元的內(nèi)容,是操作的對(duì)象。進(jìn)程控制塊是在進(jìn)程創(chuàng)建時(shí)產(chǎn)生的,當(dāng)進(jìn)程存在于系統(tǒng)時(shí)(運(yùn)行),進(jìn)程控制塊就標(biāo)識(shí)了這個(gè)進(jìn)程。如圖3.4(b)所示。 進(jìn)程控制塊是進(jìn)程存在的標(biāo)志,當(dāng)系統(tǒng)或父進(jìn)程創(chuàng)建一個(gè)進(jìn)程時(shí),實(shí)際上就是為其建立一個(gè)進(jìn)程控制塊。 進(jìn)程控制塊既能標(biāo)識(shí)進(jìn)程的存在,又能刻畫
41、出進(jìn)程的動(dòng)態(tài)特征,它是一個(gè)進(jìn)程僅有的被系統(tǒng)真正感知的部分。對(duì)操作系統(tǒng)而言,所有進(jìn)程控制塊將構(gòu)成并發(fā)執(zhí)行控制和維護(hù)系統(tǒng)工作的依據(jù)。進(jìn)程控制塊的作用:返回本節(jié)目錄進(jìn)程控制塊PCB的組織方式:為了進(jìn)行PCB的有效管理,系統(tǒng)將PCB按照一定的方式組織起來(lái)。PCB常用的組織方式有: 1)線性表方式:不論進(jìn)程的狀態(tài)如何,將所有的PCB連續(xù)地存放在內(nèi)存的系統(tǒng)區(qū)。這種方式適用于系統(tǒng)中進(jìn)程數(shù)目不多的情況。這種方式實(shí)現(xiàn)簡(jiǎn)單,但檢索速度慢。2)索引表方式:該方式是線性表方式的改進(jìn),系統(tǒng)按照進(jìn)程的狀態(tài)分別建立就緒索引表、阻塞索引表等。3)鏈接表方式:系統(tǒng)按照進(jìn)程的狀態(tài)將進(jìn)程的PCB組成隊(duì)列,從而形成就緒隊(duì)列、阻塞隊(duì)列
42、、運(yùn)行隊(duì)列等。 3.4 進(jìn)程控制 3.4.1 原語(yǔ) 3.4.2 進(jìn)程控制原語(yǔ) 返回本章首頁(yè)3.4.1 原語(yǔ) 在操作系統(tǒng)中,某些被進(jìn)程調(diào)用的操作,例如隊(duì)列操作、對(duì)信號(hào)燈的操作、檢查啟動(dòng)外設(shè)操作等,一旦開始執(zhí)行就不能被中斷,否則就會(huì)出現(xiàn)操作錯(cuò)誤,造成系統(tǒng)混亂。原語(yǔ)就是為實(shí)現(xiàn)這些操作而設(shè)置的。圖3.5 進(jìn)程家族示例返回本節(jié)目錄3.4.2 進(jìn)程控制原語(yǔ)創(chuàng)建原語(yǔ)撤消原語(yǔ)阻塞原語(yǔ)喚醒原語(yǔ)掛起原語(yǔ) 激活原語(yǔ)返回本節(jié)目錄3.5 線程的基本概念3.5.1 線程的引入3.5.2 線程與進(jìn)程的關(guān)系3.5.3 線程的類型3.5.4 線程的特點(diǎn) 返回本章首頁(yè)3.5.1 線程的引入(1)創(chuàng)建進(jìn)程。系統(tǒng)在創(chuàng)建進(jìn)程時(shí),必須為
43、之分配其所必需的、除處理機(jī)以外的所有資源。如內(nèi)存空間、I/O設(shè)備以及建立相應(yīng)的PCB結(jié)構(gòu)。(2)撤消進(jìn)程。系統(tǒng)在撤消進(jìn)程時(shí),又必須先對(duì)這些資源進(jìn)行回收操作,然后再撤消PCB結(jié)構(gòu)。(3)進(jìn)程切換。在對(duì)進(jìn)程進(jìn)行切換時(shí),由于要保留當(dāng)前進(jìn)程的CPU環(huán)境和設(shè)置新選中進(jìn)程的CPU環(huán)境,為此需花費(fèi)不少處理機(jī)時(shí)間。返回本節(jié)目錄3.5.2 線程與進(jìn)程的比較1調(diào)度:在傳統(tǒng)的操作系統(tǒng)中,擁有資源的基本單位和獨(dú)立調(diào)度、分派的基本單位都是進(jìn)程。 2并發(fā)性:在引入線程的操作系統(tǒng)中,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且在一個(gè)進(jìn)程中的多個(gè)線程之間亦可并發(fā)執(zhí)行,因而使操作系統(tǒng)具有更好的并發(fā)性,從而能更有效地使用系統(tǒng)資源和提高系統(tǒng)吞吐
44、量。 3擁有資源:不論是傳統(tǒng)的操作系統(tǒng),還是設(shè)有線程的操作系統(tǒng),進(jìn)程都是擁有資源的一個(gè)獨(dú)立單位,它可以擁有自己的資源。 4系統(tǒng)開銷:由于在創(chuàng)建或撤消進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間、I/O設(shè)備等。因此,操作系統(tǒng)所付出的開銷將明顯地大于在創(chuàng)建或撤消線程時(shí)的開銷。 返回本節(jié)目錄3.5.3 線程的類型 對(duì)于線程來(lái)說(shuō),則可分成兩類。一類是內(nèi)核支持線程,它們是依賴于內(nèi)核的。即無(wú)論是在用戶進(jìn)程中的線程,還是系統(tǒng)進(jìn)程中的線程,它們的創(chuàng)建、撤銷和切換都由內(nèi)核實(shí)現(xiàn)。在內(nèi)核中保留了一個(gè)線程控制塊,內(nèi)核根據(jù)該控制塊而感知該線程的存在并對(duì)線程進(jìn)行控制。另一類是用戶級(jí)線程。它僅存在于用戶級(jí)中,對(duì)于這種線程
45、的創(chuàng)建、撤銷和切換,都不利用系統(tǒng)功能調(diào)用來(lái)實(shí)現(xiàn),因而這種線程與內(nèi)核無(wú)關(guān)。相應(yīng)地,內(nèi)核也并不知道有用戶級(jí)的線程存在。 返回本節(jié)目錄比較兩種線程的優(yōu)缺點(diǎn) :1線程的調(diào)度與切換速度:內(nèi)核支持線程的調(diào)度和切換與進(jìn)程的調(diào)度和切換十分相似。 2系統(tǒng)功能調(diào)用:當(dāng)傳統(tǒng)的用戶進(jìn)程調(diào)用一個(gè)系統(tǒng)功能調(diào)用時(shí),要由用戶態(tài)進(jìn)入核心態(tài),用戶進(jìn)程將被阻塞。當(dāng)內(nèi)核完成系統(tǒng)調(diào)用而返回時(shí),才將該進(jìn)程喚醒,繼續(xù)執(zhí)行。 3線程執(zhí)行時(shí)間 :對(duì)于只設(shè)置了用戶級(jí)線程的系統(tǒng),調(diào)度是以進(jìn)程為單位進(jìn)行的。在采用輪轉(zhuǎn)調(diào)度算法時(shí),各個(gè)進(jìn)程輪流執(zhí)行一個(gè)時(shí)間片,這對(duì)諸進(jìn)程而言似乎是公平的。 3.5.4 線程的特點(diǎn)操作系統(tǒng)為每個(gè)被創(chuàng)建的進(jìn)程分配需要的資源,
46、一個(gè)進(jìn)程內(nèi)的各個(gè)線程共享進(jìn)程的資源。多線程技術(shù)有以下明顯的優(yōu)越性:(1)創(chuàng)建線程無(wú)需另外分配資源,因而創(chuàng)建線程的速度比創(chuàng)建進(jìn)程的速度快,且系統(tǒng)開銷小。(2)線程間的互操作在同一地址空間中進(jìn)行,故在交換信息中不需要其他的通信機(jī)制,信息傳遞的速度更快。(3)線程能獨(dú)立執(zhí)行,能充分利用和發(fā)揮處理器和外圍設(shè)備并行工作的能力。 3.6 進(jìn)程調(diào)度 3.6.1 進(jìn)程調(diào)度的職能3.6.2 進(jìn)程調(diào)度所用的主要數(shù)據(jù)結(jié)構(gòu)3.6.3 進(jìn)程調(diào)度的方式3.6.4 進(jìn)程調(diào)度算法3.6.5 綜合的調(diào)度策略調(diào)度用的進(jìn)程狀態(tài)切換圖返回本章首頁(yè)3.6.1 進(jìn)程調(diào)度的職能 (1)記錄系統(tǒng)中所有進(jìn)程的有關(guān)情況。 (2)確定分配處理機(jī)的
47、原則。 (3)分配處理機(jī)給進(jìn)程。 (4)從進(jìn)程收回處理機(jī)。 返回本節(jié)目錄3.6.2 進(jìn)程調(diào)度所用的主要數(shù)據(jù)結(jié)構(gòu)通過(guò)3.3.2節(jié)的學(xué)習(xí)我們知道操作系統(tǒng)對(duì)進(jìn)程的管理具體體現(xiàn)在對(duì)進(jìn)程的PCB的管理。同時(shí)我們也了解到PCB的幾種組織方式:線性表方式、索引表方式和鏈接表方式。一般情況下,PCB的組織方式采用的是鏈接表方式。因此,在進(jìn)程調(diào)度中所用的主要數(shù)據(jù)結(jié)構(gòu)是隊(duì)列(PCB的鏈接方式在這里就不詳細(xì)介紹了,若需要了解請(qǐng)參見3.3.2節(jié))。 3.6.3 進(jìn)程調(diào)度的方式進(jìn)程調(diào)度的方式可分為非剝奪式和剝奪式。 剝奪式調(diào)度是指當(dāng)系統(tǒng)按照某種原則發(fā)現(xiàn)一個(gè)比現(xiàn)運(yùn)行進(jìn)程更合適、更應(yīng)該占用CPU的進(jìn)程時(shí),系統(tǒng)將強(qiáng)迫處于運(yùn)行
48、狀態(tài)的進(jìn)程將CPU的使用權(quán)交給這個(gè)更適合的進(jìn)程。常見的剝奪原則有優(yōu)先權(quán)原則、短進(jìn)程優(yōu)先原則和時(shí)間片原則。采用剝奪式調(diào)度的系統(tǒng)能夠及時(shí)處理緊急事件,它反映出了進(jìn)程的優(yōu)先級(jí)特征,但這勢(shì)必會(huì)帶來(lái)較大的系統(tǒng)開銷,調(diào)度算法也會(huì)相對(duì)復(fù)雜一些。 非剝奪式調(diào)度是指一旦某個(gè)進(jìn)程占用了CPU,除非是由于它自身原因自動(dòng)放棄CPU,否則它將一直運(yùn)行下去直到完成。這種調(diào)度方式算法簡(jiǎn)單,系統(tǒng)開銷也較小,但它不能反映出進(jìn)程的優(yōu)先級(jí)特征。 3.6.4 進(jìn)程調(diào)度算法 1先來(lái)先服務(wù) 2輪轉(zhuǎn)調(diào)度 3分級(jí)輪轉(zhuǎn)法4優(yōu)先數(shù)法 5多級(jí)反饋隊(duì)列調(diào)度算法1先來(lái)先服務(wù) 這種調(diào)度算法按照進(jìn)程進(jìn)入就緒隊(duì)列的先后順序來(lái)調(diào)度進(jìn)程,到達(dá)得越早,其優(yōu)先數(shù)越
49、高。獲得處理機(jī)的進(jìn)程,未遇到其他情況時(shí),一直運(yùn)行下去,系統(tǒng)只需具備一個(gè)先進(jìn)先出的隊(duì)列,在管理優(yōu)先數(shù)的就緒隊(duì)列時(shí),這種方法是一種最常見策略,并且在沒有其他信息時(shí),也是一種最合理的策略。2輪轉(zhuǎn)調(diào)度 先來(lái)先服務(wù)的一個(gè)重要變形,就是輪轉(zhuǎn)規(guī)則。輪轉(zhuǎn)調(diào)度算法是系統(tǒng)把所有就緒進(jìn)程按先后次序排隊(duì),處理機(jī)總是優(yōu)先分配給就緒隊(duì)列中的第一個(gè)就緒進(jìn)程,并分配它一個(gè)固定的時(shí)間片(如100毫秒)。當(dāng)該運(yùn)行進(jìn)程用完規(guī)定的時(shí)間片時(shí),被迫釋放處理機(jī)給下一個(gè)處于就緒隊(duì)列中的第一個(gè)進(jìn)程,分給這個(gè)進(jìn)程相同的時(shí)間片,每個(gè)運(yùn)行完時(shí)間片的進(jìn)程,當(dāng)未遇到任何阻塞時(shí),就回到就緒隊(duì)列的尾部,并等待下次轉(zhuǎn)到它時(shí)再投入運(yùn)行。于是,只要是處于就緒隊(duì)列
50、中的進(jìn)程,按此種算法遲早總可以分得處理機(jī)投入運(yùn)行。3分級(jí)輪轉(zhuǎn)法所謂分級(jí)輪轉(zhuǎn)法就是將先前的一個(gè)就緒隊(duì)列。根據(jù)進(jìn)程的優(yōu)先數(shù)不同劃分兩個(gè)或兩個(gè)以上的就緒隊(duì)列,并賦給每個(gè)隊(duì)列不同的優(yōu)先數(shù)。以兩個(gè)就緒隊(duì)列為例,一個(gè)具有較高優(yōu)先數(shù),另一個(gè)具有較低優(yōu)先數(shù),前者稱為前臺(tái)隊(duì)列,后者稱為后臺(tái)隊(duì)列。 4優(yōu)先數(shù)法 根據(jù)已占有處理 機(jī)的進(jìn)程是否可被剝奪而分為優(yōu)先占有法和優(yōu)先剝奪法兩種 。優(yōu)先占有法的原理是:一旦某個(gè)最高優(yōu)先數(shù)的就緒進(jìn)程分得處理機(jī)之后,只要不是其自身的原因被阻塞(如要求I/O操作)而不能繼續(xù)運(yùn)行時(shí),就一直運(yùn)行下去,直至運(yùn)行結(jié)束。優(yōu)先剝奪法的原理是:當(dāng)一個(gè)正在運(yùn)行的進(jìn)程即使其時(shí)間片未用完,無(wú)論什么時(shí)候,只要
51、就緒隊(duì)列中有一個(gè)比它的優(yōu)先數(shù)高的進(jìn)程,優(yōu)先數(shù)高的進(jìn)程就可以取代以前正在運(yùn)行的進(jìn)程,投入運(yùn)行 。確定進(jìn)程的優(yōu)先數(shù)通常應(yīng)考慮如下幾個(gè)因素: (1)進(jìn)程類型。 (2)運(yùn)行時(shí)間。 (3)作業(yè)的優(yōu)先數(shù)。 (4)動(dòng)態(tài)優(yōu)先數(shù)。 5 多級(jí)反饋隊(duì)列調(diào)度算法 多級(jí)反饋隊(duì)列(Multi-level Feedback Queues,MFQ)調(diào)度算法,不必事先知道各種進(jìn)程所需的執(zhí)行時(shí)間、優(yōu)先級(jí)等,而且可以滿足不同類型進(jìn)程的需要,它采用動(dòng)態(tài)分配優(yōu)先數(shù),調(diào)度策略實(shí)質(zhì)上是搶占式的。 它的調(diào)度策略如圖3.8所示。 圖3.8 多級(jí)反饋隊(duì)列調(diào)度策略 返回本節(jié)目錄3.6.5 綜合的調(diào)度策略調(diào)度用的進(jìn)程狀態(tài)切換圖 圖3.6 調(diào)度用的進(jìn)
52、程狀態(tài)切換圖返回本節(jié)目錄3.7 進(jìn)程同步與互斥 3.7.1 進(jìn)程互斥3.7.2 互斥用的硬件機(jī)制3.7.3 進(jìn)程同步3.7.4 用信號(hào)量實(shí)現(xiàn)進(jìn)程同步3.7.5 經(jīng)典的同步/互斥問(wèn)題3.7.6 結(jié)構(gòu)化的同步/互斥機(jī)制管程返回本章首頁(yè)3.7.1 進(jìn)程互斥 幾個(gè)進(jìn)程若共享同一臨界資源,它們必須以互斥的方式使用這個(gè)臨界資源,即當(dāng)一個(gè)進(jìn)程正在使用臨界資源且尚未使用完畢時(shí),則其他進(jìn)程必須推遲對(duì)該資源的進(jìn)一步操作,在當(dāng)前進(jìn)程的使用完成之前,不能從中插進(jìn)去使用這個(gè)臨界資源,否則將會(huì)造成信息混亂和操作出錯(cuò)。 臨界區(qū)是一個(gè)進(jìn)程訪問(wèn)臨界資源的那段程序代碼。 有了臨界資源和臨界區(qū)的概念,進(jìn)程間的互斥可以描述為禁止兩個(gè)
53、或兩個(gè)以上的進(jìn)程同時(shí)進(jìn)入訪問(wèn)同一臨界資源的臨界區(qū)。 幾個(gè)并行進(jìn)程對(duì)變量和隊(duì)列等臨界資源的互斥共享,可借助進(jìn)程同步通信機(jī)構(gòu)來(lái)完成。信號(hào)燈和P/V操作常用來(lái)實(shí)現(xiàn)進(jìn)程對(duì)臨界資源的互斥共享。 返回本節(jié)目錄3.7.2 互斥用的硬件機(jī)制 在許多系統(tǒng)中,都提供了專門用于解決臨界區(qū)問(wèn)題的硬件指令Test and Set(簡(jiǎn)稱TS)。在不同的系統(tǒng)中,TS指令有所不同,但其基本功能是相同的。 定義TS指令為:function TS(var lock:boolean):boolean; begin TS:=lock; lock:=true; end 為了實(shí)現(xiàn)用硬件指令TS實(shí)現(xiàn)進(jìn)程互斥共享臨界資源,系統(tǒng)為每個(gè)臨界資源
54、設(shè)置一個(gè)變量lock,該變量如上述有兩種狀態(tài),其初始值為false,表示該資源空閑,進(jìn)程可以對(duì)其進(jìn)行訪問(wèn)。用TS指令實(shí)現(xiàn)互斥的循環(huán)進(jìn)程可描述如下:repeat while TS(lock) do skip; critical section; lock:=false; remainder section;until false返回本節(jié)目錄3.7.3 進(jìn)程同步 并發(fā)執(zhí)行的多個(gè)進(jìn)程,看起來(lái)好像是異步前進(jìn)的,彼此之間都可以互不相關(guān)的速度向前推進(jìn),而實(shí)際上每一個(gè)進(jìn)程在其運(yùn)行過(guò)程中并非相互隔絕。一方面它們相互協(xié)作以達(dá)到運(yùn)行用戶作業(yè)所預(yù)期的目的,另一方面它們又相互競(jìng)爭(zhēng)使用系統(tǒng)中有限的資源。所以它們總是存在
55、著某種間接或直接的制約關(guān)系。 同步:我們把進(jìn)程間的這種必須互相合作的協(xié)同工作關(guān)系,稱為進(jìn)程同步。返回本節(jié)目錄3.7.4 用信號(hào)量實(shí)現(xiàn)進(jìn)程同步lock和unlock大部分同步方案均采用某個(gè)物理實(shí)體(如鎖、信號(hào)燈等)實(shí)現(xiàn)通信,進(jìn)程通信原語(yǔ)中關(guān)鎖(lock)和開鎖(unlock)是最簡(jiǎn)單的原語(yǔ)。在這兩個(gè)原語(yǔ)中設(shè)置一個(gè)公共變量x代表某個(gè)臨界資源的狀態(tài)。如:x=0,表示資源可用,x=1,表示資源正在使用。關(guān)鎖原語(yǔ)1ock(x): L:if x1 then goto L else x:=1;開鎖原語(yǔ)unlock(x): x:=0;圖3.10 開鎖和關(guān)鎖程序流程圖P/V操作P/V操作由P操作原語(yǔ)和V操作原語(yǔ)
56、組成,其意義是指,在一個(gè)整型變量S(亦稱信號(hào)燈或信號(hào)量)上定義的兩個(gè)操作。現(xiàn)欲向緩沖區(qū)Bufl輸入/輸出信息。設(shè)s1、s2初值為0,用P/V操作實(shí)現(xiàn)上述同步模型如下: 返回本節(jié)目錄3.7.5 經(jīng)典的同步/互斥問(wèn)題 1生產(chǎn)者與消費(fèi)者問(wèn)題 2讀者與寫者問(wèn)題3. 哲學(xué)家進(jìn)餐問(wèn)題1生產(chǎn)者與消費(fèi)者問(wèn)題 Dijkstra把廣義同步問(wèn)題抽象成一種“生產(chǎn)者與消費(fèi)者問(wèn)題”(Producer-consumer-relationship)的抽象模型。事實(shí)上,計(jì)算機(jī)系統(tǒng)中的許多問(wèn)題都可歸結(jié)為生產(chǎn)者與消費(fèi)者問(wèn)題,生產(chǎn)者與消費(fèi)者可以通過(guò)一個(gè)環(huán)形緩沖池(見圖3.8)聯(lián)系起來(lái),環(huán)形緩沖池由幾個(gè)大小相等的緩沖塊組成,每個(gè)緩沖塊
57、容納一個(gè)產(chǎn)品。每個(gè)生產(chǎn)者可不斷地每次往緩沖池中送一個(gè)生產(chǎn)產(chǎn)品,而每個(gè)消費(fèi)者則可不斷地每次從緩沖池中取出一個(gè)產(chǎn)品。 圖3.8 環(huán)形緩沖池下面給出基于環(huán)形緩沖區(qū)的生產(chǎn)者與消費(fèi)者關(guān)系的形式描述,設(shè):(1)公用信號(hào)量mutex:初值為1,用于實(shí)現(xiàn)臨界區(qū)互斥。(2)生產(chǎn)者私用信號(hào)量empty:初值為n,指示空緩沖塊數(shù)目。(3)消費(fèi)者私用信號(hào)量full:初值為0,指示滿緩沖塊數(shù)目。(4)整型量i和j初值均為0,i指示首空緩沖塊序號(hào),j指示首滿緩沖塊序號(hào)。模塊 設(shè)計(jì)如下: Var mutex,empty,full:semaphore; i,j:integer;buffer:array 0n一1 of ite
58、m; Procedure producer; 生產(chǎn)者進(jìn)程 begin while true do begin produce a product; P(empty); P(mutex); Buffer (i):Product; i:(i+1) mod n; V(mutex); V(full) end end; procedure consumer; 消費(fèi)者進(jìn)程 begin While true do begin P(full); P(mutex) goods:buffer(j); j:(j+1) mod n; V(mutex); V(empty); Consume a product; end
59、 end;begin seminitial ; i:j:0; cobegin producer; consumer; coend end2讀者與寫者問(wèn)題 設(shè)某航空公司有2個(gè)售票處,它們通過(guò)遠(yuǎn)程終端訪問(wèn)設(shè)在公司總部的航空訂票系統(tǒng),并要查詢或修改系統(tǒng)中記錄所有班機(jī)當(dāng)前訂票數(shù)的數(shù)據(jù)庫(kù)B。設(shè)Bi為某班機(jī)的當(dāng)前訂票數(shù),P1和P2分別代表2個(gè)售票處的售票進(jìn)程,R1和R2為進(jìn)程執(zhí)行時(shí)使用的工作寄存器。由于售票進(jìn)程并發(fā)執(zhí)行,且各自訪問(wèn)數(shù)據(jù)庫(kù)B的時(shí)間是隨機(jī)的,故有可能出現(xiàn)下面的訪問(wèn)序列(假定Bi的當(dāng)前值為x):P1:R1:=Bi;R1:=R1+1P2:R2=Bi;R2:=R2+1;P1:Bi:=R1;P2:Bi
60、:=R2可見,Bi的新值是X+1,而不是X+2。這里的P1和P2均為寫者,顯然,對(duì)于寫者Bi為臨界資源,因此寫者應(yīng)該互斥。下面給出讀者進(jìn)程與寫者進(jìn)程的一般結(jié)構(gòu)。var mutex, wrt: semaphore;readcount: integer;begin seminit ;readcount:=0cobeginprocedure reader;beginP(mutex);Readcount:=readcount+1;If readcount=1 then P (wrt);V(mutex);Reading is performing;P(mutex);readcount:=readcoun
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學(xué)院《企業(yè)走進(jìn)校園》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南師范大學(xué)《建筑工程量清單計(jì)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《學(xué)前兒童教育心理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 三年級(jí)科學(xué)上冊(cè)第1單元水5水能溶解多少物質(zhì)教案1教科版
- 九年級(jí)化學(xué)上冊(cè)第五章燃料5.3二氧化碳的性質(zhì)和制法教案新版粵教版1
- 廚師員工培訓(xùn)課件
- 小學(xué)生體育活動(dòng)管理制度
- 藥店培訓(xùn)課件
- 網(wǎng)校培訓(xùn)課件
- 培訓(xùn)課件轉(zhuǎn)化
- 福建省泉州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 酒精性腦病的護(hù)理查房實(shí)用版課件
- 基金會(huì)項(xiàng)目基金捐贈(zèng)立項(xiàng)表
- OCT青光眼及視野報(bào)告
- 人音版小學(xué)音樂四年級(jí)下冊(cè)課程綱要
- 三年級(jí)新教科版科學(xué)《我們來(lái)做-“熱氣球”》說(shuō)課稿
- 國(guó)家電網(wǎng)有限公司十八項(xiàng)電網(wǎng)重大反事故措施(修訂版)
- 凈水廠課程設(shè)計(jì)
- (完整版)八年級(jí)上綜合性學(xué)習(xí)-我們的互聯(lián)網(wǎng)時(shí)代-練習(xí)卷(含答案)
- 地災(zāi)治理全套表格
- 切線長(zhǎng)定理、弦切角定理、切割線定理、相交弦定理93336
評(píng)論
0/150
提交評(píng)論