版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)計算機科學(xué)與信息工程學(xué)院趙建州目錄第一章引論第二章用戶與操作系統(tǒng)的接口第三章進(jìn)程的描述與控制第四章進(jìn)程通信第五章處理器調(diào)度第六章死鎖第七章實存管理技術(shù)第八章虛擬存儲管理技術(shù)作業(yè)講評關(guān)于作業(yè)操作系統(tǒng)EOS系統(tǒng)調(diào)用進(jìn)程的同步第一章引論計算機系統(tǒng)包括硬件和軟件兩個部分,操作系統(tǒng)是最重要的系統(tǒng)軟件,它擴充了硬件的功能,并提供執(zhí)行程序的環(huán)境,它是應(yīng)用程序和硬件之間的接口(橋梁)。第一章引論1.1操作系統(tǒng)的作用和定義1.2計算機系統(tǒng)的硬件資源1.3操作系統(tǒng)的發(fā)展1.4操作系統(tǒng)的功能和特性1.5操作系統(tǒng)的分類1.6操作系統(tǒng)的結(jié)構(gòu)模型1.1操作系統(tǒng)的作用和定義1.1.1操作系統(tǒng)的作用1.1.2.操作系統(tǒng)的定義
1.1.1操作系統(tǒng)的作用1.操作系統(tǒng)是系統(tǒng)軟件計算機系統(tǒng)是由硬件和軟件組成的層次結(jié)構(gòu)的系統(tǒng)。它的最低層是硬件,包括電子元件和機械部件以及機器語言。硬件部分又稱為裸機。圖1-1說明了計算機系統(tǒng)的層次結(jié)構(gòu)的組織。圖1-1計算機硬件和軟件的層次關(guān)系文字處理、圖形圖像處理、科學(xué)計算、信息管理系統(tǒng)等編譯器、編輯器、命令解釋器、……操作系統(tǒng)機器語言物理設(shè)備應(yīng)用軟件系統(tǒng)軟件硬件如果讓每個使用計算機的人直接編程來控制硬件,將是一件不可思議的事情。為了方便使用計算機,在硬件層上加了一層軟件,由它控制和管理計算機;為用戶使用計算機提供方便。在開始時,只是一些簡單的管理程序,最后形成了操作系統(tǒng)。計算機安裝了操作系統(tǒng)后,用戶使用計算機時,其實是使用操作系統(tǒng)提供的功能,操作系統(tǒng)提供的功能遠(yuǎn)比硬件的功能強大。在計算機科學(xué)里,把模仿硬件設(shè)備功能的軟件稱作虛擬機。所以又把操作系統(tǒng)稱為虛擬機。2.操作系統(tǒng)是系統(tǒng)資源的管理者引入操作系統(tǒng)是為了合理組織計算機工作流程,管理分配計算機系統(tǒng)的硬件和軟件資源最大限度地提高計算機系統(tǒng)的利用率。例如一個用戶,他同時要瀏覽網(wǎng)頁、打印文稿、聽mp3,他只要按照操作系統(tǒng)給的規(guī)則發(fā)出命令即可,至于在計算機內(nèi)怎樣組織這些程序運行,他都不必關(guān)心,全權(quán)交給操作系統(tǒng)負(fù)責(zé)。3.操作系統(tǒng)是用戶與計算機硬件系統(tǒng)之間的接口操作系統(tǒng)的一個重要任務(wù)是讓用戶方便地使用計算機。用戶不必關(guān)心硬件的組成和操作系統(tǒng)的組成,用戶只關(guān)心用什么方法使用操作系統(tǒng)完成什么功能。這也是在面向?qū)ο蟪绦蛟O(shè)計中講的面向?qū)ο蟮姆椒āS脩糁豁毩私鈱ο筇峁┑慕涌?,而不必考慮對象內(nèi)的細(xì)節(jié)。操作系統(tǒng)提供了兩類接口:(1)作業(yè)級接口操作系統(tǒng)提供一組操作命令,用戶可以通過鍵盤輸入相應(yīng)的命令,組織和控制作業(yè)的運行。(2)程序級接口操作系統(tǒng)提供一組系統(tǒng)調(diào)用,程序員在編寫程序時,如需要使用硬件的功能(如輸入、輸出)就可通過系統(tǒng)調(diào)用,而不必關(guān)心硬件的具體操作。1.1.2操作系統(tǒng)的定義正如計算機科學(xué)中許多技術(shù)名詞都沒有統(tǒng)一的定義一樣,操作系統(tǒng)也沒有唯一的一種定義與解釋。通過上面的論述,操作系統(tǒng)可以定義為:是加載在硬件之上,支持其它軟件,并控制和管理計算機系統(tǒng)內(nèi)各種硬件和軟件資源,有效地組織各程序運行的程序集合。操作系統(tǒng)的目標(biāo)方便性;通過命令,或鼠標(biāo)等便可完成所希望的要求(包括網(wǎng)上信息查詢)。高效性;如實現(xiàn)CPU、I/O設(shè)備的并行操作、對內(nèi)外存中存放的信息進(jìn)行統(tǒng)一管理避免無序和空間的浪費。1.2計算機系統(tǒng)的硬件資源1.處理器CPU是計算機的運算和控制單元,控制器是計算機的控制中心,運算器是計算機數(shù)據(jù)處理中心。如果計算機中只有一個處理器,把它稱為單處理器系統(tǒng);如有多個處理器,把它稱為多處理器系統(tǒng),本課如不明確說明,默認(rèn)為單處理器系統(tǒng)。2.存儲器存儲器分為內(nèi)存儲器和外存儲器,內(nèi)存儲器又稱內(nèi)存或主存,CPU可以直接訪問它,所以任何一個程序必須先裝入內(nèi)存才能運行。如果要同時運行多個程序,必須先把它們同時裝入內(nèi)存,并控制它們互相不干擾才能實現(xiàn)同時運行多個程序。外存是CPU不能直接訪問的存儲器如磁盤、光盤、磁帶等。這些存儲器通過I/O接口與I/O總線相聯(lián),訪問外存的時間要長,但其價格相對便宜。3.輸入輸出設(shè)備輸入輸出設(shè)備通常包含機械部分和控制電路部分控制電路部分又稱控制器。在微機中控制器做成適配卡,可以插在系統(tǒng)總線上,適配卡與設(shè)備之間通常采用標(biāo)準(zhǔn)協(xié)議接口如IDE、SCSI和RS-232C等。輸入輸出設(shè)備的速度差異很大。1.3操作系統(tǒng)的發(fā)展1.手工操作階段(串行工作,20世紀(jì)40年代)用戶直接與計算機硬件打交道。機器運行靠控制臺(面板),包括顯示燈、觸發(fā)器、某類型輸入設(shè)備。其缺點:一旦有某用戶開始操作,計算機的全部資源都為該用戶獨占,直到下機將資源轉(zhuǎn)給下個用戶為止。操作是聯(lián)機的,輸入輸出也是聯(lián)機的(由CPU完成),因此程序運行時間拉的很長(手工操作),即在程序運行之前需要花費大量的準(zhǔn)備時間。2.批處理階段(20世紀(jì)50年代末)從一個作業(yè)到另一個作業(yè)的過度擺脫人工干預(yù),使其自動化,這就出現(xiàn)了批處理(追求系統(tǒng)資源利用率),而批處理也經(jīng)歷了兩個階段早期的聯(lián)機批處理;操作員將若干個作業(yè)合成一批,依次放在卡片讀入機上,監(jiān)督程序負(fù)責(zé)輸入到磁帶上,然后監(jiān)督程序再開始自動地處理各個作業(yè)(包括讀入內(nèi)存、匯編或編譯、連接裝配),并啟動程序運行。脫機批處理:在主機之外另設(shè)一臺功能較為簡單的小型衛(wèi)星機,如圖1.2所示。批處理系統(tǒng)是形成后來操作系統(tǒng)的雛形??ㄆ斎霗C打印機衛(wèi)星機輸入帶輸出帶執(zhí)行帶系統(tǒng)帶日志調(diào)入作業(yè)輸出結(jié)果圖1-2脫機成批處理主機結(jié)束批處理階段到了20世紀(jì)60年代初期,計算機硬件有新的發(fā)展,出現(xiàn)了通道和中斷技術(shù),通道是專用的輸入輸出處理器,它可控制多臺輸入輸出設(shè)備工作,由它負(fù)責(zé)內(nèi)存和輸入輸出設(shè)備之間的數(shù)據(jù)傳輸。中斷是指CPU接到中斷請求信號后,可以暫停當(dāng)前執(zhí)行的程序,然后去執(zhí)行相應(yīng)的中斷服務(wù)程序,中斷服務(wù)程序結(jié)束后,CPU再回到原來暫停執(zhí)行程序被中斷的位置接著執(zhí)行。有了中斷和通道就實現(xiàn)了兩個方面的功能:(1)主機與輸入輸出的并行操作(2)系統(tǒng)輸入輸出控制程序和中斷處理程序永駐內(nèi)存成為執(zhí)行程序(或監(jiān)督程序、控制程序)。通過時鐘記時中斷防止程序死循環(huán);非法操作也會產(chǎn)生中斷通知系統(tǒng)。圖1.3給出了此時內(nèi)存空間用戶程序┇控制語言和命令解釋器作業(yè)序列號輸入輸出控制程序中斷處理程序用戶程序區(qū)域執(zhí)行/監(jiān)控程序圖1-3常駐監(jiān)控程序內(nèi)容3.多道程序系統(tǒng)早期的批處理系統(tǒng)仍是單道順序處理作業(yè),每次只有一個作業(yè)運行,其實一個任務(wù)或能包括輸入數(shù)據(jù),對輸入數(shù)據(jù)進(jìn)行處理,輸出處理結(jié)果,當(dāng)輸入數(shù)據(jù)時,CPU和輸出設(shè)備空閑,當(dāng)處理數(shù)據(jù)時,輸入輸出設(shè)備空閑,當(dāng)輸出數(shù)據(jù)時,CPU和輸入設(shè)備空閑,由于CPU的速度和輸入輸出設(shè)備的速度相差很遠(yuǎn)所以當(dāng)輸入輸出時,CPU的空閑是非??上У摹S嬎銠C硬件系統(tǒng)的工作周期組件與設(shè)備周期周期*108處理器10ns(100MHz)1秒高速緩存訪問20ns2秒內(nèi)存訪問100ns10秒磁盤訪問9ms10.4天比方說CPU花費1秒鐘發(fā)出讀盤命令,磁盤接到控制信號并準(zhǔn)備好數(shù)據(jù),再通知CPU來取卻要花費10.4天。如果CPU在這10天里不做其他事情,會造成多大浪費。這就是采用多道程序設(shè)計的主要原因。多道程序設(shè)計系統(tǒng)實現(xiàn)與單道程序系統(tǒng)有很大區(qū)別,首先需要在內(nèi)存中存放多個程序,要保證他們互相不干擾。還要防止一個程序長時間占用CPU,所以提出分時占用CPU的概念,在一個調(diào)度周期內(nèi),每個進(jìn)程獲得同樣的時間片,CPU輪流切換為各個進(jìn)程服務(wù),這種工作方式叫并發(fā)機制。(a)單道情形:打印請求打印請求圖1-4單道與多道程序運行情況(b)多道情形:程序A監(jiān)督程序I/O設(shè)備繪圖儀請求t1t2t3t4t5t6t7t8CPU打印機繪圖儀程序B打印完成繪圖完成CPU空閑t9t10仍有空閑A/B運行?結(jié)束下一步下一步下一步下一步下一步下一步下一步下一步用戶程序監(jiān)督程序I/O操作I/O中斷請求
啟動I/OI/O完成中斷I/O中斷請求啟動I/Ot1I/O中斷處理結(jié)束t2t3t4t5t6t7t8CPU
CPU空閑空閑tAAΔt等待I/O的時間(6個Δt)(a)單道情況11078BBtAAΔt(b)兩道情況1107189tΔt(c)四道情況1107189BBAACDCD2310圖1-5
單道、兩道和四道情況1421/8Δt
=0.125道程序/Δt2/9Δt
=0.222道程序/ΔtAI/OAI/OBI/O4/11Δt
=0.363道程序/Δt下一步A,B,C,D為程序,忽略外設(shè);假定4個程序都需運行2個Δt時間,在期間有6個Δt時間的I/O操作;吞吐率分別為:1/8=0.1252/9=0.2224/11=0.3634道程序情況比單道提高了近3倍。顯然不僅使內(nèi)存充分利用,還帶來處理機利用率的提高,使整個系統(tǒng)效率得以提高。下一步結(jié)束下一步由圖1-5可知多道下內(nèi)存和處理機利用率得到顯著提高。內(nèi)存存放程序數(shù)量是否越多越好呢?回答是否定的!內(nèi)存的容量限制了系統(tǒng)可同時處理程序的數(shù)目。物理設(shè)備的數(shù)量也是一個制約條件,如果內(nèi)存中可同時運行的程序過多,這些程序之間可能會因為相互等待被其它程序占用的設(shè)備資源(如I/O設(shè)備),反而可能會影響系統(tǒng)效率。程序道數(shù)過多對處理機的競爭更加激烈,可能會產(chǎn)生兩個不利后果:影響系統(tǒng)的響應(yīng)速度。產(chǎn)生過多的系統(tǒng)開銷(系統(tǒng)本身運行的時空耗費)。系統(tǒng)同時接納用戶程序數(shù)目與系統(tǒng)功能和配置有關(guān)。 由此,多道程序設(shè)計提高了系統(tǒng)效率,也帶來了系統(tǒng)資源的競爭,因此要協(xié)調(diào)程序與資源的關(guān)系。處理機、存儲器和外部設(shè)備是計算機系統(tǒng)中重要的硬件資源,因而需要解決處理機資源管理、存儲器分配和回收以及外部設(shè)備資源管理等問題。1.4操作系統(tǒng)的功能和特性在多道程序環(huán)境下,系統(tǒng)通常無法同時滿足所有作業(yè)的資源需求,為使計算機系統(tǒng)能執(zhí)行多道程序,操作系統(tǒng)必須對處理器、存儲器、輸入輸出設(shè)備和信息等資源進(jìn)行有效的管理,此外為了讓用戶方便使用計算機系統(tǒng)操作系統(tǒng)還要向用戶提供相應(yīng)的接口。1.4.1操作系統(tǒng)的功能1.處理器管理在多道程序系統(tǒng)中,每個程序只有獲得CPU的控制權(quán)后才能被執(zhí)行。操作系統(tǒng)就要為多個準(zhǔn)備運行的程序分配CPU的控制權(quán),我們把一個運行的程序稱為進(jìn)程,所以以進(jìn)程為單位分配CPU的使用權(quán),處理器管理歸結(jié)為進(jìn)程管理。2.內(nèi)存管理內(nèi)存管理要為多道程序分配內(nèi)存空間,控制它們互不干擾,內(nèi)存管理主要功能包括內(nèi)存空間分配和回收、地址映射、內(nèi)存保護(hù)、內(nèi)存擴充。3.輸入輸出設(shè)備管理為用戶提供一個友好的接口,實現(xiàn)接口與具體設(shè)備的分離,實現(xiàn)設(shè)備共享,設(shè)備管理包括設(shè)備分配和回收、緩沖區(qū)管理、虛擬設(shè)備等功能。4.文件管理(信息管理)計算機的程序、數(shù)據(jù)信息都是以文件形式存儲在各種存儲設(shè)備里。操作系統(tǒng)中的文件系統(tǒng)負(fù)責(zé)對它們進(jìn)行管理。文件管理包括文件存儲空間的分配和回收、目錄管理、文件的共享和保護(hù),提供一組對文件的操作。5.用戶接口操作系統(tǒng)的用戶接口就是前面講過的作業(yè)級接口和程序級接口。1.4.2操作系統(tǒng)的特性多道程序系統(tǒng)充分利用計算機系統(tǒng)的資源,同時也出現(xiàn)了單道系統(tǒng)不具有的特點。1.并發(fā)性并發(fā)性是指多個事件在某一時間間隔內(nèi)發(fā)生。CPU雖然在某一時間間隔內(nèi)同時執(zhí)行多個程序,對于單CPU系統(tǒng),CPU在任意時刻只能執(zhí)行某個程序的某條指令。換句話說,在某一時間間隔內(nèi),CPU輪流交替地執(zhí)行多個程序。操作系統(tǒng)要解決CPU如何從一個程序的執(zhí)行切換到另一個程序的執(zhí)行。2.共享性多道程序系統(tǒng)就是讓CPU在某一時間間隔內(nèi)同時執(zhí)行多個程序,從另一個角度看,多個程序同時使用計算機系統(tǒng)的資源,這種多個程序同時使用計算機系統(tǒng)資源就稱為多個程序共享計算機系統(tǒng)的資源。多個進(jìn)程共享內(nèi)存、CPU、文件、設(shè)備。如何在共享條件下保護(hù)共享資源不被破壞,如何避免因共享可能帶來的死鎖等問題,都是操作系統(tǒng)要解決的問題。3.異步性多道程序系統(tǒng)讓CPU在某一時間間隔內(nèi)同時執(zhí)行多個程序,由于系統(tǒng)資源的性質(zhì)不同,有的資源一次只能讓一個進(jìn)程使用,多個進(jìn)程只能排隊使用這樣的資源,這就造成多個程序走走停停的運行過程,這里的走意味著CPU在執(zhí)行程序,這里的停表示程序在為某個資源排隊。換句話說,每個程序事先都不知道何時開始執(zhí)行,何時執(zhí)行結(jié)束。4.虛擬性在計算機科學(xué)里,虛擬性是修飾或說明可以感覺到的某些事物,雖然實際上不存在,但通常比實際事物更實用或更切實可行。前面已經(jīng)講了操作系統(tǒng)是虛擬機,它可以提供比物理計算機更強大的功能。1.5操作系統(tǒng)分類在介紹操作系統(tǒng)歷史時,一般講操作系統(tǒng)有三種基本類型:批處理系統(tǒng)、分時系統(tǒng)和實時系統(tǒng)。隨著計算機技術(shù)的發(fā)展,又出現(xiàn)了網(wǎng)絡(luò)操作系統(tǒng)和分布式操作系統(tǒng)。圖1-5多道批處理系統(tǒng)工作原理作業(yè)卡片機作業(yè)1作業(yè)2┇作業(yè)nOS磁盤(輸入井)磁盤(輸出井)內(nèi)存后備作業(yè)完成作業(yè)打印機處理器卡片機后備作業(yè)完成作業(yè)打印機處理器結(jié)束1.5.1批處理系統(tǒng)多道批處理操作系統(tǒng)的工作原理體現(xiàn)兩個特征,一是“多道”,二是“成批”。如圖1-5圖1.5中輸入井和輸出井分別為磁盤上的兩個區(qū)域,是系統(tǒng)特別劃分出來用于輸入輸出的區(qū)域。設(shè)置輸入井和輸出井的目的有兩個:(1)協(xié)調(diào)輸入/輸出設(shè)備速度與處理機速度的差異。(2)為作業(yè)調(diào)度提供條件。多道批處理系統(tǒng)具有以下特征:(1)內(nèi)存中存放多個尚未執(zhí)行結(jié)束的程序(2)程序執(zhí)行結(jié)束的順序與調(diào)入內(nèi)存的順序無關(guān)(3)作業(yè)從提交到完成,經(jīng)過兩次調(diào)度,一次是作業(yè)調(diào)度,操作系統(tǒng)從磁盤把作業(yè)調(diào)入內(nèi)存,另一次是進(jìn)程調(diào)度,操作系統(tǒng)為內(nèi)存里的進(jìn)程分配CPU。多道批處理系統(tǒng)的優(yōu)點是:系統(tǒng)資源利用率比較高。吞吐率(單位時間內(nèi)完成的作業(yè)數(shù)量)高。多道批處理系統(tǒng)的缺點也是明顯的:沒有交互能力,用戶無法干預(yù)自己作業(yè)的運行,使用起來不方便。用戶作業(yè)可能需要等待很長時間才能得到運行。1.5.2分時操作系統(tǒng)分時操作系統(tǒng)(TimeSharingOperatingSystem),簡稱分時系統(tǒng),就是支持多道程序,以聯(lián)機操作為標(biāo)志的操作系統(tǒng)。分時系統(tǒng)的產(chǎn)生用戶對系統(tǒng)功能需求不斷增長,主要表現(xiàn)在以下3個方面:人—機交互程序調(diào)試、修改,可直接對計算機進(jìn)行控制。共享主機多個用戶都希望以“獨占”方式共享一臺計算機。方便上機用戶希望有一個終端設(shè)備直接將作業(yè)傳遞給計算中心主機,并能直接對其作業(yè)控制。為滿足以上要求,便產(chǎn)生了分時多終端系統(tǒng),如圖1.6分時操作系統(tǒng)終端終端終端┅圖1-6分時系統(tǒng)示意圖響應(yīng)時間
123n…時間片計算機硬件終端終端終端終端┅響應(yīng)時間
123n…時間片計算機硬件終端終端終端終端終端終端終端終端終端結(jié)束1.5.2分時操作系統(tǒng)(終端)分時系統(tǒng)需解決的4個問題:提供一組交互終端命令將系統(tǒng)時鐘時間劃分很小的片段——時間片q=T/n:q為輪流為每個終端服務(wù)的時間片(T=響應(yīng)周期,n=終端個數(shù))。不遺漏地接收用戶的命令;有兩個配置;多路轉(zhuǎn)接器(或多路卡)和每個終端配置一個緩沖區(qū)(暫存鍵入的命令)及時處理用戶鍵入的命令分時系統(tǒng)的4個主要特征:(1)交互性;在終端上編輯、運行程序,或其它操作。(2)多路性/同時性;宏觀上同時有多個用戶在運行。(3)獨占性;每個用戶一個終端,獨立操作,互不干擾(4)及時性;在很短時間內(nèi)得到響應(yīng),小于2~3秒。1.5.3實時操作系統(tǒng)實時操作系統(tǒng)(Real-TimeOperatingSystem)能對隨機發(fā)生的外部事件做出及時響應(yīng)和處理。(1)實時系統(tǒng)的分類隨著計算機應(yīng)用領(lǐng)域擴大,從傳統(tǒng)科學(xué)計算擴展到商業(yè)數(shù)據(jù)處理、生產(chǎn)過程控制、飛機導(dǎo)航、情報檢索等。這樣就出現(xiàn)了實時操作系統(tǒng),這種系統(tǒng)一般是專用系統(tǒng)。實時系統(tǒng)按其應(yīng)用分為實時控制和實時信息處理兩大類:實時控制;如生產(chǎn)過程控制、飛機導(dǎo)航、導(dǎo)彈和衛(wèi)星發(fā)射、鐵路交通控制等都屬于這一類。實時信息處理;情報檢索等就屬于這一類。
(2)實時系統(tǒng)的特征1.實時性特別是實時控制系統(tǒng),要求對外部事件的響應(yīng)要十分迅速。系統(tǒng)的響應(yīng)時間以控制對象所要求的截止時間決定。2.可靠性高實時控制系統(tǒng)往往在惡劣環(huán)境中工作,一旦發(fā)生故障,都可能帶來巨大的損失,甚至是不可挽回的損失,所以多采用多級容錯措施,保證系統(tǒng)安全。3.有限的交互性實時控制系統(tǒng)同樣需要與人的交互。實時系統(tǒng)與分時系統(tǒng)的差別:與分時比較,有些特性相似,但某些方面差別很大。(1)實時系統(tǒng)通常屬于專用系統(tǒng),分時系統(tǒng)一般為通用系統(tǒng)。(2)交互性不同;分時有較強交互作用,實時相對要差的多,提供的交互命令較簡單,也不存在分時系統(tǒng)的資源共享。(3)對系統(tǒng)響應(yīng)時間要求不同;實時系統(tǒng)對時間要求嚴(yán)格,一般與被控對象的截止時間相關(guān),對象是所控制的外部設(shè)備,而不是一般終端用戶。(4)可靠性不同;實時系統(tǒng)要求可靠性更高,通常進(jìn)行硬件/軟件冗余。1.5.4網(wǎng)絡(luò)操作系統(tǒng)網(wǎng)絡(luò)操作系統(tǒng)(NetworkOperatingSystem)是實現(xiàn)網(wǎng)絡(luò)通信與網(wǎng)絡(luò)資源管理的操作系統(tǒng)。將分布各地的計算機/終端設(shè)備通過數(shù)據(jù)通信系統(tǒng)聯(lián)結(jié)在一起,構(gòu)成一個系統(tǒng),形成計算機網(wǎng)絡(luò)。計算機網(wǎng)絡(luò)需要一個網(wǎng)絡(luò)操作系統(tǒng)對整個網(wǎng)絡(luò)實施管理,并為用戶提供統(tǒng)一的,方便的網(wǎng)絡(luò)接口。網(wǎng)絡(luò)操作系統(tǒng)一般建立在各主機的本地操作系統(tǒng)(網(wǎng)絡(luò)中各計算機配有獨立操作系統(tǒng))基礎(chǔ)之上,除了具有通常操作系統(tǒng)的功能外,還提供以下功能:(1)網(wǎng)絡(luò)通信在源主機與目標(biāo)主機之間實現(xiàn)無差錯的數(shù)據(jù)傳輸。(2)資源共享實現(xiàn)網(wǎng)絡(luò)資源共享,協(xié)調(diào)用戶對網(wǎng)絡(luò)資源的使用,保證數(shù)據(jù)的安全性和一致性。(3)網(wǎng)絡(luò)服務(wù)1)電子郵件服務(wù)2)文件傳輸服務(wù)3)共享硬盤服務(wù)4)共享打印服務(wù)1.5.5分布式操作系統(tǒng)分布式操作系統(tǒng)(DistributedOperatingSystem)分為兩類:一類是建立在緊耦合(TightlyCoupled)分布式系統(tǒng)基礎(chǔ)之上的,每個處理單元為處理器和局部存儲器。另一類是建立在松散耦合(looselyCoupled)計算機網(wǎng)絡(luò)基礎(chǔ)上的。松散耦合系統(tǒng)也是經(jīng)網(wǎng)絡(luò)連接而成的統(tǒng)一的計算機系統(tǒng),從這一點上來說,與計算機網(wǎng)絡(luò)是一樣的,但分布式系統(tǒng)除了通信之外,仍具有與計算機網(wǎng)絡(luò)不同的5個方面的特征:分布式處理;資源、功能、任務(wù)及控制都分散在各個處理機上,系統(tǒng)中的計算機無主次之分,這是分布系統(tǒng)的一個最重要的特征,這要求連網(wǎng)的計算機有一個統(tǒng)一的操作系統(tǒng)。并行性;分布式系統(tǒng)可以并行處理多個子任務(wù),以達(dá)到共同完成某個任務(wù),加快了整體任務(wù)的完成。透明性;系統(tǒng)中各子任務(wù)執(zhí)行位置、資源位置等對用戶是透明的。網(wǎng)絡(luò)所講的透明性,主要指操作實現(xiàn)的透明性。共享性;分布在各個計算機上的軟、硬資源可供整個系統(tǒng)所共享,并以透明的方式訪問,這也是網(wǎng)絡(luò)系統(tǒng)所沒有的。網(wǎng)絡(luò)系統(tǒng)的共享多半是指在服務(wù)器上的。分布式系統(tǒng)處理和控制功能都是分布的,因此,從理論上來說,任何結(jié)點上的故障,對整體系統(tǒng)影響不大。分布式操作系統(tǒng)是一個非常復(fù)雜的系統(tǒng),是網(wǎng)絡(luò)操作系統(tǒng)的更高級形式。目前真正可用的分布式軟件很少,還有些問題有待解決。第二章用戶與操作系統(tǒng)的接口操作系統(tǒng)是計算機與用戶之間的接口。用戶通過操作系統(tǒng)提供的方法方便、安全、快捷地使用計算機系統(tǒng)的資源。用面向?qū)ο蟮姆椒▉砜矗僮飨到y(tǒng)把計算機系統(tǒng)封裝起來,為用戶提供了統(tǒng)一的使用計算機的接口,用戶不需知道計算機系統(tǒng)內(nèi)的具體細(xì)節(jié),只需按接口要求操作就可以方便地使用計算機。操作系統(tǒng)提供了兩類接口,作業(yè)級接口和程序級接口。第二章用戶與操作系統(tǒng)的接口2.1作業(yè)控制級接口2.2程序級接口2.3操作系統(tǒng)模型2.1作業(yè)級接口2.1.1作業(yè)2.1.2作業(yè)類型2.1.3聯(lián)機用戶接口2.1.4脫機用戶接口2.1.1作業(yè)作業(yè)是用戶一次請求計算機系統(tǒng)為其完成任務(wù)所進(jìn)行工作的總和。一個作業(yè)通常可以劃分成若干相對獨立的步驟,每個步驟稱為作業(yè)步。如執(zhí)行C語言編寫的源程序,需要經(jīng)過編譯、連接裝配、執(zhí)行三個作業(yè)步。作業(yè)步的最本質(zhì)的特征是要計算機執(zhí)行某個程序。2.1.2作業(yè)的類型根據(jù)計算機系統(tǒng)對作業(yè)處理方式的不同,作業(yè)被分為兩大類:脫機作業(yè)和聯(lián)機作業(yè)。脫機作業(yè)又稱批處理作業(yè)。用戶把作業(yè)提交給計算中心后,便不再與計算機系統(tǒng)交流了,這期間通過操作員干預(yù)作業(yè)的運行。聯(lián)機作業(yè)又稱為交互式作業(yè)。程序員通過終端或控制臺鍵盤、鼠標(biāo)發(fā)出操作命令,控制作業(yè)的運行。脫機作業(yè)多出現(xiàn)在批處理系統(tǒng)中,而聯(lián)機作業(yè)多出現(xiàn)在分時系統(tǒng)和實時系統(tǒng)中。在包含批處理和分時處理的系統(tǒng)中,聯(lián)機作業(yè)又稱作前臺作業(yè),由程序員進(jìn)行交互式控制。脫機作業(yè)又稱作后臺作業(yè)。一般前臺作業(yè)的優(yōu)先級較高,系統(tǒng)要及時響應(yīng),當(dāng)無前臺作業(yè)時,操作系統(tǒng)才調(diào)度后臺作業(yè)。2.1.3聯(lián)機用戶接口聯(lián)機用戶接口由一組操作命令組成。不同的操作系統(tǒng)提供的命令形式有所不同。有控制臺命令行形式和窗口菜單形式兩種。例如在windows系統(tǒng)中檢查網(wǎng)絡(luò)是否聯(lián)通:C:\>ping202.193.164.30例如在windows系統(tǒng)中在“開始”菜單中運行辦公應(yīng)用程序word20032.1.4脫機用戶接口脫機用戶接口由作業(yè)控制語言組成,程序根據(jù)對作業(yè)的控制要求用作業(yè)控制語言寫成作業(yè)控制卡或作業(yè)說明書連同作業(yè)一起提交給計算中心。操作系統(tǒng)按照作業(yè)控制卡或作業(yè)說明書的要求控制作業(yè)的運行。(1)作業(yè)說明書作業(yè)說明書是程序員用作業(yè)控制語言編寫的控制作業(yè)運行的程序,它表示程序員對作業(yè)的控制意圖。作業(yè)說明書主要包括三方面的內(nèi)容:作業(yè)的基本描述(作業(yè)名、編程語言名、允許最大處理時間等),作業(yè)控制描述(聯(lián)機/脫機、作業(yè)步的順序等),資源需求描述(內(nèi)存容量、外部設(shè)備等)。(2)作業(yè)控制卡作業(yè)控制卡是作業(yè)說明書的一種載體。早期批處理系統(tǒng)都有讀卡機,程序員用卡片作為程序的載體,每張卡片承載一條指令,程序員在與鑿孔機相聯(lián)的電傳打字機上輸入程序,鑿孔機在卡片上按指令的二進(jìn)制代碼形式鑿孔,一個程序由若干張卡片組成。程序員按作業(yè)控制語言語法,和寫程序一樣用若干張卡片表示對作業(yè)的控制意圖,把它們與程序卡片一起提交給計算中心。圖2-1計算機用的卡片2.2程序級接口對于程序員編程來說,與操作系統(tǒng)打交道的就是程序級接口。2.2.1特權(quán)指令和訪管指令為讓計算機系統(tǒng)可靠地工作,把機器指令分成特權(quán)指令和非特權(quán)指令。特權(quán)指令是不允許在用戶程序中直接使用的指令。如I/O指令(啟動I/O設(shè)備進(jìn)行數(shù)據(jù)傳輸?shù)闹噶睿?、設(shè)置時鐘、設(shè)置控制寄存器等指令都是特權(quán)指令,如讓用戶程序使用這些指令會對系統(tǒng)造成沖突或損害,所以只允許操作系統(tǒng)程序使用特權(quán)指令。計算機怎么知道某個程序能不能使用特權(quán)指令呢?2.2.2用戶態(tài)和核心態(tài)為了避免用戶程序中使用特權(quán)指令,操作系統(tǒng)把程序分為用戶程序和系統(tǒng)程序兩類。在CPU程序狀態(tài)字寄存器中設(shè)置相應(yīng)的標(biāo)志,假定當(dāng)運行用戶程序時,把該標(biāo)志清零;運行系統(tǒng)程序時,把該標(biāo)志置1,當(dāng)該標(biāo)志為零時,程序執(zhí)行特權(quán)指令,計算機就知道這是一個錯誤,就報告操作系統(tǒng),讓操作系統(tǒng)做相應(yīng)的處理。這個標(biāo)志為0時,CPU為用戶態(tài);這個標(biāo)志為1時,CPU為核心態(tài)。在有的系統(tǒng)中稱用戶態(tài)為目態(tài);稱核心態(tài)為管態(tài)。用戶程序在目態(tài)下運行,只能使用非特權(quán)指令。操作系統(tǒng)程序在管態(tài)下運行,可以使用所有的指令。如果用戶程序要使用I/O設(shè)備時,必須通過操作系統(tǒng)才能實現(xiàn)。為此系統(tǒng)設(shè)置了訪管指令,訪管指令主要任務(wù)是從用戶態(tài)切換成核心態(tài),系統(tǒng)就能執(zhí)行操作系統(tǒng)程序。程序狀態(tài)字包括以下信息:(1)程序基本狀態(tài)指令地址要執(zhí)行的下一條指令地址條件標(biāo)志當(dāng)前指令執(zhí)行結(jié)果產(chǎn)生的條件標(biāo)志目態(tài)/管態(tài)標(biāo)志說明程序是用戶程序還是系統(tǒng)程序(2)中斷碼當(dāng)前發(fā)生的中斷事件(3)中斷屏蔽字決定是否響應(yīng)當(dāng)前發(fā)生的中斷操作系統(tǒng)為每個程序設(shè)置程序狀態(tài)字信息,執(zhí)行該程序時,將它的設(shè)置程序狀態(tài)字信息裝入CPU的程序狀態(tài)字寄存器。切換程序時,把當(dāng)前程序的程序狀態(tài)字從程序狀態(tài)字寄存器中讀出并寫入指定數(shù)據(jù)結(jié)構(gòu)中,把下一時刻要執(zhí)行的程序的程序狀態(tài)字從保存它的數(shù)據(jù)結(jié)構(gòu)中讀出并寫入CPU程序狀態(tài)字寄存器,哪個程序的程序狀態(tài)字寫入了CPU程序狀態(tài)字寄存器,它就控制了CPU2.2.3系統(tǒng)調(diào)用系統(tǒng)調(diào)用是用戶程序調(diào)用操作系統(tǒng)提供的子程序。在高級語言中用庫函數(shù)隔離了系統(tǒng)調(diào)用,高級語言程序員感覺不到系統(tǒng)調(diào)用。系統(tǒng)調(diào)用是操作系統(tǒng)為程序員提供的唯一接口。系統(tǒng)調(diào)用在一些操作系統(tǒng)中又稱軟中斷系統(tǒng)調(diào)用本質(zhì)上講也是調(diào)用子程序,但與用戶程序調(diào)用自己的子程序有本質(zhì)區(qū)別。當(dāng)用戶程序調(diào)用自己的子程序時,CPU的狀態(tài)不會發(fā)生改變,而用戶程序調(diào)用操作系統(tǒng)子程序時,CPU的狀態(tài)會發(fā)生改變。用戶程序要訪問特定的系統(tǒng)資源時(讀寫磁盤、輸入數(shù)據(jù)、輸出數(shù)據(jù)),必須通過系統(tǒng)調(diào)用才能實現(xiàn),因為用戶程序不能直接使用特權(quán)指令。由于CPU速度和磁盤、鍵盤、打印機等設(shè)備速度的巨大差異,讓用戶程序占著CPU等待是浪費CPU資源,所以這樣的用戶程序必須讓出CPU,操作系統(tǒng)換另一個程序運行。2.2.4系統(tǒng)調(diào)用過程系統(tǒng)調(diào)用通常經(jīng)過以下步驟1.將系統(tǒng)調(diào)用需要的參數(shù)或參數(shù)地址壓入堆棧。2.發(fā)布一條系統(tǒng)調(diào)用命令(訪管指令或軟中斷指令),在系統(tǒng)調(diào)用指令中放入調(diào)用號或?qū)⒄{(diào)用號放入指定的寄存器。3.根據(jù)調(diào)用號計算存放子程序地址的單元地址,將該地址裝入CPU指令地址寄存器。4.進(jìn)入系統(tǒng)子程序。5.在系統(tǒng)子程序中保護(hù)中斷現(xiàn)場。把用戶程序撤出CPU,讓它等待結(jié)果。5.CPU執(zhí)行調(diào)度服務(wù)(給通道分配任務(wù),啟動通道)。6.然后,操作系統(tǒng)從準(zhǔn)備就緒的程序集合里選擇某個程序X,給它分配CPU,把它的程序狀態(tài)字信息裝入CPU程序狀態(tài)字寄存器,CPU將執(zhí)行用戶程序X。2.3操作系統(tǒng)的結(jié)構(gòu)模型從目前應(yīng)用較廣泛的操作系統(tǒng)來看,考慮核心各模塊間通訊方式內(nèi)核結(jié)構(gòu)可分為兩大類:微內(nèi)核模型和單內(nèi)核模型。2.3.1單內(nèi)核模式單內(nèi)核整個核心系統(tǒng)分成若干模塊(可以是層次結(jié)構(gòu)),但在核心運行時,它是一個獨立的二進(jìn)制映像(也可說整個內(nèi)核是一個非常大的進(jìn)程)。一個模塊調(diào)用另一個模塊中的函數(shù)實現(xiàn)模塊間的通信。文件系統(tǒng)進(jìn)程間通信IO設(shè)備管理虛存基本進(jìn)程管理內(nèi)核模式圖2-2單內(nèi)核模式在單內(nèi)核模型中,用戶程序首先使用語言系統(tǒng)庫進(jìn)行系統(tǒng)調(diào)用,這個調(diào)用通過執(zhí)行一條特殊的中斷指令而被內(nèi)核函數(shù)截獲,此時程序從用戶態(tài)切換到核心態(tài),由操作系統(tǒng)找到相應(yīng)的服務(wù)過程。服務(wù)結(jié)束后,結(jié)果返回用戶程序。2.3.2微內(nèi)核模式微內(nèi)核內(nèi)核中大部分模塊是獨立的進(jìn)程,并在一定特權(quán)狀態(tài)下運行,各模塊之間通過消息傳遞進(jìn)行通訊。進(jìn)程服務(wù)器內(nèi)存服務(wù)器文件服務(wù)器網(wǎng)絡(luò)服務(wù)器顯示服務(wù)器客戶應(yīng)用程序圖2-3微內(nèi)核模式微內(nèi)核硬件用戶態(tài)核心態(tài)在微內(nèi)核設(shè)計中,把大部分傳統(tǒng)上屬于內(nèi)核的代碼分離出來放在更高的層次上,讓它們在用戶態(tài)運行。只留下一個很小的內(nèi)核,所以叫做微內(nèi)核。客戶/服務(wù)器模型是微內(nèi)核的典型應(yīng)用。在微內(nèi)核模型中,內(nèi)核起消息中繼的作用由它接收消息并轉(zhuǎn)發(fā)出去。第三章進(jìn)程的描述和控制在多道程序環(huán)境中,進(jìn)程是系統(tǒng)分配資源的基本單位,同時也是獨立運行的基本單位,進(jìn)程是操作系統(tǒng)中最基本、最重要的概念。進(jìn)程最初是在上個世紀(jì)60年代麻省理工學(xué)院開發(fā)MULTICS系統(tǒng)中提出,從此進(jìn)程成為現(xiàn)代操作系統(tǒng)的最核心的概念之一。現(xiàn)代幾乎所有的操作系統(tǒng)都支持并行或并發(fā)機制。操作系統(tǒng)的基本控制原理都是圍繞進(jìn)程展開而進(jìn)程控制的復(fù)雜性是由操作系統(tǒng)的并發(fā)控制引起的。第三章進(jìn)程的描述和控制3.1程序執(zhí)行方式3.2進(jìn)程的描述3.3進(jìn)程的狀態(tài)3.4進(jìn)程控制3.5線程3.1程序的執(zhí)行方式3.1.1程序順序執(zhí)行3.1.2程序并發(fā)執(zhí)行3.1.1程序的順序執(zhí)行進(jìn)程(process)是現(xiàn)代操作系統(tǒng)中最重要的概念之一,它是在上個世紀(jì)60年代初設(shè)計MULTICS操作系統(tǒng)時首先提出的,有些系統(tǒng)采用任務(wù)(task)這一術(shù)語。為什么要引入進(jìn)程概念,程序和進(jìn)程是什么關(guān)系?我們從單道程序環(huán)境下的程序的順序執(zhí)行和多道程序環(huán)境下程序的并發(fā)執(zhí)行比較,來理解引入進(jìn)程的必要性和重要性。例:三個程序順序執(zhí)行,如圖3-1所示。t輸入:計算:輸出:I1C1P1I2C2P2I3C3P3
t0t1t2t3t4t5t6t7t8t9t10圖3-1三個程序間順序執(zhí)行Δt程序1:I1C1P19個Δt
結(jié)束程序2:I2C2P2程序3:I3C3P3在單道程序系統(tǒng)中,一段時間內(nèi)計算機只執(zhí)行一個用戶程序,這個程序在運行中獨占所有系統(tǒng)資源。不存在與其他程序共享資源的問題,程序的執(zhí)行有以下特性:(1)順序性不同程序之間是順序執(zhí)行的(2)封閉性程序在運行期間獨占系統(tǒng)資源,資源的狀態(tài)只由這個程序決定。(3)可再現(xiàn)性無論程序在什么時候執(zhí)行,只要初始條件相同,這個程序的執(zhí)行軌跡和最終結(jié)果都是相同的。3.1.2程序的并發(fā)執(zhí)行由于硬件的進(jìn)步,出現(xiàn)了中斷技術(shù)和通道技術(shù),使計算機系統(tǒng)中多種硬件部件能同時工作,即硬件具有了并行工作的能力;由于多道程序技術(shù)的引入,讓內(nèi)存同時裝入多個程序,讓它們同時活動在不同的硬件部件上,使CPU與外部設(shè)備、外部設(shè)備之間都能并行工作,操作系統(tǒng)控制CPU輪流交替地執(zhí)行內(nèi)存中的這些程序,從宏觀上看,在一段時間內(nèi)CPU同時執(zhí)行多個程序,而從微觀上看,任何時刻CPU只執(zhí)行一個程序。這種情況稱多個程序并發(fā)運行。
輸入:計算:輸出:
t0t1t2t3t4t5t6ΔttI1圖3-2三個程序并發(fā)執(zhí)行的前驅(qū)圖I2I3C1C2C3P1P2P3時間:5個Δt并行并行并行結(jié)束下一步下一步下一步例:三個程序并發(fā)執(zhí)行,如圖3-2所示。程序內(nèi)保持Ii→Ci→Pi
程序邏輯順序性。存在Ii→Ii+1;Ci→Ci+1;Pi→Pi+1;表明系統(tǒng)資源競爭帶來的順序性關(guān)系。不同程序之間Ii+2、Ci+1
和Pi
,沒有前驅(qū)關(guān)系,說明可以并發(fā)執(zhí)行,這是系統(tǒng)的并發(fā)性,提高(9-5)/9x100%=44%。
程序的并發(fā)執(zhí)行 并發(fā)性是增強計算機系統(tǒng)的處理能力和提高資源利用率所采取的一種技術(shù)。程序的并發(fā)執(zhí)行通過前面的分析可分為兩種:多道程序系統(tǒng)的程序執(zhí)行環(huán)境變化所引起的多道程序的并發(fā)執(zhí)行。多道程序并發(fā)執(zhí)行在宏觀上是同時進(jìn)行的,但在微觀上仍是順序執(zhí)行的。并發(fā)執(zhí)行是在某道程序的幾個程序段中,包含著一部分可以同時執(zhí)行或順序顛倒執(zhí)行的代碼。 在時間上來看,并發(fā)執(zhí)行是指一個程序還未結(jié)束,系統(tǒng)就開始執(zhí)行另一個程序。 程序并發(fā)執(zhí)行產(chǎn)生與順序執(zhí)行有所不同的新特征:相互制約性;程序在并發(fā)執(zhí)行時,由于它們共享資源或為完成某一項任務(wù)而合作,致使在并發(fā)程序之間存在相互制約的關(guān)系。如圖3-2中,I、C、P是三個相互合作的程序,當(dāng)計算程序完成Ci-1
的計算后,如果輸入程序尚未完成對Ii的處理,則計算程序無法進(jìn)行Ci處理,致使計算程序暫停運行。失去封閉性;程序在并發(fā)執(zhí)行時,是多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行失去了封閉性。當(dāng)處理機資源被其它程序占用時,有條件運行的任何程序都必須等待。不可再現(xiàn)性;程序在并發(fā)執(zhí)行時,由于失去了封閉性,也導(dǎo)致失去了可再現(xiàn)性。考察兩個例子來說明這個問題:例1:兩個程序A和B共享一個變量N(當(dāng)前值為n)。
程序A:
┅N=N+1;┅程序B:┅print(N);N=0;┅在處理機上執(zhí)行關(guān)于N的3條指令,由于并發(fā)性,有理由假定3個可能的執(zhí)行序列:①
N=N+1;print(N);N=0;(完全順序A→B)
②
print(N);N=0;N=N+1;(完全順序B→A)
③
print(N);N=N+1;N=0;(B,A交替運行)n+1,n+1,0,最終N的結(jié)果為
0
n,0,1,最終N的結(jié)果為
1
n,n+1,
0,最終N的結(jié)果為
0
該情形說明程序在并發(fā)執(zhí)行時,由于失去了封閉性,其計算結(jié)果已與并發(fā)程序的執(zhí)行速度有關(guān),使程序也失去可再現(xiàn)性。下一步
程序的并發(fā)執(zhí)行
例2:假定分時系統(tǒng)上運行一個航班售票系統(tǒng),多個終端共享主機系統(tǒng)數(shù)據(jù)(庫)資源,并在一個城市有兩個終端售票機B1,B2,任意航班的座位按順序預(yù)定,簡單座位形式如圖3-3所示;其中灰色部分表示已售,空白部分為未售。設(shè)定有n排,每排m個座位(n,m≥1),又假定座位按順序預(yù)定。兩個終端售票機B1、B2有下面虛線框的公共數(shù)據(jù)(庫)與相同的預(yù)定程序;varrow,col:integer;ticket[n][m]:integer;
┅procedurebooking1:begin2:ifrow<=n3:begin4:ticket[row][col]:=1;賦值1表示已售
5:write(“座位:”row“排”,col“號”);6:col=(col+1)modm+1;7:ifcol=1;8:row=row+1;9:end10:else11:write(“座位已售完!”);12:end共享數(shù)據(jù)1234┅m1234┅i┅n圖3-3航班座位示意圖
:begin
:ifrow<=n
:
begin
:
ticket[row][col]:=1;
:
write(“座位:”row“排”,col“號”);┅
:begin
:ifrow<=n
:
begin
:
ticket[row][col]:=1;
:
write(“座位:”row“排”,col“號”);┅B1:B2:12345中斷12345當(dāng)前位置row=3;col=4
row=3;col=4
row=3;col=4
結(jié)束前面例子說明:在某些情況下,程序的并發(fā)執(zhí)行使得執(zhí)行結(jié)果不再具有封閉性和可再現(xiàn)性,且可能造成出現(xiàn)錯誤。為了使在并發(fā)執(zhí)行時不出現(xiàn)錯誤結(jié)果,必須采取某些措施來控制各并發(fā)程序段執(zhí)行速度。在多道程序系統(tǒng)中,多道程序在主機中同時運行,共享系統(tǒng)資源,程序的執(zhí)行有了新的特性:(1)異步性每個程序都以獨立的速度向前推進(jìn),程序的啟動和結(jié)束的時間是不確定的,而且程序的執(zhí)行一般是非連續(xù)的,呈現(xiàn)走走停停的狀態(tài)。(2)競爭性多個程序在執(zhí)行中競爭系統(tǒng)資源,資源的狀態(tài)不是只受一個程序影響(3)相互制約雖然每個用戶程序是相對獨立的,由于并發(fā)和共享,這些程序之間相互依賴彼此制約。例:在多道分時系統(tǒng)中,有兩個用戶要執(zhí)行編譯程序編譯自己的源程序。ab編譯程序在多道分時系統(tǒng)中,內(nèi)存中只會保存編譯程序的一個內(nèi)存映象,它是一個可再入程序,計算機系統(tǒng)中所有用戶都用它來編譯自己的程序。圖3-4編譯程序示意圖假定編譯程序的起始地址是a,先對用戶1的源程序進(jìn)行編譯,執(zhí)行到地址b時,需要保存中間結(jié)果,編譯程序在b點等待磁盤傳輸信息。這時CPU空閑,讓CPU執(zhí)行編譯程序?qū)τ脩?的源程序進(jìn)行編譯,編譯程序仍然從地址a開始執(zhí)行,現(xiàn)在的問題是怎么描述編譯程序的狀態(tài)?稱它在b點等待磁盤傳輸,還是稱它在a點開始執(zhí)行?為了描述程序的執(zhí)行過程,必須引入進(jìn)程概念。3.2進(jìn)程的描述3.2.1進(jìn)程的定義3.2.2進(jìn)程的特性3.2.3進(jìn)程控制塊3.2.1進(jìn)程的定義進(jìn)程的定義
進(jìn)程的概念是60年代初期,人們對進(jìn)程下過許多各式各樣的定義:進(jìn)程是可以并行執(zhí)行的計算部分(S.E.Madnick)進(jìn)程是一個獨立的可以調(diào)度的活動E.Cohen,…)進(jìn)程是一抽象實體,當(dāng)它執(zhí)行某個任務(wù)時,將要分配和釋放各種資源(P.Denning)行為的規(guī)則叫程序,程序在處理機上執(zhí)行時的活動稱為進(jìn)程(E.W.Dijkstra)一個進(jìn)程是一系列逐一執(zhí)行的操作,而操作的確切含義則有賴于以何種詳盡程度來描述進(jìn)程(BrinchHansen)進(jìn)程是程序在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位進(jìn)程在給定的活動空間和初始狀態(tài)下處理機的一次執(zhí)行過程。1978年中國操作系統(tǒng)會議對進(jìn)程的定義為: 進(jìn)程是一個具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動,進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。3.2.2進(jìn)程的特性(1)動態(tài)性進(jìn)程本質(zhì)上是用來描述程序執(zhí)行過程的,因此,動態(tài)性是進(jìn)程的最基本的特性。具體表現(xiàn)為:它由創(chuàng)建而產(chǎn)生,因調(diào)度程序調(diào)度而執(zhí)行,因得不到所需資源而等待,因撤消而消亡。(2)并發(fā)性并發(fā)性體現(xiàn)在多個進(jìn)程同時裝入內(nèi)存中,操作系統(tǒng)為所有這些進(jìn)程輪流交替分配CPU,執(zhí)行進(jìn)程的程序。(3)異步性進(jìn)程的異步性是指系統(tǒng)中的進(jìn)程是按照各自獨立的、不可確定的時間產(chǎn)生、運行、結(jié)束的。(4)獨立性進(jìn)程獨立性是指每個進(jìn)程是獨立的實體,它有自己的程序計數(shù)器和內(nèi)部狀態(tài),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的單位。進(jìn)程和程序既有聯(lián)系又有區(qū)別,主要區(qū)別如下:進(jìn)程是動態(tài)概念,而程序則是靜態(tài)概念。程序是指令的有序集合,沒有任何執(zhí)行含義。而進(jìn)程則強調(diào)執(zhí)行過程,它動態(tài)創(chuàng)建,并被調(diào)度執(zhí)行后消亡。進(jìn)程有并行(單機并發(fā))特征,即獨立性和異步性。進(jìn)程是競爭計算機系統(tǒng)資源的基本單位。不同進(jìn)程可以對應(yīng)不同程序,也可以為同一程序,只要所對應(yīng)的數(shù)據(jù)集不同。當(dāng)一個程序多次被執(zhí)行時,每次執(zhí)行都可以是一個不同進(jìn)程。作為被控制和管理的實體,除了程序本身和所需數(shù)據(jù)集之外,必須包括控制和管理信息。
3.2.3進(jìn)程控制塊進(jìn)程由三部分組成:進(jìn)程控制塊PCB(ProcessControlBlock),程序集和數(shù)據(jù)集。PCB程序代碼圖3-5進(jìn)程的組成(a)(b)程序代碼PCB數(shù)據(jù)集合進(jìn)程控制塊是操作系統(tǒng)用來記錄進(jìn)程控制和管理信息的數(shù)據(jù)結(jié)構(gòu)。操作系統(tǒng)為每個進(jìn)程都建立相應(yīng)的進(jìn)程控制塊。它是進(jìn)程動態(tài)特征的集中描述。操作系統(tǒng)根據(jù)進(jìn)程控制塊對進(jìn)程管理和控制,PCB內(nèi)容也會隨著進(jìn)程的運行而改變。在內(nèi)存的操作系統(tǒng)區(qū)中存放各個進(jìn)程的PCB。進(jìn)程控制塊是進(jìn)程動態(tài)特征的集中反映,是系統(tǒng)建立和感知進(jìn)程的唯一實體,因此,一個進(jìn)程的PCB結(jié)構(gòu)是常駐內(nèi)存的。在進(jìn)程并發(fā)執(zhí)行時,由于資源共享,帶來各進(jìn)程之間的相互制約。為了反映這些制約關(guān)系和資源共享關(guān)系,在創(chuàng)建一個進(jìn)程時,應(yīng)首先創(chuàng)建其PCB,然后才能根據(jù)PCB中信息對進(jìn)程實施有效的管理和控制。當(dāng)一個進(jìn)程完成其功能之后,系統(tǒng)則釋放進(jìn)程控制塊,進(jìn)程也隨之消亡。雖然PCB的內(nèi)容因不同的操作系統(tǒng)而不同,但PCB必須包含下面的信息:(1)進(jìn)程標(biāo)識信息(2)處理器狀態(tài)信息(3)進(jìn)程調(diào)度信息(4)進(jìn)程控制信息
PCB的組成標(biāo)識符信息進(jìn)程標(biāo)識符進(jìn)程名進(jìn)程號用戶標(biāo)識用戶名用戶號家族聯(lián)系父進(jìn)程子進(jìn)程處理機狀態(tài)信息(現(xiàn)場)通用寄存器指令計數(shù)器程序狀態(tài)字用戶棧指針進(jìn)程調(diào)度信息進(jìn)程狀態(tài)進(jìn)程優(yōu)先數(shù)(級/權(quán))等待原因調(diào)度算法參數(shù)等進(jìn)程控制信息程序和數(shù)據(jù)地址進(jìn)程同步和通信機制資源清單鏈接指針訪問權(quán)限打開的文件進(jìn)程標(biāo)識信息標(biāo)識符信息進(jìn)程標(biāo)識符進(jìn)程名進(jìn)程號用戶標(biāo)識用戶名用戶號家族聯(lián)系父進(jìn)程子進(jìn)程
進(jìn)程控制塊PCB處理機狀態(tài)信息(現(xiàn)場)通用寄存器指令計數(shù)器程序狀態(tài)字用戶棧指針圖3-7處理機狀態(tài)信息
進(jìn)程控制塊PCB進(jìn)程調(diào)度信息進(jìn)程狀態(tài)進(jìn)程優(yōu)先數(shù)(級/權(quán))阻塞原因調(diào)度算法參數(shù)等圖3-8進(jìn)程調(diào)度信息
進(jìn)程控制塊PCB進(jìn)程控制信息
程序和數(shù)據(jù)地址進(jìn)程同步和通信機制資源清單鏈接指針訪問權(quán)限打開的文件圖3-9進(jìn)程控制信息
進(jìn)程控制塊 不同操作系統(tǒng)PCB中信息的數(shù)量和內(nèi)容不盡相同;圖3.6-圖3.9列出一般操作系統(tǒng)所具有的基本內(nèi)容。標(biāo)識信息;通常存在兩個標(biāo)識,一個是由用戶(進(jìn)程)訪問該進(jìn)程時使用的外部標(biāo)識符,稱為進(jìn)程名。另一個是內(nèi)部標(biāo)識符,通常為一整數(shù),稱為進(jìn)程號。所屬用戶也存在用戶標(biāo)識,同樣有外部和內(nèi)部用的用戶標(biāo)識。家族聯(lián)系是用于記錄父進(jìn)程與子進(jìn)程的聯(lián)系指針。處理機狀態(tài)信息;當(dāng)前進(jìn)程的CPU現(xiàn)場;包括程序計數(shù)器PC、程序狀態(tài)字PSW及寄存器等。進(jìn)程調(diào)度信息;進(jìn)程狀態(tài)、優(yōu)先級,及等待時間和運行時間等是提供進(jìn)行進(jìn)程切換的依據(jù)。進(jìn)程控制信息;地址及占用空間大??;進(jìn)程同步和通信機制;資源清單一般用于記帳。鏈接指針用于構(gòu)建PCB隊列。訪問權(quán)限用于控制對系統(tǒng)資源的訪問權(quán)利等。 如前所述,進(jìn)程控制塊PCB是系統(tǒng)感知進(jìn)程存在的唯一實體。通過對PCB的操作,系統(tǒng)為有關(guān)進(jìn)程分配資源從而使得有關(guān)進(jìn)程得以被調(diào)度執(zhí)行。當(dāng)進(jìn)程執(zhí)行結(jié)束后,則通過釋放PCB來釋放進(jìn)程所占有的各種資源。正是由于建立了PCB,進(jìn)程才成為了資源分配、CPU調(diào)度的單位3.3進(jìn)程狀態(tài)3.3.1進(jìn)程的基本狀態(tài)3.3.2進(jìn)程的掛起3.3.1進(jìn)程的基本狀態(tài)進(jìn)程狀態(tài)進(jìn)程可能由于等待I/O操作、競爭資源、以及相互協(xié)作等原因產(chǎn)生“走走停?!钡膭討B(tài)性。因此,進(jìn)程在生存期內(nèi)至少具有三種基本狀態(tài):事件發(fā)生如I/O完成圖3.10進(jìn)程三狀態(tài)及轉(zhuǎn)換圖執(zhí)行就緒等待事件發(fā)生如等待I/O時間片到調(diào)度阻塞核心態(tài)用戶態(tài)執(zhí)行狀態(tài);PCB中狀態(tài)項為“執(zhí)行”。就緒狀態(tài);進(jìn)程其它運行條件都已滿足,正在等待分派處理機。根據(jù)PCB組織方式及優(yōu)先級等排成一個,或多個就緒隊列。阻塞狀態(tài);因等待某事件發(fā)生而暫時無法執(zhí)行,即使處理機空閑也無法在處理機上執(zhí)行。同樣可有多個阻塞隊列。 執(zhí)行、就緒、阻塞是進(jìn)程的三個基本狀態(tài),而操作系統(tǒng)的規(guī)模和設(shè)計目的不同,在有些系統(tǒng)中,還增加了二個基本狀態(tài),新建狀態(tài)、終止?fàn)顟B(tài)/結(jié)束狀態(tài),這兩個狀態(tài)對進(jìn)程管理是非常有用的。另外還有一個死鎖態(tài)。新建狀態(tài);對應(yīng)于剛剛定義的進(jìn)程,還未進(jìn)入就緒隊列的狀態(tài),此時系統(tǒng)未將進(jìn)程全部工作完成(如內(nèi)存尚待分配等)。如果一個新用戶試圖登陸到分時系統(tǒng),新的批處理作業(yè)被選中準(zhǔn)備投入內(nèi)存;只有進(jìn)程代碼和數(shù)據(jù)進(jìn)入內(nèi)存,才進(jìn)入就緒隊列。新建進(jìn)程常見事件見表3.1。為了并發(fā)性,用戶程序可以通過系統(tǒng)調(diào)用創(chuàng)建多個進(jìn)程。由現(xiàn)有的進(jìn)程派生操作系統(tǒng)可以創(chuàng)建一個進(jìn)程,代表用戶程序執(zhí)行一個功能(輸出進(jìn)程幫助用戶實現(xiàn)數(shù)據(jù)輸出,使用戶無需等待)操作系統(tǒng)因提供一項服務(wù)而創(chuàng)建終端用戶登錄到系統(tǒng)交互登錄當(dāng)操作系統(tǒng)準(zhǔn)備接納新任務(wù)時,在磁盤輸入井中后備作業(yè)隊列里,按某種策略挑選若干作業(yè),為其創(chuàng)建作業(yè)步進(jìn)程。新的批處理作業(yè)說明事件表3.1導(dǎo)致進(jìn)程創(chuàng)建的原因
終止?fàn)顟B(tài);指進(jìn)程正常,或非正常結(jié)束而終止的狀態(tài)。處于該狀態(tài)的進(jìn)程還未從系統(tǒng)中消失,可能由于一些善后工作尚未完成(如記帳,未完成的輸出等)。但處于這種狀態(tài)的進(jìn)程以后不再被調(diào)度執(zhí)行。表3.2給出了進(jìn)程終止的一些原因。死鎖狀態(tài);進(jìn)程等待的事件如果不會發(fā)生,進(jìn)程就會從阻塞態(tài)變成死鎖態(tài)。事件
說明正常完成進(jìn)程執(zhí)行完任務(wù),自行執(zhí)行一個操作系統(tǒng)服務(wù)調(diào)用,表示已經(jīng)結(jié)束運行父進(jìn)程終止當(dāng)一個父進(jìn)程終止,操作系統(tǒng)自動終止所有子孫進(jìn)程父進(jìn)程請求父進(jìn)程具有終止后代進(jìn)程的權(quán)利地址越界進(jìn)程試圖訪問不允許訪問的內(nèi)存單元超越訪問權(quán)限進(jìn)程試圖使用不允許使用的資源或文件,或以一種不正當(dāng)方式使用,如向只讀文件進(jìn)行寫的操作表3.2導(dǎo)致進(jìn)程終止的原因事件說明數(shù)據(jù)溢出執(zhí)行了除以“0”,或機器硬件無法表示的數(shù)據(jù)I/O失敗在輸入輸出期間發(fā)生錯誤,如查不到所需求的文件,I/O設(shè)備經(jīng)過多次啟動失敗(一般3-5次),從打印設(shè)備讀取數(shù)據(jù)等特權(quán)指令/無效指令進(jìn)程在用戶態(tài)執(zhí)行特權(quán)指令,或執(zhí)行了一條不存在的指令(如進(jìn)入數(shù)據(jù)區(qū),執(zhí)行數(shù)據(jù))數(shù)據(jù)誤用進(jìn)程使用未初始化,或類型錯誤的數(shù)據(jù)操作員/操作系統(tǒng)干涉由于某些原因,系統(tǒng)操作員,或操作系統(tǒng)終止進(jìn)程(如系統(tǒng)可能存在死鎖)表3.2導(dǎo)致進(jìn)程終止的原因
圖3-11進(jìn)程狀態(tài)及狀態(tài)變遷新建就緒執(zhí)行阻塞完成死鎖超時2調(diào)度1等待IO完成3IO完成4結(jié)束5進(jìn)程狀態(tài)的關(guān)系1號變遷操作系統(tǒng)給進(jìn)程分配CPU,進(jìn)程獲得CPU的控制權(quán),由就緒態(tài)轉(zhuǎn)為執(zhí)行態(tài)。2號變遷進(jìn)程因時間片用完,操作系統(tǒng)把它撤出處理器,由執(zhí)行態(tài)轉(zhuǎn)為就緒態(tài)。3號變遷進(jìn)程需要等待某個事件發(fā)生,進(jìn)程由于某種原因沒有資格繼續(xù)運行時,進(jìn)程通過執(zhí)行一個系統(tǒng)調(diào)用(sleep),自愿進(jìn)入阻塞狀態(tài)4號變遷進(jìn)程等待的事件已經(jīng)發(fā)生,操作系統(tǒng)把這個進(jìn)程從阻塞態(tài)轉(zhuǎn)為就緒態(tài)。5號變遷當(dāng)進(jìn)程執(zhí)行到結(jié)束時,通過系統(tǒng)調(diào)用exit()退出CPU,并釋放系統(tǒng)資源,由執(zhí)行態(tài)轉(zhuǎn)為終止態(tài)。任何進(jìn)程只能從就緒態(tài)轉(zhuǎn)為執(zhí)行態(tài)。#3變遷是進(jìn)程自愿啟動的。#5變遷分兩種情況,如果是正常結(jié)束,是進(jìn)程自愿啟動;如果是非正常結(jié)束,則是操作系統(tǒng)啟動的。任何一種變遷都是通過操作系統(tǒng)參與而實現(xiàn)的。 進(jìn)程在生存期間,可以多次地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài),即多次地處于執(zhí)行狀態(tài)、就緒狀態(tài)、阻塞狀態(tài),反映了并發(fā)程序“走走停?!钡倪\行軌跡。進(jìn)程不斷地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)是有條件或原因的。這些狀態(tài)隨著進(jìn)程的執(zhí)行和外界條件發(fā)生變化而轉(zhuǎn)換。事實上,進(jìn)程的狀態(tài)轉(zhuǎn)換是一個非常復(fù)雜的過程。圖3.12進(jìn)程五狀態(tài)及轉(zhuǎn)換圖事件發(fā)生如I/O完成執(zhí)行就緒等待事件發(fā)生如等待I/O時間片到調(diào)度阻塞新建終止接納終止系統(tǒng)設(shè)置多少狀態(tài)與系統(tǒng)對進(jìn)程管理方式有關(guān),也與系統(tǒng)資源利用有關(guān)但要注意,系統(tǒng)中設(shè)置過多狀態(tài)會造成系統(tǒng)參數(shù)和狀態(tài)轉(zhuǎn)換過程增加進(jìn)程在生存期間,可以多次地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài),即多次地處于執(zhí)行狀態(tài)、就緒狀態(tài)、阻塞狀態(tài),反映了并發(fā)程序“走走停?!钡倪\行軌跡。進(jìn)程不斷地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)是有條件,或原因的。這些狀態(tài)隨著進(jìn)程的執(zhí)行和外界條件發(fā)生變化而轉(zhuǎn)換。事實上,進(jìn)程的狀態(tài)轉(zhuǎn)換是一個非常復(fù)雜的過程。標(biāo)識符信息進(jìn)程標(biāo)識符進(jìn)程名進(jìn)程號用戶標(biāo)識用戶名用戶號家族聯(lián)系父進(jìn)程子進(jìn)程處理機狀態(tài)信息(現(xiàn)場)通用寄存器指令計數(shù)器程序狀態(tài)字用戶棧指針進(jìn)程調(diào)度信息等待原因調(diào)度算法參數(shù)等進(jìn)程控制信息程序和數(shù)據(jù)地址進(jìn)程同步和通信機制資源清單鏈接指針訪問權(quán)限打開的文件進(jìn)程優(yōu)先數(shù)=45新建標(biāo)識符信息進(jìn)程標(biāo)識符進(jìn)程名進(jìn)程號用戶標(biāo)識用戶名用戶號家族聯(lián)系父進(jìn)程子進(jìn)程處理機狀態(tài)信息(現(xiàn)場)通用寄存器指令計數(shù)器程序狀態(tài)字用戶棧指針進(jìn)程調(diào)度信息就緒進(jìn)程優(yōu)先數(shù)=pid等待原因調(diào)度算法參數(shù)等進(jìn)程控制信息程序和數(shù)據(jù)地址進(jìn)程同步和通信機制資源清單鏈接指針訪問權(quán)限打開的文件空→新建;通常有四個事件可能導(dǎo)致創(chuàng)建一個新進(jìn)程,見表3.1新建→就緒;操作系統(tǒng)接納一個進(jìn)程時,將新建狀態(tài)修改為就緒狀態(tài)。
就緒→執(zhí)行;從就緒隊列選擇一個進(jìn)程占用處理機,將就緒態(tài)改為運行態(tài)
執(zhí)行→就緒;通常原因是正在運行進(jìn)程時間片到,從運行態(tài)進(jìn)入就緒態(tài)
執(zhí)行→阻塞;若當(dāng)前進(jìn)程所請求事件,或條件未能得到滿足,則進(jìn)入阻塞態(tài)。由執(zhí)行進(jìn)入阻塞態(tài)原因可能很多
阻塞→就緒;系統(tǒng)內(nèi)發(fā)生事件時,根據(jù)事件原因查找阻塞隊列中的進(jìn)程,查到,將阻塞態(tài)轉(zhuǎn)換為就緒態(tài)。
執(zhí)行→終止;任務(wù)執(zhí)行完成,或由于其它原因無法繼續(xù)運行,系統(tǒng)將當(dāng)前進(jìn)程從執(zhí)行態(tài)轉(zhuǎn)變?yōu)榻K止?fàn)顟B(tài)。下一步下一步下一步下一步下一步結(jié)束中斷與進(jìn)程狀態(tài)轉(zhuǎn)換 下面說明引起進(jìn)程狀態(tài)轉(zhuǎn)換的本質(zhì)是中斷。我們?nèi)砸赃M(jìn)程的四個基本狀態(tài)為例說明五條有向邊所表明的狀態(tài)轉(zhuǎn)移。圖3.13給出了由中斷引起進(jìn)程狀態(tài)轉(zhuǎn)移的形式描述(圖中省略了關(guān)于中斷仲裁或控制部分)。其中,虛線表示事件或系統(tǒng)產(chǎn)生的操作。圖3.13由中斷引起的進(jìn)程狀態(tài)轉(zhuǎn)換圖I/O(完成)中斷申請I/O服務(wù)I/O完成調(diào)度時間片到自愿性中斷阻塞隊列就緒隊列時鐘中斷就緒阻塞執(zhí)行
申請I/O服務(wù):執(zhí)行中進(jìn)程需要在某處執(zhí)行有關(guān)I/O指令以進(jìn)行數(shù)據(jù)輸入輸出。此時用戶利用的指令要么是訪管指令,要么是某種系統(tǒng)調(diào)用,無論那種形式,都屬于自愿性中斷而進(jìn)入中斷處理;進(jìn)入等待某類I/O設(shè)備的阻塞隊列。
I/O完成:I/O數(shù)據(jù)傳輸完成,產(chǎn)生一個I/O中斷信號,系統(tǒng)響應(yīng)I/O中斷,當(dāng)前進(jìn)程狀態(tài)由用戶態(tài)變成核心態(tài),系統(tǒng)分析中斷原因,得知是哪個I/O設(shè)備發(fā)出中斷,根據(jù)規(guī)定的算法,在此設(shè)備的阻塞隊列中取出相關(guān)的那個進(jìn)程PCB,放入就緒隊列。中斷處理結(jié)束,中斷返回,進(jìn)程由核心態(tài)變成用戶態(tài)。
時間片到/搶占:由系統(tǒng)定時間隔時鐘中斷觸發(fā),當(dāng)前進(jìn)程用完一個時間片,從執(zhí)行狀態(tài)轉(zhuǎn)移到就緒狀態(tài)。需要說明的是,這是分時系統(tǒng)所具有的最常見的狀態(tài)轉(zhuǎn)移。由于現(xiàn)代通用操作系統(tǒng)大多都具有分時特征,因此時鐘在系統(tǒng)中是必不可少的。
調(diào)度:當(dāng)我們清楚了以上狀態(tài)轉(zhuǎn)移原因,這條邊所表明的狀態(tài)轉(zhuǎn)移也很容易理解。這涉及到調(diào)度的時機;如前面正在執(zhí)行進(jìn)程由于I/O申請自愿中斷而進(jìn)入阻塞狀態(tài)時,系統(tǒng)就需要從就緒隊列中選擇一個就緒態(tài)進(jìn)程投入執(zhí)行而轉(zhuǎn)換成執(zhí)行態(tài)。產(chǎn)生調(diào)度的因素有很多,都與中斷有關(guān)。磁盤結(jié)束下一步下一步下一步下一步下一步下一步下一步進(jìn)程狀態(tài)變遷是由于中斷,但中斷不一定產(chǎn)生進(jìn)程切換!
終止進(jìn)程結(jié)束自愿性或強迫中斷下一步
進(jìn)程結(jié)束:執(zhí)行到結(jié)束的進(jìn)程,此時程序中要么用訪管指令(非特權(quán)指令),要么用系統(tǒng)調(diào)用,無論那種形式,都屬于自愿性中斷而進(jìn)入中斷處理,進(jìn)程進(jìn)入終止隊列。在這里要弄清楚中斷與進(jìn)程狀態(tài)變遷、中斷與處理機狀態(tài)變化之間的關(guān)系。中斷分外部中斷和內(nèi)部中斷,內(nèi)部中斷是由當(dāng)前進(jìn)程引起的(程序出錯、I/O請求、缺頁中斷、其他系統(tǒng)調(diào)用);外部中斷不是由當(dāng)前進(jìn)程引起的(I/O完成中斷、系統(tǒng)定時中斷、系統(tǒng)掉電)。當(dāng)響應(yīng)中斷時,由于操作系統(tǒng)中斷處理程序?qū)儆趦?nèi)核,所以處理機的狀態(tài)由用戶態(tài)轉(zhuǎn)變成核心態(tài);中斷返回時,處理機的狀態(tài)由核心態(tài)又轉(zhuǎn)變成用戶態(tài)。中斷必定帶來處理機的狀態(tài)改變。這實質(zhì)體現(xiàn)了操作系統(tǒng)控制處理機和讓出處理機。只要CPU有空時,就引起進(jìn)程調(diào)度,操作系統(tǒng)就會從就緒隊列里挑選一個進(jìn)程,給它分配CPU。CPU有空的原因無非是當(dāng)前進(jìn)程自愿或被迫讓出CPU,自愿讓出包括三號變遷和五號變遷,被迫讓出有二號變遷和五號變遷,在優(yōu)先級高者優(yōu)先調(diào)度算法控制下,四號變遷可能引發(fā)二號變遷。如果發(fā)生進(jìn)程調(diào)度,其發(fā)源一定是中斷,但是中斷不一定都引起進(jìn)程調(diào)度,可以講中斷只是進(jìn)程調(diào)度的必要條件。從前面分析得到,如果發(fā)生中斷,處理機就會發(fā)生狀態(tài)變化;反之如果處理機的狀態(tài)發(fā)生了變化,就能斷定發(fā)了中斷,可以講中斷是處理機狀態(tài)變化的充要條件。系統(tǒng)內(nèi)進(jìn)程組織結(jié)構(gòu)
進(jìn)程控制塊組織
為實現(xiàn)對進(jìn)程的管理,系統(tǒng)需要對進(jìn)程控制塊以某種策略進(jìn)行組織。通常,組織方式主要有以下兩種:
鏈接方式;通常將具有相同狀態(tài)進(jìn)程的PCB根據(jù)PCB結(jié)構(gòu)內(nèi)鏈接指針,將進(jìn)程PCB鏈接在一起,形成就緒隊列、阻塞隊列以及空閑隊列。由于不同操作系統(tǒng)的規(guī)模和功能不同,可進(jìn)一步建立若干個就緒隊列和阻塞隊列。執(zhí)行指針就緒隊列1指針圖3.14鏈接隊列的PCB示意圖就緒隊列2指針阻塞隊列1指針阻塞隊列2指針空閑隊列指針0PCBnnPCBi0PCB125PCB110PCB10iPCB90PCB83PCB710PCB612PCB50PCB40PCB39PCB26PCB1
索引方式;索引方式就是根據(jù)進(jìn)程的不同狀態(tài)建立幾個索引表,如就緒索引表、阻塞索引表、空閑表等。索引表中的每一項指示一個PCB在內(nèi)存的首地址,而各索引表的起始地址存放在內(nèi)存的專用指示單元中。圖3.15給出了索引方式的PCB組織。PCBn┅PCB12PCB11PCB10PCB9PCB8PCB7PCB6PCB5PCB4PCB3PCB2PCB110841n117612359執(zhí)行指針阻塞表指針就緒表指針空閑表指針圖3.15索引方式的PCB示意圖3.3.2進(jìn)程的掛起進(jìn)程的掛起狀態(tài)三個基本狀態(tài)提供了構(gòu)造進(jìn)程活動模型的系統(tǒng)方法,并指導(dǎo)操作系統(tǒng)設(shè)計與實現(xiàn)。但這種系統(tǒng)不充分;一方面,處理機、內(nèi)存等系統(tǒng)硬件資源的利用率得不到充分發(fā)揮。另一方面,處在活動空間進(jìn)程可能由于某原因暫時靜止下來,不處于活動,但也不從系統(tǒng)中徹底退出,這就導(dǎo)致三種狀態(tài)模型擴充,引入掛起狀態(tài)。在早期操作系統(tǒng),由于內(nèi)存容量和進(jìn)程數(shù)量的矛盾,人們盡量想辦法在物理內(nèi)存容量不變的情況下,增加系統(tǒng)內(nèi)同時運行的進(jìn)程數(shù)量,方法是把內(nèi)存中暫時不執(zhí)行的進(jìn)程挪出內(nèi)存,為新進(jìn)程騰出內(nèi)存空間。挪出的進(jìn)程被放在硬盤上稱作交換區(qū)的空間,挪出進(jìn)程的正式名字叫掛起;當(dāng)掛起的進(jìn)程需要執(zhí)行時,再從硬盤挪入內(nèi)存,挪入進(jìn)程的正式名字叫激活。掛起進(jìn)程狀態(tài)分靜態(tài)就緒和靜態(tài)阻塞,它們在硬盤的交換區(qū)內(nèi),是不能運行的。所以叫靜態(tài)。只有當(dāng)操作系統(tǒng)把它們挪入內(nèi)存,它們才有運行資格,所以這個操作叫激活。圖3.16具有掛起狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖事件發(fā)生如I/O完成執(zhí)行就緒等待事件發(fā)生如等待I/O時間片到調(diào)度阻塞終止終止靜止阻塞靜止就緒活動空間掛起激活掛起事件發(fā)生如I/O完成新建接納接納掛起激活
活動阻塞→靜止阻塞;為沒有被阻塞的進(jìn)程讓出內(nèi)存空間。
靜止阻塞→活動阻塞;這種情況較少發(fā)生。當(dāng)內(nèi)存有空又沒有新進(jìn)程時,將進(jìn)程從硬盤調(diào)入內(nèi)存。
活動就緒→靜止就緒;通常,操作系統(tǒng)傾向掛起阻塞態(tài)進(jìn)程。但是有時需要這種轉(zhuǎn)換;當(dāng)前進(jìn)程需要增加內(nèi)存空間,而內(nèi)存又沒有空閑空間,此時方法是掛起一個就緒進(jìn)程。
靜止阻塞→靜止就緒;同基本狀態(tài)轉(zhuǎn)換一樣,如果等待的事件發(fā)生了,則將處于靜止阻塞的進(jìn)程修改為靜止就緒狀態(tài)。
新建→靜止就緒;創(chuàng)建一個新進(jìn)程時,由于內(nèi)存空間不足而無法進(jìn)入就緒隊列,這時就使用新建→靜止就緒。
靜止就緒→活動就緒;若內(nèi)存中沒有就緒進(jìn)程,靜止就緒狀態(tài)中有進(jìn)程時,操作系統(tǒng)將處于靜止就緒進(jìn)程通過激活而將其轉(zhuǎn)換為就緒狀態(tài)。結(jié)束下一步下一步下一步下一步下一步下一步下一步下一步圖3.16具有掛起狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖事件發(fā)生如I/O完成執(zhí)行就緒等待事件發(fā)生如等待I/O時間片到調(diào)度阻塞終止終止靜止阻塞靜止就緒活動空間掛起激活掛起事件發(fā)生如I/O完成新建接納接納掛起激活
活動阻塞→靜止阻塞;為沒有被阻塞的進(jìn)程讓出內(nèi)存空間。
靜止阻塞→活動阻塞;這種情況較少發(fā)生。當(dāng)內(nèi)存有空又沒有新進(jìn)程時,將進(jìn)程從硬盤調(diào)入內(nèi)存。
活動就緒→靜止就緒;通常,操作系統(tǒng)傾向掛起阻塞態(tài)進(jìn)程。但是有時需要這種轉(zhuǎn)換;當(dāng)前進(jìn)程需要增加內(nèi)存空間,而內(nèi)存又沒有空閑空間,此時方法是掛起一個就緒進(jìn)程。
靜止阻塞→靜止就緒;同基本狀態(tài)轉(zhuǎn)換一樣,如果等待的事件發(fā)生了,則將處于靜止阻塞的進(jìn)程修改為靜止就緒狀態(tài)。
新建→靜止就緒;創(chuàng)建一個新進(jìn)程時,由于內(nèi)存空間不足而無法進(jìn)入就緒隊列,這時就使用新建→靜止就緒。
各種狀態(tài)→完成;在正常情況下,一個運行進(jìn)程正常,或非正常結(jié)束,都進(jìn)入終止?fàn)顟B(tài)。但如表3.2所列出進(jìn)程終止事件,如果父進(jìn)程終止,或被創(chuàng)建它的進(jìn)程終止,則一個進(jìn)程可以在任何狀態(tài)下進(jìn)入終止?fàn)顟B(tài)。
靜止就緒→活動就緒;若內(nèi)存中沒有就緒進(jìn)程,靜止就緒狀態(tài)中有進(jìn)程時,操作系統(tǒng)將處于靜止就緒進(jìn)程通過激活而將其轉(zhuǎn)換為就緒狀態(tài)。結(jié)束下一步下一步下一步下一步下一步下一步下一步下一步
進(jìn)程的掛起狀態(tài)
引入掛起的一個主要原因是提供更多的內(nèi)存空間,以調(diào)入可運行的進(jìn)程,或為其它進(jìn)程分配更多的主存空間。表3.4列出了進(jìn)程掛起的一些原因。事件原因?qū)Q(主要因素)操作系統(tǒng)要求釋放更多的主存空間,以調(diào)入并執(zhí)行處于就緒態(tài)的進(jìn)程其它操作系統(tǒng)的原因操作系統(tǒng)有時需要掛起某(些)進(jìn)程,檢查運行中資源的使用情況及記帳,以便改善系統(tǒng)的性能,或者掛起被懷疑導(dǎo)致問題的進(jìn)程交互式用戶要求用戶可能希望掛起一個程序的執(zhí)行,目的是為了調(diào)試等父進(jìn)程的請求父進(jìn)程有時需要考察和修改子進(jìn)程,或當(dāng)要協(xié)調(diào)各子進(jìn)程活動時,需要掛起自己的子進(jìn)程定時周期性地執(zhí)行一個進(jìn)程(系統(tǒng)監(jiān)視進(jìn)程),在等待下一次執(zhí)行時被掛起;或?qū)崟r系統(tǒng)為調(diào)節(jié)負(fù)荷,掛起一些不十分緊迫的進(jìn)程,緩解系統(tǒng)的負(fù)荷以保證系統(tǒng)實時任務(wù)的控制表3.4進(jìn)程掛起的原因3.4進(jìn)程控制3.4.1內(nèi)核3.4.2微內(nèi)核3.4.3進(jìn)程控制原語3.4.1內(nèi)核現(xiàn)代操作系統(tǒng)程序(模塊)廣泛采用層次結(jié)構(gòu),一般將與硬件緊密相關(guān)的模塊安排在緊靠硬件的軟件層次中,如中斷處理程序、進(jìn)程控制與調(diào)度程序、I/O驅(qū)動程序等。通常將這一部分稱為操作系統(tǒng)內(nèi)核。圖3.16是一個簡單的層次圖示。操作系統(tǒng)一些典型的內(nèi)核功能見表3.6。內(nèi)核部分長駐內(nèi)存,以提高系統(tǒng)運行效率,并對其加以特殊的保護(hù)。硬件內(nèi)核用戶界面接口圖3.17操作系統(tǒng)層次結(jié)構(gòu)功能描述進(jìn)程管理進(jìn)程派生和調(diào)度進(jìn)程的創(chuàng)建和終止進(jìn)程同步以及對進(jìn)程間通信的支持PCB的管理內(nèi)存管理進(jìn)程地址空間的分配、回收交換頁、段的管理I/O管理設(shè)備驅(qū)動緩沖區(qū)管理進(jìn)程I/O設(shè)備、控制器、通道的分配、回收支持功能中斷處理時鐘管理(其中包括中斷)監(jiān)視表3.6操作系統(tǒng)內(nèi)核典型功能操作系統(tǒng)內(nèi)核
3.4.2微內(nèi)核在現(xiàn)代操作系統(tǒng)設(shè)計中,把操作系統(tǒng)中大部分代碼放到用戶模式中去運行,只留下完成操作系統(tǒng)最基本功能的小內(nèi)核,這一技術(shù)稱為微內(nèi)核技術(shù)。一般微內(nèi)核只提供四類小型服務(wù):①中斷和異常處理②進(jìn)程間通信③處理機調(diào)度④一些基本服務(wù)至于多大的內(nèi)核才可能稱為微內(nèi)核,這沒有定論。第一代微內(nèi)核約300KB,有140個系統(tǒng)調(diào)用;第二代微內(nèi)核約12KB,有7個系統(tǒng)調(diào)用接口。應(yīng)當(dāng)說明的是,操作系統(tǒng)內(nèi)核分為強內(nèi)核和微內(nèi)核,或弱內(nèi)核。微內(nèi)核的基本構(gòu)造是只有最基本的操作系統(tǒng)功能放在內(nèi)核中。非基本的服務(wù)和應(yīng)用程序在微內(nèi)核之上,并在用戶模式下執(zhí)行。什么應(yīng)該放在微內(nèi)核,什么應(yīng)該在微內(nèi)核外,不同的設(shè)計有不同的分界線。原語是內(nèi)核和微內(nèi)核提供給核外操作系統(tǒng)調(diào)用的函數(shù)。系統(tǒng)調(diào)用是用戶級編程接口,原語是內(nèi)核提供給操作系統(tǒng)的接口。3.4.3進(jìn)程控制原語內(nèi)核中有些功能由原語操作實現(xiàn)—原子操作。所謂原子操作就是不可分割的操作,要么不做,要么全做,作為原語的程序段不允許并發(fā)執(zhí)行。 通常把進(jìn)程控制用程序段做成原語。用于進(jìn)程控制的原語有:創(chuàng)建原語、撤消原語、阻塞原語、喚醒原語、掛起原語、激活原語、進(jìn)程同步原語等。1.創(chuàng)建原語進(jìn)程A在需要時可以建立新進(jìn)程B。新進(jìn)程稱為A的子進(jìn)程,A是B的父進(jìn)程。系統(tǒng)中所有進(jìn)程形成家族關(guān)系,即進(jìn)程樹。創(chuàng)建原語的主要功能是為新進(jìn)程創(chuàng)建一個進(jìn)程控制塊,并填寫初始值。將進(jìn)程控制塊插入就緒隊列,為父進(jìn)程返回子進(jìn)程內(nèi)部標(biāo)識號。2.撤消原語進(jìn)程完成任務(wù)后,生命周期也就要停止了,系統(tǒng)要收回進(jìn)程占用的資源,這項工作叫撤消進(jìn)程。任何一個進(jìn)程只能由它的父進(jìn)程撤消,由父進(jìn)程執(zhí)行撤消原語,撤消它選定的子孫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年粵教版八年級生物下冊階段測試試卷
- 2025年魯人新版必修1化學(xué)下冊月考試卷含答案
- 2025年人教A新版九年級生物上冊階段測試試卷含答案
- 2024年甲乙雙方關(guān)于房地產(chǎn)買賣的補充協(xié)議
- 二零二五年度綠色生態(tài)白酒銷售代理合同2篇
- 2025年教科新版六年級語文下冊月考試卷含答案
- 2025年陜教新版九年級語文下冊階段測試試卷含答案
- 2024版出售房屋委托協(xié)議書
- 二零二五年度文化傳播合作協(xié)議全面細(xì)化合作流程與文化產(chǎn)品推廣3篇
- DB37T 5175-2021 建筑與市政工程綠色施工技術(shù)標(biāo)準(zhǔn)
- GB∕T 26465-2021 消防員電梯制造與安裝安全規(guī)范(高清最新版)
- 泌尿道感染臨床路徑
- 古詩詞常見的修辭手法講課教案
- 科研項目評審評分表
- A5技術(shù)支持的課堂導(dǎo)入作業(yè)1—問題描述.針對日常教學(xué)中的某一主題針對教學(xué)目標(biāo)、教學(xué)內(nèi)容以及教學(xué)對象用簡短的語言描述當(dāng)前課堂導(dǎo)入環(huán)節(jié)中存在的問題和不足以及借助信息技術(shù)改進(jìn)課堂導(dǎo)入的必要性
- 2-07端陽賽馬節(jié)的傳說
- 國家開放大學(xué)《土木工程力學(xué)(本)》章節(jié)測試參考答案
- 衣柜技術(shù)標(biāo)準(zhǔn)
- 某隧道二襯檢測報告范本(共13頁)
- (完整版)臨時用電施工合同
評論
0/150
提交評論