版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
./《計算機操作系統(tǒng)》教案備課教師:晁妍職稱:助教教學(xué)班級計科專業(yè)09級本科2班時間:2011年9月已教輪數(shù):1計算機與信息學(xué)院2011-2012學(xué)年度第一學(xué)期課程教學(xué)目的及教學(xué)要求:本課程是計算機科學(xué)與技術(shù)專業(yè)的主要專業(yè)基礎(chǔ)課和主干課。本課程的學(xué)習(xí)目的在于使學(xué)生掌握操作系統(tǒng)的基本概念、基本原理、設(shè)計方法和實現(xiàn)技術(shù),具有初步分析實際操作系統(tǒng)的能力,為其今后在相關(guān)領(lǐng)域開展工作打下堅實的基礎(chǔ)。教學(xué)時數(shù)與學(xué)時分配:共51學(xué)時,周學(xué)時:17,<分單雙周,每次2個學(xué)時>章次標(biāo)題教學(xué)手段學(xué)時數(shù)第一章操作系統(tǒng)引論4第二章進程管理12第三章處理機調(diào)度與死鎖4第四章存儲管理10第五章設(shè)備管理6第六章文件系統(tǒng)8第七章操作系統(tǒng)接口4第八章網(wǎng)絡(luò)操作系統(tǒng)1第九章系統(tǒng)安全性1第十章UNIX系統(tǒng)內(nèi)核結(jié)構(gòu)1教材:《計算機操作系統(tǒng)》〔第三版湯小丹等推薦參考書:[1]《計算機操作系統(tǒng)》〔第二版湯子瀛等XX電子科技大學(xué)出版社[2]《計算機操作系統(tǒng)教程》張堯?qū)W史美林清華大學(xué)出版社[3]《UNIX教程》〔第2版〔美SyedMansoorSarwarRobertKoretsky張玉潔孟祥武譯機械工業(yè)出版社[4]《計算機操作系統(tǒng).學(xué)習(xí)指導(dǎo)與題解》梁紅兵、湯小丹XX電子科技大學(xué)出版社[5]《操作系統(tǒng)實驗指導(dǎo)—基于linux內(nèi)核》徐虹編清華大學(xué)出版社.第1、2講〔周次:第2周<注:線右側(cè)寫教學(xué)方法、實驗演示、新增補內(nèi)容、重要標(biāo)注、時間分配等>教學(xué)章節(jié):1.1操作系統(tǒng)的目標(biāo)和作用〔簡略1.2操作系統(tǒng)的發(fā)展過程〔每種OS的不足與各自特點教學(xué)目的及要求:目的:是使學(xué)生建立起OS的基本概念。要求:了解OS的引入和發(fā)展;理解多道程序設(shè)計技術(shù);重點、難點:<注:重點和難點如果一致,則寫在一起,若不同則應(yīng)分開寫>:OS引入和發(fā)展、OS的基本特征和功能。教學(xué)內(nèi)容:板書設(shè)計見PPT。<注:內(nèi)容每節(jié)課1-2頁為宜>復(fù)習(xí)引入:首先說明對課程的成績?nèi)绾卧u定,提出學(xué)習(xí)要求,以及教材的使用并推薦參考教材。然后介紹本課程的特點、性質(zhì)和目的,以及如何學(xué)習(xí),最后對本課程內(nèi)容以及課時分配做簡單的介紹。新課講授:操作系統(tǒng)在計算機系統(tǒng)中的地位:〔結(jié)合課件中圖加以說明,由此引出目標(biāo)和作用計算機系統(tǒng)由硬件和軟件組成;操作系統(tǒng)在硬件基礎(chǔ)上的第一層軟件;是其他軟件和硬件之間的接口。操作系統(tǒng)在計算機系統(tǒng)中占據(jù)著特別重要的地位,是計算機中最重要的系統(tǒng)軟件,是其他系統(tǒng)軟件和應(yīng)用軟件運行的基礎(chǔ)。1.1操作系統(tǒng)的目標(biāo)和作用操作系統(tǒng)的目標(biāo)方便性<用戶的觀點>:提供良好的、一致的用戶接口。無需了解許多有關(guān)硬件和系統(tǒng)軟件的細(xì)節(jié)。有效性<系統(tǒng)管理人員的觀點>:合理地組織計算機的工作流程,管理和分配硬件、軟件資源,提高資源的利用率;提高系統(tǒng)的吞吐量??蓴U充性<開放的觀點>:操作系統(tǒng)必須能方便地開發(fā)、測試和引進新的系統(tǒng)功能,以適應(yīng)計算機硬件和體系結(jié)構(gòu)的迅速發(fā)展以及應(yīng)用不斷擴大的要求。給計算機系統(tǒng)的功能的擴展提供開放式的支撐平臺。開放性:可移植性和互操作性其中有效性和方便性是設(shè)計OS時最重要的兩個目標(biāo),設(shè)計現(xiàn)代OS的主要目標(biāo)也是對提高資源利用率和方便用戶。操作系統(tǒng)的作用1.從一般用戶的觀點來看,OS作為用戶與計算機硬件系統(tǒng)之間的接口〔橋梁用戶并不直接與計算機硬件打交道,而是通過操作系統(tǒng)提供的命令、系統(tǒng)功能調(diào)用以及圖形化接口來使用計算機。2.從資源管理的觀點來看,OS作為計算機系統(tǒng)資源的管理者〔管家處理機的分配和控制,內(nèi)存的分配和回收,I/O設(shè)備的分配和處理,文件的存取、共享和保護工作都是由操作系統(tǒng)完成的。主要功能有:處理機管理、存儲管理、設(shè)備管理、文件管理3.從虛擬機的觀點來看,OS用作擴充機器〔實現(xiàn)了對計算機資源的抽象〔虛擬機或擴充機硬件處在最底層,不附加任何軟件的物理計算機"裸機".操作系統(tǒng)是附加在裸機上的第一層,是對裸機的首次擴充,構(gòu)成了一個比裸機更強,使用更方便的"虛擬計算機"。所有系統(tǒng)軟件以及更上層的用戶應(yīng)用軟件在操作系統(tǒng)虛擬機上運行,它們受操作系統(tǒng)的統(tǒng)一管理和控制,通過操作系統(tǒng)使用各種資源來完成特定的任務(wù)。引出OS的定義〔以提問的方式操作系統(tǒng)的定義:是一組控制和管理計算機硬件和軟件資源、合理地對各類作業(yè)進行調(diào)度,以及方便用戶使用計算機的程序的集合。推動操作系統(tǒng)發(fā)展主要動力〔稍后補充1.2操作系統(tǒng)的發(fā)展過程〔介紹OS的引入與發(fā)展,以及推動發(fā)展的主要動力1.2.11.人工操作方式1946-50年代中:電子管時代〔第一代計算機,計算機速度慢,無操作系統(tǒng),計算機資源昂貴;工作方式:用戶:既是程序員又是操作員;用戶是計算機專業(yè)人員;編程語言:機器語言;輸入輸出:紙帶或卡片;計算機的工作特點:用戶獨占全機,資源利用率極低;CPU等待用戶,計算前,手工裝入紙帶或卡片;計算完成后,手工卸取紙帶或卡片;CPU利用率低;主要矛盾:人機矛盾人工操作嚴(yán)重降低了計算機資源的利用率提高效率的途徑:脫機輸入/輸出技術(shù)。2.脫機輸入/輸出<Off-LineI/O>方式:脫機輸入方式是指在一臺外圍機〔它是一臺專門用來管理I/O的、功能較簡單的計算機的控制下,預(yù)先將程序和數(shù)據(jù)從低速輸入設(shè)備到磁帶,當(dāng)CPU需要這些程序和數(shù)據(jù)時,再從磁帶高速地讀入內(nèi)存。類似地,脫機輸出方式是指當(dāng)CPU需要輸出時,先高速地將數(shù)據(jù)寫入磁帶,然后在一臺外圍機的控制下,通過低速輸出設(shè)備進行輸出。相反,在主機的直接控制下進行的I/O方式被稱為聯(lián)機I/O方式。脫機I/O方式的主要優(yōu)點:減少了CPU的空閑時間、提高I/O速度〔緩和了人機矛盾1.2.2單道批處理系統(tǒng)1.單道批處理系統(tǒng)處理過程晶體管時代〔第二代計算機批處理技術(shù)是在系統(tǒng)中配置一個監(jiān)督程序,并在該監(jiān)督程序的控制下,能夠?qū)σ慌鳂I(yè)自動進行處理的一種技術(shù)。把一批作業(yè)以脫機方式輸入到磁帶或磁盤上,并在系統(tǒng)中配上監(jiān)督程序<Monitor>,在它的控制下使這批作業(yè)能一個接一個的連續(xù)處理。2.單道批處理系統(tǒng)的特征:自動性:無需人工干預(yù)。順序性:作業(yè)完成的順序與它們進入內(nèi)存的順序以及作業(yè)在磁帶上的順序一致。單道性:內(nèi)存中僅能存放一道作業(yè)。不足:無法充分利用系統(tǒng)中的所有的資源1.2.3多道批處理系統(tǒng)1.多道程序設(shè)計技術(shù)是指在內(nèi)存中同時存放若干個作業(yè),使它們共享系統(tǒng)資源并同時運行的技術(shù)。在單處理機環(huán)境下,這些作業(yè)僅在宏觀上同時運行,而在微觀上交替執(zhí)行。2.多道批處理系統(tǒng)采用多道程序設(shè)計技術(shù)的批處理系統(tǒng)被稱作多道批處理系統(tǒng)。多道批處理系統(tǒng)中必須配置一組軟件〔調(diào)度程序,來解決多道程序?qū)ο到y(tǒng)資源的共享和爭用問題,并對作業(yè)進行合理的組織和調(diào)度。外存〔后備隊列——>作業(yè)調(diào)度——>內(nèi)存〔共享CPU和系統(tǒng)中的各種資源就形成了現(xiàn)代意義上的OS3.具有的主要特征:〔與單道批處理的特征對比多道性:內(nèi)存中可同時存放多個作業(yè)調(diào)度性:〔作業(yè)調(diào)度、進程調(diào)度需通過作業(yè)調(diào)度從外存中選取若干個作業(yè)裝入內(nèi)存,還需通過進程調(diào)度在內(nèi)存的多個作業(yè)中分配CPU。無序性:作業(yè)調(diào)度的次序與作業(yè)在外存中次序無關(guān),作業(yè)完成的次序與作業(yè)進入內(nèi)存的次序也無關(guān)。4.多道批處理系統(tǒng)需解決的問題〔1多道程序?qū)S的基本要求存儲管理--系統(tǒng)必須為若干作業(yè)分派空間CPU調(diào)度--系統(tǒng)必須在就緒作業(yè)中選擇準(zhǔn)備運行.設(shè)備分配—既方便用戶使用,又能提高設(shè)備利用率.〔2多道批處理系統(tǒng)需解決的問題:處理機管理問題、內(nèi)存管理問題、設(shè)備管理問題、文件管理問題、作業(yè)管理問題5.優(yōu)缺點:優(yōu)點:資源利用率高——CPU和內(nèi)存利用率較高;系統(tǒng)吞吐量大——〔單位時間內(nèi)所完成的總工作量缺點:平均周轉(zhuǎn)時間長——〔從作業(yè)進入系統(tǒng)開始,直至其完成并退出系統(tǒng)為止所經(jīng)歷的時間,短作業(yè)的周轉(zhuǎn)時間顯著增長無交互能力——整個作業(yè)完成后或中間出錯時,才與用戶交互,不利于調(diào)試和修改;1.2.41.分時系統(tǒng)的產(chǎn)生引入:為了解決批處理系統(tǒng)無法進行人機交互的問題,并使多個用戶〔包括遠(yuǎn)程用戶能同時使用昂貴的主機資源,又引入了分時系統(tǒng)。分時系統(tǒng):是指在一臺主機上連接了多個帶有顯示器和鍵盤的終端,同時允許多個用戶通過自己的終端,以交互方式使用計算機,共享主機中的資源。2.分時系統(tǒng)的設(shè)計思想〔1采用了分時技術(shù):既把處理機的時間劃分成很短的時間片〔eg,幾百毫秒,輪流地分配給各個終端作業(yè)使用?!踩粼诜峙浣o它的時間片內(nèi),作業(yè)仍沒執(zhí)行完,它也必須將CPU交給下一個作業(yè)使用,并等下一輪得到CPU時再繼續(xù)執(zhí)行〔2設(shè)計目標(biāo):系統(tǒng)能及時響應(yīng)用戶的終端命令〔3實現(xiàn)中的最關(guān)鍵問題:使用戶能與自己的作業(yè)進行交互。〔及時接收、及時處理響應(yīng)時間RT<responsetime>:從鍵盤命令進入<按下回車鍵為準(zhǔn)>到開始在終端上顯示應(yīng)答的時間間隔.。在分時系統(tǒng)中,響應(yīng)時間≈時間片×用戶數(shù).改變批處理系統(tǒng)的運行方式:作業(yè)直接進入內(nèi)存系統(tǒng)采用時間片輪轉(zhuǎn)方式處理服務(wù)請求4.分時系統(tǒng)的特征多路性:多個用戶同時使用一臺計算機,共享CPU和其他資源,充分利用系統(tǒng)資源。宏觀上:是多個人同時使用一個CPU微觀上:多個人在不同時刻輪流使用CPU獨立性:用戶感覺不到計算機為其他人服務(wù),各用戶獨立操作,互不干擾。及時性:通過時間片技術(shù)和輪轉(zhuǎn)調(diào)度算法保證及時響應(yīng)?!仓赣脩裟茉诤芏痰臅r間內(nèi)獲得系統(tǒng)的響應(yīng),是以人們所能接受的等待時間決定的,一般為2~3秒交互性:能進行廣泛的人機交分時系統(tǒng)的關(guān)鍵問題是使用戶能與自己的作業(yè)進行交互,或者說它追求的主要目標(biāo)是系統(tǒng)能及時響應(yīng)用戶的終端命令。1.2.5引入:由于前幾種操作系統(tǒng)都不能很好的滿足在實時控制和實時信息處理領(lǐng)域的需要1.實時系統(tǒng)及其類型〔1實時系統(tǒng)是指系統(tǒng)能及時<或即時>響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對該事件的處理,并控制所有實時任務(wù)協(xié)調(diào)一致地運行。〔2可分成兩大類:實時控制系統(tǒng):通常使指以計算機為中心的生產(chǎn)過程控制系統(tǒng)和武器控制系統(tǒng)。這類系統(tǒng)要求實時采集現(xiàn)場數(shù)據(jù),并對數(shù)據(jù)進行及時處理,進而自動地控制相應(yīng)的執(zhí)行機構(gòu)。如工業(yè)自動控制、火炮自動控制、飛機自動駕駛、導(dǎo)彈制導(dǎo)等。實時信息處理系統(tǒng):通常使指對信息進行實時處理的系統(tǒng)。這類系統(tǒng)要求及時接受從終端〔包括遠(yuǎn)程終端發(fā)來的服務(wù)請求,按請求的內(nèi)容對信息進行檢索和處理,并在很短的時間內(nèi)為用戶做出正確的回答。如飛機訂票、情報檢索等。2.實時任務(wù)的類型〔1按任務(wù)執(zhí)行時是否呈現(xiàn)周期性來劃分周期性實時任務(wù)非周期性實時任務(wù)——截止時間開始截止時間:某任務(wù)在某時間以前必須開始執(zhí)行完成截止時間:某任務(wù)在某時間以前必須完成〔2根據(jù)對截止時間的要求來劃分〔與截止時間聯(lián)系的是否嚴(yán)格硬實時任務(wù)軟實時任務(wù)3.三種基本操作系統(tǒng)的比較:多路性獨立性及時性交互性可靠性批處理系統(tǒng)無無差差一般分時系統(tǒng)多終端服務(wù)有好好可靠實時系統(tǒng)多路采集、多路控制有最好一般高度可靠補充:推動批處理系統(tǒng)的形成與發(fā)展的主要動力:提高系統(tǒng)資源利用率;推動分時系統(tǒng)形成與發(fā)展的動力室方便是用戶;推動OS發(fā)展的主要動力:計算機硬件的不斷更新?lián)Q代1.2.6微機OS的發(fā)展1.單用戶單任務(wù)OS:只允許用戶程序作為一個任務(wù)運行eg.CP/M、MS-DOS2.單用戶多任務(wù)OS:允許用戶把程序分為若干個任務(wù),使它們并發(fā)執(zhí)行eg.MS-Windows3.多用戶多任務(wù)OS:允許多個用戶通過各自的終端使用一臺機器。eg.UNIX、LINUX教課小結(jié):1、了解操作系統(tǒng)的目標(biāo),理解操作系統(tǒng)的作用,了解推動操作系統(tǒng)發(fā)展的主要動力2、了解無操作系統(tǒng)的計算機系統(tǒng)和單道批處理系統(tǒng)。理解多道批處理系統(tǒng)、分時系統(tǒng)和實時系統(tǒng)的特征和優(yōu)缺點。預(yù)習(xí)要求:作業(yè)布置:1、作業(yè):2、補充習(xí)題:<若沒有可以刪去>推薦參考書目、網(wǎng)站及閱讀材料:<若沒有可以刪去>實驗一:LINUX入門第3講〔第3周<注:線右側(cè)寫教學(xué)方法、實驗演示、新增補內(nèi)容、重要標(biāo)注、時間分配等>教學(xué)章節(jié):1.3操作系統(tǒng)的特征1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計教學(xué)目的及要求:1.掌握操作系統(tǒng)的功能和特征。2.了解分層式結(jié)構(gòu)和微內(nèi)核結(jié)構(gòu)。重點、難點:<注:重點和難點如果一致,則寫在一起,若不同則應(yīng)分開寫>OS的基本特征和功能。教學(xué)內(nèi)容:板書設(shè)計見PPT。<注:內(nèi)容每節(jié)課1-2頁為宜>復(fù)習(xí)引入:上節(jié)課學(xué)習(xí)了OS的引論,介紹了OS的發(fā)展過程,其中主要功能小節(jié)也是對本書的簡要的概括,需要同學(xué)們掌握。OS是系統(tǒng)軟件,對于這種大型的軟件,在開發(fā)的過程中,其軟件的結(jié)構(gòu)設(shè)計是怎么樣的發(fā)展過程,下面就來學(xué)習(xí):新課講授:1.3操作系統(tǒng)的特征采用多道程序設(shè)計技術(shù)的現(xiàn)代操作系統(tǒng)具有如下四個基本特征:并發(fā)、共享、虛擬、異步。其中并發(fā)和共享是OS的兩個最基本的特征。1.并發(fā)并行性:兩個或多個事件在同一時刻發(fā)生并發(fā)性:兩個或多個事件在同一時間間隔內(nèi)發(fā)生在多道程序系統(tǒng)〔單處理器中,宏觀上并行,微觀上串行〔交替執(zhí)行程序〔靜態(tài)實體不能并發(fā)執(zhí)行,為使多個程序并發(fā)執(zhí)行,引入進程。進程——在系統(tǒng)中能獨立運行并作為資源分配的基本單位,〔是活動實體?,F(xiàn)代OS中還引入一個比進程更小的單位——線程,此時,一個進程中可包含若干個線程,資源分配的基本單位雖仍然是進程,但獨立運行、獨立調(diào)度和分配處理機的基本單位卻是線程。2.共享在操作系統(tǒng)環(huán)境下,所謂共享是指系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)執(zhí)行的進程<線程>共同使用共享方式:互斥共享方式:資源分配后到釋放前,不能被其他進程所用,如打印機、變量、隊列等。臨界資源<獨占資源>:一段時間內(nèi)只允許一個進程訪問的資源同時訪問方式:在同一段時間內(nèi)可以被多個作業(yè)同時訪問。如可重入代碼,磁盤文件。宏觀并行微觀串行。并發(fā)和共享是OS的兩個最基本的特征,又互為存在的條件。3.虛擬〔是以并發(fā)和資源共享為前提虛擬——通過某種技術(shù)把一個物理實體變?yōu)槿舾蓚€邏輯上的對應(yīng)物。虛擬是操作系統(tǒng)管理系統(tǒng)資源的重要手段,可提高資源利用率。用于實現(xiàn)虛擬的技術(shù),稱為虛擬技術(shù)時分復(fù)用技術(shù):虛擬處理機、虛擬設(shè)備技術(shù)〔分時使用方式空分復(fù)用技術(shù):虛擬內(nèi)存、虛擬磁盤技術(shù)4.異步性〔是并發(fā)與共享的必然結(jié)果指進程的執(zhí)行順序和執(zhí)行時間的不確定性;指進程以人們不可預(yù)知的速度向前推進。進程的運行速度不可預(yù)知:多個進程并發(fā)執(zhí)行,"時走時停",不可預(yù)知每個進程的運行推進快慢;無論快慢,結(jié)果應(yīng)該相同。通過進程互斥和同步手段來保證;1.4操作系統(tǒng)的主要功能包括:處理機管理功能、存儲器管理功能、設(shè)備管理功能、文件管理功能、用戶接口1.4.1主要是對處理機的分配和運行進行管理。〔創(chuàng)建和撤銷進程<線程>,對諸進程<線程>的運行進行協(xié)調(diào),實現(xiàn)進程<線程>之間的信息交換,以及按照一定的算法把處理機分配給進程<線程>。主要功能包括:進程控制:為作業(yè)創(chuàng)建進程、撤銷已結(jié)束的進程,以及控制進程在運行過程中的狀態(tài)轉(zhuǎn)換進程同步:為多個進程<含線程>的運行進行協(xié)調(diào)〔協(xié)調(diào)方式:互斥和同步進程通信:用來實現(xiàn)在相互合作的進程之間的信息交換;調(diào)度:作業(yè)和進程的狀態(tài)切換,包括作業(yè)調(diào)度和進程調(diào)度存儲器管理功能存儲器管理為多道程序的運行提供良好的環(huán)境,方便用戶使用存儲器,提高存儲器的利用率以及能從邏輯上擴充內(nèi)存存儲器管理功能有:內(nèi)存分配:為每道程序分配內(nèi)存空間,提高存儲器的利用率,允許正在運行的程序申請附加的內(nèi)存空間;存儲保護:確保每道用戶程序都只在自己的內(nèi)存空間中運行,彼此互不干擾;地址映射<變換>:進程的邏輯地址到內(nèi)存物理地址的映射。內(nèi)存擴充:用虛擬存儲技術(shù)解決內(nèi)存容量不足的問題;請求調(diào)入功能頁面置換功能設(shè)備管理功能設(shè)備管理的主要任務(wù):完成用戶進程提出的I/O請求,為用戶進程分配其所需的I/O設(shè)備,提高CPU和I/O設(shè)備的利用率,提高I/O速度,方便用戶使用I/O設(shè)備。設(shè)備管理的功能有:緩沖管理:匹配CPU和外設(shè)的速度,提高兩者的利用率和并行操作程度;設(shè)備分配:根據(jù)用戶進程的I/O請求、系統(tǒng)的現(xiàn)有資源情況以及按照某種設(shè)備分配策略,為之分配其所需的設(shè)備;設(shè)備處理:設(shè)備驅(qū)動程序用于實現(xiàn)CPU和設(shè)備控制器之間的通信。設(shè)備獨立性和虛擬設(shè)備:1.4.4文件系統(tǒng)管理的主要任務(wù):對用戶文件和系統(tǒng)文件進行管理,以方便用戶使用,并保證文件的安全性。文件管理的功能有:文件存儲空間的管理:為每個文件分配必要的外存空間,提高外存的利用率,并能有助于提高文件系統(tǒng)的運行速度;——解決如何存放信息的問題目錄管理:為每個文件建立其目錄項,并對眾多的目錄項加以有效組織,實現(xiàn)方便的按名存取,能實現(xiàn)文件共享,提供快速的目錄查詢手段。<通過目錄方式來組織文件,以實現(xiàn)文件的按名存取>——解決信息檢索問題文件的讀/寫管理和保護:實現(xiàn)文件的讀寫操作,并提供有效的存取控制功能,保護文件的安全性?!鉀Q信息安全問題。OS與用戶之間的接口1.用戶接口〔提供給用戶使用〔1命令接口:用戶可通過該接口向作業(yè)發(fā)出命令以控制作業(yè)的運行。聯(lián)機用戶接口:由一組鍵盤操作命令和命令解釋程序組成脫機用戶接口:由一組作業(yè)控制語言JCL組成〔2圖形接口:2.程序接口〔提供給程序員在編程時使用為用戶程序在執(zhí)行中訪問系統(tǒng)資源而設(shè)置,由一組系統(tǒng)調(diào)用組成。1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計操作系統(tǒng)的結(jié)構(gòu):整體式〔無結(jié)構(gòu)、模塊化結(jié)構(gòu)、層次式結(jié)構(gòu)、微內(nèi)核結(jié)構(gòu)1、整體式OS結(jié)構(gòu)整體式系統(tǒng)是早期操作系統(tǒng)和一些較小的操作系統(tǒng)所采用的一種結(jié)構(gòu)模型。整個系統(tǒng)是一堆過程的集合,每個過程都可以隨便調(diào)用任意其它過程。采用這種結(jié)構(gòu)的操作系統(tǒng)不僅調(diào)試和維護不方便,而且其可讀性和可擴充性都較差。2、模塊化OS結(jié)構(gòu)〔關(guān)鍵問題:模塊的劃分和規(guī)定好模塊之間的接口模塊化程序設(shè)計技術(shù),是基于"分解"和"模塊化"原則來控制大型軟件的復(fù)雜度的。將OS按其功能劃分為若干個具有一定獨立性和大小的模塊。并規(guī)定好各模塊間的接口,各模塊之間能通過該接口實現(xiàn)交互。衡量模塊獨立性的兩個標(biāo)準(zhǔn):內(nèi)聚性和耦合度。模塊化OS結(jié)構(gòu)優(yōu)缺點優(yōu)點:提高設(shè)計的正確性、可理解性和可維護性增強可適應(yīng)性;加速開發(fā)過程缺點:模塊的劃分和接口的規(guī)定較困難模塊間還存在著復(fù)雜的依賴關(guān)系,是os結(jié)構(gòu)變得不夠清晰。〔在模塊化結(jié)構(gòu)設(shè)計中,各模塊的設(shè)計齊頭并進,無法尋找到一個可靠的決定順序,造成各種決定的"無序性"3、層次式結(jié)構(gòu)為了將模塊化中的"決定順序"無序性變?yōu)橛行蛐?引入了有序分層法,常采用自底向上法來鋪設(shè)這些中間層。層次式結(jié)構(gòu)是對模塊化結(jié)構(gòu)的一種改進。將一個操作系統(tǒng)分為若干個層次,每層又由若干個模塊組成,各層之間只存在著單向的依賴關(guān)系,即高層僅依賴于緊鄰它的底層。層次結(jié)構(gòu)的優(yōu)點:正確性有保證、便于系統(tǒng)維護、擴充層次結(jié)構(gòu)的缺點:模塊間需要通信機制、系統(tǒng)開銷大、效率低在OS結(jié)構(gòu)中,分層式結(jié)構(gòu)是最為成熟的一種OS結(jié)構(gòu),而20世紀(jì)90年代興起的微內(nèi)核結(jié)構(gòu)是最具有發(fā)展前途的OS結(jié)構(gòu)。補充:分層式結(jié)構(gòu)與模塊式結(jié)構(gòu)的主要區(qū)別在于:分層結(jié)構(gòu)中各模塊之間有序的。分層式結(jié)構(gòu)將各個功能模塊按它們的功能流圖的調(diào)用次序安排成若干層,各層之間的模塊不能像模塊式結(jié)構(gòu)那樣通過接口毫無規(guī)則地相互依賴、相互調(diào)用,而只能是單向調(diào)用,即每層中的模塊只能使用較低層模塊提供的功能和服務(wù)。因此在分層結(jié)構(gòu)中,模塊間的組織結(jié)構(gòu)和依賴關(guān)系更加清晰,這不僅增加系統(tǒng)的可讀性,同時還使每一層建立在可靠的基礎(chǔ)上,從而提高系統(tǒng)的可靠性。4、微內(nèi)核OS結(jié)構(gòu)微內(nèi)核結(jié)構(gòu)是指將C/S技術(shù)、面向?qū)ο蠹夹g(shù)用于基于微內(nèi)核技術(shù)的OS中所形成的結(jié)構(gòu)。微內(nèi)核的主要思想是:在操作系統(tǒng)內(nèi)核中只留下一些最基本的功能,而將其他服務(wù)盡可能地從內(nèi)核中分離出去。內(nèi)核的基本組成:中斷處理、進程調(diào)度、同步機制用若干個運行在用戶態(tài)下的進程〔即服務(wù)器進程來實現(xiàn),形成所謂的"客戶/服務(wù)器"模式。普通用戶進程〔即客戶進程可通過內(nèi)核向服務(wù)器進程發(fā)送請求,以取得操作系統(tǒng)的服務(wù)。C/S技術(shù)把OS分為兩個部分:一部分是用于提供各種服務(wù)的服務(wù)器另一部分是用于實現(xiàn)os最基本功能的內(nèi)核,其全部工作是處理C與S之間通信。優(yōu)點:易于擴充,易于移植、提高系統(tǒng)的可靠性、提供多種操作環(huán)境、適宜于分布計算模式、有助于多處理器系統(tǒng)的實現(xiàn)、支持實時任務(wù)缺點:消息傳遞方式增加開銷,使響應(yīng)變慢幾個商品化系統(tǒng):WindowsNT,NextStepXINU,OSF/11.3,WorkspaceOS,Chorus/MixV.4,acG3,QNX,CTOS舉例:微內(nèi)核的開放式系統(tǒng)環(huán)境、一個分布式系統(tǒng)中的客戶服務(wù)器模型在現(xiàn)代OS的設(shè)計中,常常還融入面向?qū)ο蟮某绦蛟O(shè)計技術(shù)。面向?qū)ο蠹夹g(shù),該技術(shù)是基于"抽象"和"隱蔽"原則來控制OS的復(fù)雜度。它利用被封裝的數(shù)據(jù)結(jié)構(gòu)和一組對數(shù)據(jù)結(jié)構(gòu)進行操作的過程來表示系統(tǒng)中的某個資源,這樣,可使資源的管理因一致而簡化。當(dāng)前廣泛使用的Windows2000操作系統(tǒng),就采用了微內(nèi)核的結(jié)構(gòu),同時還融入了面向?qū)ο蟮某绦蛟O(shè)計技術(shù)。具有面向?qū)ο蟮奶攸c:封裝性、繼承性、多態(tài)性微內(nèi)核的基本功能:通常都是一些最基本的功能,如進程管理、存儲器管理、進程間通信、低級I/O功能。教課小結(jié):預(yù)習(xí)要求:作業(yè)布置:第4講〔第4周<注:線右側(cè)寫教學(xué)方法、實驗演示、新增補內(nèi)容、重要標(biāo)注、時間分配等>教學(xué)章節(jié):第2章進程管理2.1進程的基本概念程序的順序執(zhí)行及其特征前趨圖程序的并發(fā)執(zhí)行及其特征進程的特征與狀態(tài)進程控制塊教學(xué)目的及要求:學(xué)習(xí)目的是使學(xué)生建立起進程的概念。進程是OS中最重要的基本概念,本章是全書中最重要的一章。要求掌握進程的基本概念,重點、難點:<注:重點和難點如果一致,則寫在一起,若不同則應(yīng)分開寫>進程的引入、特征、基本狀態(tài)、進程控制塊教學(xué)內(nèi)容:板書設(shè)計見PPT。<注:內(nèi)容每節(jié)課1-2頁為宜>復(fù)習(xí)引入:通過第一章的學(xué)習(xí),對操作系統(tǒng)有了整體上的認(rèn)識,以后的章節(jié)就是對各個部分的功能加以詳細(xì)的論述。新課講授:第2章進程管理思考問題:為什么要引入進程進程具有哪些基本特征進程具有哪些基本狀態(tài)進程控制塊的作用和內(nèi)容2.1進程的基本概念引入進程的目的是為了使多個程序能并發(fā)執(zhí)行。程序的順序執(zhí)行及其特征1.程序的順序執(zhí)行程序的順序執(zhí)行是指若干個程序或程序段之間必須嚴(yán)格按照某種先后次序來執(zhí)行,僅當(dāng)前一程序或程序段執(zhí)行完后,才能執(zhí)行后面的程序或程序段。例:每個程序有三個順序執(zhí)行的操作——I:輸入操作、C:計算操作、P:輸出操作2.程序順序執(zhí)行時的特征<1>順序性處理機的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。<2>封閉性程序一旦開始執(zhí)行,其計算結(jié)果不受外界因素的影響。即程序運行時獨占全機資源,資源的狀態(tài)〔除初始只有本程序才能改變它。<3>可再現(xiàn)性程序執(zhí)行的結(jié)果與它的執(zhí)行速度無關(guān)<即與時間無關(guān)>,而只與初始條件有關(guān)。前趨圖為了描述一個程序的各部分〔程序段、語句間的依賴關(guān)系,或是一個大的計算的各子任務(wù)間的因果關(guān)系,采用前驅(qū)圖方式。前趨圖是一個有向無循環(huán)圖<DAG>,用于描述程序段或進程之間執(zhí)行的先后次序關(guān)系。結(jié)點:描述一個程序段或進程,或一條語句。有向邊:結(jié)點之間的偏序或前趨關(guān)系""={<Pi,Pj>|在Pj開始前Pi必須完成},若<Pi,Pj>∈,可寫成PiPjPiPj:Pi必須在Pj開始之前完成則Pi是Pj的直接前趨,Pj是Pi的直接后繼初始結(jié)點:沒有前趨的結(jié)點終止結(jié)點:沒有后繼的結(jié)點例:具有九個結(jié)點的前驅(qū)圖:前趨關(guān)系:P1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6P8,P7P9,P8P9注意:前趨圖中絕對不能出現(xiàn)循環(huán)程序的并發(fā)執(zhí)行及其特征1.程序的并發(fā)執(zhí)行例:在系統(tǒng)中有n個作業(yè),每個作業(yè)都有三個處理步驟,輸入數(shù)據(jù)、處理、輸出,即Ii,Ci,Pi<i=1,2,3,...,n>。這些作業(yè)在系統(tǒng)中執(zhí)行時是對時間的偏序,有些操作必須在其它操作之前執(zhí)行,這是有序的,但有些操作是可以同時執(zhí)行的。2.程序并發(fā)執(zhí)行時的特征<1>間斷性在多道程序設(shè)計的環(huán)境下,程序是并發(fā)執(zhí)行的,它們?yōu)橥瓿梢豁椚蝿?wù)而相互合作,這些程序之間要共享系統(tǒng)的資源,形成了相互制約的關(guān)系。相互制約導(dǎo)致并發(fā)程序具有"執(zhí)行——暫停——執(zhí)行"這種間斷性的活動規(guī)律。<2>失去封閉性程序在并發(fā)執(zhí)行時,多道程序共享系統(tǒng)的資源,因而這些資源的狀態(tài)由多道程序來改變,程序運行失去封閉性。一程序的運行受到其他程序的影響。<3>不可再現(xiàn)性程序在并發(fā)執(zhí)行時,失去封閉性導(dǎo)致其失去可再現(xiàn)性。重復(fù)執(zhí)行時,雖執(zhí)行環(huán)境和初始條件相同,但結(jié)果卻不同?!布尤雽嵗M程的特征與狀態(tài)在計算機中,程序的并發(fā)執(zhí)行具有不可再現(xiàn)性。那么,如何使程序既能并發(fā)執(zhí)行,又具有可再現(xiàn)性呢?這就必須引入進程的概念,也就是說,引入進程的目的是為了使程序能夠正確地并發(fā)執(zhí)行。〔為什么進程實體卻能與其他進程并發(fā)執(zhí)行?1進程的特征與定義〔1進程的特征結(jié)構(gòu)性、動態(tài)性、并發(fā)性、獨立性、異步性①結(jié)構(gòu)性進程控制塊<PCB>+程序段+相關(guān)的數(shù)據(jù)段=進程實體。②動態(tài)性——進程是程序在處理機上的一次執(zhí)行過程。具有生命期,它必須由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷而消亡。是進程的一個最基本的特征。③并發(fā)性——多個進程實體同存于內(nèi)存中,在一段時間內(nèi)同時運行。以提高資源利用率。只有為程序創(chuàng)建進程后,多個程序才能正確地并發(fā)運行。并發(fā)是引入進程的目的,也是進程的另一個最基本的特征。④獨立性——進程實體是一個能獨立運行、獨立分配資源和獨立接受調(diào)度的基本單位,而程序則不是。⑤異步性——進程按各自獨立的、不可預(yù)知的速度向前推進?!?進程〔Process的定義進程是程序的一次執(zhí)行。進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時所發(fā)生的活動。進程是程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。進程的定義:進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。〔3進程與程序的區(qū)別進程是動態(tài)的,程序是靜態(tài)的進程是暫時的,程序是永久的進程與程序的組成不同:
進程包括程序、數(shù)據(jù)和進程控制塊〔即進程狀態(tài)信息進程與程序的對應(yīng)關(guān)系:
不是一一對應(yīng)。通過多次執(zhí)行,一個程序可對應(yīng)多個進程;通過調(diào)用關(guān)系,一個進程可包括多個程序。2.進程的三種基本狀態(tài)①就緒狀態(tài)<Ready>:進程已獲得了除CPU之外的所有資源,處于就緒態(tài)的進程有多個,它們存放在就緒隊列中。②執(zhí)行狀態(tài)<Running>:已獲得CPU的進程進入執(zhí)行狀態(tài)。③阻塞狀態(tài)<Blocked>:進程因發(fā)生某個事件〔如請求I/O、申請緩沖空間而暫停執(zhí)行的狀態(tài)。即進程的執(zhí)行受到阻塞進程的三種基本狀態(tài)以及各狀態(tài)之間的轉(zhuǎn)換關(guān)系對單個進程而言,任何時刻,它只能處于三種基本狀態(tài)之一,而隨著進程自身的推進和外界環(huán)境條件的變化,它的狀態(tài)可以動態(tài)地轉(zhuǎn)換:處于就緒狀態(tài)地進程,通過進程調(diào)度獲得CPU后,便從就緒狀態(tài)轉(zhuǎn)換成執(zhí)行狀態(tài);分時系統(tǒng)中,正在執(zhí)行地進程由于時間片用完而暫停執(zhí)行時,便從執(zhí)行狀態(tài)轉(zhuǎn)換成就緒狀態(tài);正在執(zhí)行地程序,由于等待某種事件地完成而無法繼續(xù)執(zhí)行時,便從執(zhí)行狀態(tài)轉(zhuǎn)換成阻塞狀態(tài);阻塞地進程所等待的事件完成后,便轉(zhuǎn)為就緒狀態(tài)。對整個系統(tǒng)而言,每個時刻允許同時有多個處于就緒和阻塞的進程,但對執(zhí)行狀態(tài)的進程,每個處理機最多只允許有一個。3.掛起狀態(tài)"掛起"的實質(zhì)是使進程不能繼續(xù)執(zhí)行,即使掛起后的進程處于就緒狀態(tài),它也不能參與對CPU的競爭。因此,被掛起的進程處于靜止?fàn)顟B(tài),相反,沒被掛起的進程則處于活動狀態(tài)。而且,處于靜止?fàn)顟B(tài)的進程只有通過"激活"動作,才能轉(zhuǎn)換成活動狀態(tài)。引起掛起狀態(tài)的原因:終端用戶的請求、父進程請求、負(fù)荷調(diào)節(jié)的需要、操作系統(tǒng)的需要"掛起"常被用在進程對換中,此時,掛起〔即換出進程可以騰出內(nèi)存空間給就緒進程使用;"掛起"還可用在其他場合,如用來調(diào)節(jié)系統(tǒng)的負(fù)荷、方便用戶考查自己的運行進程或父進程考查子進程、方便操作系統(tǒng)檢查運行中的資源使用情況或進行記帳等。<2>進程狀態(tài)的轉(zhuǎn)換①活動就緒靜止就緒〔掛起、激活②活動阻塞靜止阻塞〔掛起、激活③執(zhí)行靜止就緒〔掛起4.創(chuàng)建和終止?fàn)顟B(tài)〔1創(chuàng)建狀態(tài)①創(chuàng)建PCB,填寫必要的管理信息②轉(zhuǎn)入就緒狀態(tài)并插入就緒隊列中一般而言,此時的進程已擁有了自己的PCB,但進程自身還未進入主存,即創(chuàng)建工作尚未完成,進程還不能被調(diào)度運行,其所處的狀態(tài)就是創(chuàng)建狀態(tài)?!?終止?fàn)顟B(tài)①等待OS進行善后處理②將其PCB清零,并將PCB空間返還系統(tǒng)。進入終止態(tài)的進程以后不能再執(zhí)行,但在OS中依然保留一個記錄供其他進程收集,一旦其他進程完成了對終止?fàn)顟B(tài)進程的信息的提取后,OS將刪除該進程。思考問題:問題:PCB的作用,為什么說是進程存在的唯一標(biāo)志?進程控制塊為了描述和控制進程的運行,系統(tǒng)為每個進程定義了一個數(shù)據(jù)結(jié)構(gòu)——進程控制塊〔PCB。進程控制塊的作用存放進程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進程控制塊。它是進程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu)。PCB是進程實體的一個組成部分,在其中記錄了OS所需的、用于描述進程的當(dāng)前狀態(tài)以及控制進程的全部信息。其作用是將程序變成可并發(fā)執(zhí)行的進程。系統(tǒng)根據(jù)進程的PCB感知到一進程的存在,并對它進行控制,因此,進程控制塊是進程存在的唯一標(biāo)志。由于PCB要被系統(tǒng)頻繁訪問,它必須常駐內(nèi)存。在創(chuàng)建時,建立PCB,并伴隨進程運行的全過程,直到進程撤消而撤消。PCB就象我們的戶口。系統(tǒng)的所有PCB組織成鏈表或隊列,常駐內(nèi)存的PCB區(qū)。2.進程控制塊中的信息1>進程標(biāo)識符信息每個進程都必須有一個唯一的標(biāo)識符。另外,還可以用父進程的標(biāo)識符、子進程的標(biāo)識符來描述進程的家族關(guān)系。內(nèi)部標(biāo)識符:便于系統(tǒng)使用外部標(biāo)識符:便于用戶使用2>處理機狀態(tài)信息處理機狀態(tài)信息主要由處理機的各種寄存器中的內(nèi)容組成。處理機運行時的信息存放在寄存器中,當(dāng)被中斷時這些信息要存放在PCB中。通用寄存器、指令計數(shù)器、程序狀態(tài)字PSW、用戶棧指針3>進程調(diào)度和控制信息——用于進程調(diào)度和控制。主要包括進程狀態(tài)、優(yōu)先級、等待和使用CPU的時間總和、程序和數(shù)據(jù)的地址、進程同步和通信信息、資源清單和進程隊列指針等。3.進程控制塊的組織方式在一個系統(tǒng)中通常有許多PCB,稱為PCB集合。為了便于管理,系統(tǒng)必須用適當(dāng)?shù)姆绞綄CB組織起來,常用的方式有鏈接和索引方式。1>鏈接方式把具有同一狀態(tài)的PCB用其中的鏈接字鏈接成一個隊列。就緒隊列;若干個阻塞隊列;空白隊列2>索引方式系統(tǒng)根據(jù)所有進程的狀態(tài)建立幾張索引表,把各表的內(nèi)存首地址記錄在內(nèi)存的專用單元中。索引表的表目中記錄了相應(yīng)狀態(tài)的某個PCB在PCB表中的地址。其他方式:線性表或鏈表教課小結(jié):預(yù)習(xí)要求:作業(yè)布置:第5講〔第4周<注:線右側(cè)寫教學(xué)方法、實驗演示、新增補內(nèi)容、重要標(biāo)注、時間分配等>教學(xué)章節(jié):2.2進程控制進程的創(chuàng)建進程的終止進程的阻塞與喚醒進程的掛起與激活2.3進程同步進程同步的基本概念信號量機制教學(xué)目的及要求:了解進程控制的過程掌握進程間的相互關(guān)系,以及進程同步的有效機制信號量機制。重點、難點:信號量的物理意義教學(xué)內(nèi)容:板書設(shè)計見PPT。復(fù)習(xí)引入:上次課提及到進程的幾種狀態(tài)以及之間如何轉(zhuǎn)換,本次課將詳細(xì)介紹引起進程各種狀態(tài)的原因,以及相應(yīng)原語的創(chuàng)建過程。新課講授:2.2進程控制進程控制是進程管理中最基本的功能,它用于創(chuàng)建和撤銷進程,并對進程在整個生命周期中各種狀態(tài)之間的轉(zhuǎn)換進行有效控制。進程控制是OS的內(nèi)核通過原語來實現(xiàn)的。原語的作用是為了實現(xiàn)進程通信和控制,是由若干條指令組成的,用于完成一定功能的一個過程;原語的執(zhí)行具有原子性,即原語在執(zhí)行過程中不可分割,在執(zhí)行過程中不允許被中斷。許多系統(tǒng)調(diào)用就是原語。處理機運行時的兩種狀態(tài):核心態(tài)和用戶態(tài),〔1系統(tǒng)狀態(tài):也叫管態(tài)或核心態(tài),它具有較高的特權(quán),能執(zhí)行一切指令,訪問所有寄存器和存儲區(qū)。通常,OS內(nèi)核就運行在系統(tǒng)態(tài)下?!?用戶態(tài):也叫目態(tài),是一種具有較低特權(quán)的執(zhí)行狀態(tài)。它只能執(zhí)行規(guī)定的指令、訪問規(guī)定的寄存器和存儲區(qū)。通常用戶程序都運行在用戶態(tài)。用戶態(tài)時不可直接訪問受保護的OS代碼;核心態(tài)時執(zhí)行OS代碼,可以訪問全部進程空間通過這兩個狀態(tài)的劃分,可防止用戶程序破壞OS內(nèi)核代碼和數(shù)據(jù)。進程的創(chuàng)建1.進程圖描述進程的家族關(guān)系的有向樹〔結(jié)點:代表進程,根結(jié)點為該家族的祖先;有向邊:父子關(guān)系;樹:表示一個家族進程Pi創(chuàng)建了進程Pj,則Pi是Pj的父進程,Pj是Pi的子進程,用一條由進程Pi指向進程Pj的有向邊來描述。創(chuàng)建父進程的進程為祖先進程,由此形成進程樹,樹根為進程家族的祖先。提問:進程圖與前趨圖比較〔1前趨圖:描述的是任務(wù)之間的前趨關(guān)系,只有在前趨進程完成后,其后繼進程才能運行〔2進程圖:創(chuàng)建者和被創(chuàng)建者可以并發(fā)執(zhí)行,也可以父進程等待其所有子進程結(jié)束后再執(zhí)行,這完全取決于創(chuàng)建原語和創(chuàng)建者的需要。2.引起創(chuàng)建進程的事件在多道程序環(huán)境中,只有進程才能在系統(tǒng)中運行。導(dǎo)致創(chuàng)建進程的典型事件有:〔分時系統(tǒng)的用戶登錄、〔批處理系統(tǒng)中的作業(yè)調(diào)度、提供服務(wù)———這三種情況是由系統(tǒng)內(nèi)核為其創(chuàng)建一個新進程。應(yīng)用請求——應(yīng)用程序本身也可以根據(jù)需要去創(chuàng)建新的進程〔自己創(chuàng)建一個新進程3.進程的創(chuàng)建操作系統(tǒng)發(fā)現(xiàn)要求創(chuàng)建新進程的事件后,調(diào)用進程創(chuàng)建原語Creat<>創(chuàng)建新進程。創(chuàng)建過程:<1>申請空白PCB:申請進程標(biāo)識符,并從PCB集合中索取一個空白PCB<2>為新進程分配資源:為新進程的程序和數(shù)據(jù)以及用戶棧分配必要的內(nèi)存空間。<3>初始化進程控制塊:初始化標(biāo)識信息、處理機狀態(tài)信息、進程調(diào)度和控制信息。<4>將新進程插入就緒隊列進程的終止當(dāng)進程完成任務(wù)或遇到異常情況和外界干預(yù)需要結(jié)束時,應(yīng)通過進程終止原語來終止進程。終止進程的實質(zhì)是收回PCB。1.引起進程終止的事件1>正常結(jié)束——用于表示進程已經(jīng)運行完成的指示2>異常結(jié)束——運行間,某些錯誤和故障而迫使進程終止越界錯誤、保護錯、非法指令、特權(quán)指令錯、運行超時等3>外界干預(yù)——并非異常事件,而應(yīng)外界的請求而終止運行操作員或操作系統(tǒng)干預(yù)、父進程請求、父進程中止2.進程的終止過程<1>找到要終止進程的PCB——根據(jù)被終止進程的標(biāo)識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程的狀態(tài)。<2>若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,置調(diào)度標(biāo)志為真,用于指示該進程被終止后應(yīng)重新進行調(diào)度。<3>終止屬于該進程的所有子孫進程——若該進程有子孫進程,應(yīng)將其所有子孫進程予以終止,以防他們成為不可控的進程。<4>釋放終止進程所擁有的全部資源——將被終止進程所擁有的全部資源,或歸還其父進程,或歸還系統(tǒng)。<5>將終止進程移出它所在的隊列并收回PCB——將被終止進程的PCB從所在隊列或鏈表中移出,等待其他程序搜索信息進程的阻塞與喚醒1.引起進程阻塞和喚醒的事件1>新數(shù)據(jù)尚未到達(dá)2>無新工作可做3>請求系統(tǒng)服務(wù)4>啟動某種操作當(dāng)正在執(zhí)行的進程需要等待某種事件的完成或本身無新工作可做時,應(yīng)調(diào)用阻塞原語將自己從執(zhí)行狀態(tài)轉(zhuǎn)換為阻塞狀態(tài)2.進程阻塞過程——是進程本身的一種主動行為調(diào)用阻塞原語阻塞自己,中止該進程的執(zhí)行,將PCB中的狀態(tài)改為阻塞,并加入到阻塞隊列中;然后轉(zhuǎn)進程調(diào)度,將處理機分配給另一進程,并進行進程切換以及處理機狀態(tài)的保護與重新設(shè)置。3.進程喚醒過程阻塞進程等待的事件發(fā)生,有關(guān)進程調(diào)用喚醒原語把等待該事件的進程喚醒。喚醒原語的執(zhí)行:把阻塞進程從等待該事件的阻塞隊列中移出,將其PCB中的現(xiàn)行狀態(tài)改為就緒,將PCB插入到就緒隊列中。阻塞原語與喚醒原語作用相反,成對使用。注意:阻塞是進程自己阻塞自己的,而進程喚醒不是自己喚醒自己,它需要另一進程來實現(xiàn)。進程的掛起與激活1.進程的掛起當(dāng)出現(xiàn)引起進程掛起的事件時,系統(tǒng)利用掛起原語將指定進程或處于阻塞的進程掛起。掛起原語的執(zhí)行:檢查被掛起進程的狀態(tài),若處于活動就緒,則改為靜止就緒,若處于活動阻塞,則改為靜止阻塞,將該進程PCB復(fù)制到內(nèi)存指定區(qū)域,若掛起的進程正在執(zhí)行,則重新進行進程調(diào)度。如果掛起是為了對換,則在掛起進程時還必須將它換出到外存中。2.進程的激活過程當(dāng)發(fā)生激活進程的事件時,系統(tǒng)利用激活原語將指定進程激活。激活原語先將進程從外存調(diào)入內(nèi)存,檢查該進程的狀態(tài),若處于靜止就緒,則改為活動就緒,若處于靜止阻塞,則改為活動阻塞。若進程轉(zhuǎn)換成活動就緒狀態(tài),而系統(tǒng)又采用搶占調(diào)度策略,則應(yīng)檢查該進程是否有權(quán)搶占CPU,若有則應(yīng)進行進程調(diào)度。同樣,若掛起是為了對換,則在激活被掛起的進程時還必須將它調(diào)入內(nèi)存。2.3進程同步思考問題:引入進程同步的目的臨界資源和臨界區(qū)引入進程同步:OS引入進程提高了資源利用率和系統(tǒng)吞吐量,但由于進程的異步性導(dǎo)致了系統(tǒng)混亂,尤其爭用臨界資源時,〔引用實例:當(dāng)多個進程去爭用一臺打印機時,有可能使多個進程的輸出結(jié)果交織在一起難于區(qū)分。為此,OS必須引入某種機制,即進程的同步機制〔進程同步。進程同步是指對多個相關(guān)進程在執(zhí)行次序上進行協(xié)調(diào),它的目的是使系統(tǒng)中諸進程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。用來實現(xiàn)同步的機制被稱作同步機制。進程同步的基本概念在多道程序的環(huán)境下:所有進程都是相互獨立的、進程以異步方式并發(fā)執(zhí)行,致使進程在活動中會相互制約1.兩種制約關(guān)系直接:相互制約關(guān)系源于進程合作,表現(xiàn)為:進程進程〔同步間接:相互制約關(guān)系源于資源共享,表現(xiàn)為:進程資源進程〔互斥〔1同步同步是進程間共同完成一項任務(wù)時直接發(fā)生相互作用的關(guān)系同步舉例:輸入進程和計算進程通過單緩沖區(qū)來協(xié)調(diào)工作同步進程間具有合作關(guān)系在執(zhí)行時間上必須按一定的順序協(xié)調(diào)進行〔2互斥互斥是并發(fā)執(zhí)行的多個進程由于競爭同一資源而產(chǎn)生的相互排斥的關(guān)系互斥進程彼此在邏輯上是完全無關(guān)的它們的運行不具有時間次序的特征2.臨界資源一次僅允許一個進程使用的共享資源,如果多個進程同時使用這些資源,則有可能造成系統(tǒng)的混亂,如:打印機,多個進程同時使用一臺打印機,將使其輸出結(jié)果交織在一起,難于區(qū)分;又如共享變量,多個進程同時使用一個共享變量,會使結(jié)果具有不可再現(xiàn)性。3.臨界區(qū)〔如何保證諸進程互斥地訪問臨界資源每個進程中訪問臨界資源的那段代碼叫臨界區(qū)。對欲訪問的臨界資源進行檢查,………………進入?yún)^(qū)若此刻未被訪問,設(shè)正在訪問的標(biāo)志訪問臨界資源………………臨界區(qū)將正在訪問的標(biāo)志恢復(fù)為未被訪問的標(biāo)志……退出區(qū)其余部分………………剩余區(qū)為了使多個進程能有效地共享臨界資源,并使程序的執(zhí)行具有可再現(xiàn)性,系統(tǒng)必須保證它們互斥地使用臨界資源,即保證它們互斥地進入自己地臨界區(qū)。如果一進程已進入臨界區(qū)使用臨界資源,另一企圖進入臨界區(qū)使用同一臨界資源的進程便必須等待,直到前一進程退出臨界區(qū)為止。不難看出,互斥的實質(zhì)就是同步,互斥是同步的一種特殊形式。4.同步機制應(yīng)遵循的規(guī)則為實現(xiàn)進程互斥地進入自己地臨界區(qū),采用同步機制來協(xié)調(diào)各進程間地運行??臻e讓進-臨界資源空閑時,應(yīng)允許一個請求進入臨界區(qū)的進程立即進入自己的臨界區(qū),以便有效地利用資源。忙則等待——當(dāng)臨界資源正被訪問時,其他要求進入臨界區(qū)地進程必須等待,以保證對臨界資源地互斥使用。有限等待——任何要求訪問臨界資源的進程應(yīng)能在有限的時間內(nèi)進入自己的臨界區(qū),以免"死等"讓權(quán)等待——不能進入臨界區(qū)的進程應(yīng)立即釋放CPU,以免"忙等"信號量機制思考問題:信號量的含義〔信號量的P、V操作如何實現(xiàn);各種信號量機制的特點為了實現(xiàn)同步,OS引入多種管理機制,其中信號量機制是最有效的。1965年荷蘭Dijkstra提出的進程同步工具。〔這個Dijkstra,就是那個提出"goto有害論"的Dijkstra,就是那個提出信號量和PV原語,解決了有趣的"哲學(xué)家聚餐"問題的Dijkstra,那個Dijkstra最短路徑算法的創(chuàng)造者。曾在1972年獲得過素有計算機科學(xué)界的諾貝爾獎之稱的圖靈獎信號量代表可用資源實體的數(shù)量。信號量又叫信號燈〔semaphore,是表示資源的實體,是一個與隊列有關(guān)的整型變量,除初值外其值僅能由P、V原語操作來改變。操作系統(tǒng)利用信號量對進程和資源進行控制和管理。公用〔互斥信號量:用于實現(xiàn)進程之間的互斥,初值為1,它所聯(lián)系的一組并發(fā)進程均可對其實施P、V操作;除初值外,信號量的值僅由P、V操作改變P、V分別代表荷蘭語的"等待"Wait,"發(fā)信號"SignalP、V操作原語—P操作〔wait原語申請一個單位資源—V操作〔signal原語釋放一個單位資源1.整型信號量整型量,除初始化外,僅能通過兩個原子操作來訪問。Wait操作wait<S>: WhileS<=0dono-op;S:=S-1;Signal操作signal<S>: S:=S+1;Wait、Signal操作是原子操作,不可中斷。整型信號量的主要問題是,只要S<=0,wait操作就會不斷地測試,因而,沒能做到"讓權(quán)等待"2.記錄型信號量整型信號量未遵循"讓權(quán)等待"原則,導(dǎo)致"忙等"。記錄型信號量:一般是由兩個成員組成的數(shù)據(jù)結(jié)構(gòu),其中一個成員是整型變量,表示該信號量的值,另一個是指向PCB的指針。引入整型變量value<代表資源數(shù)目>、進程鏈表L<鏈接所有等待進程>記錄型數(shù)據(jù)結(jié)構(gòu):typesemaphore=recordvalue:integer;L:listofPCB;end;信號量的值是與相應(yīng)資源的使用情況有關(guān)的。當(dāng)它的值大于0時,表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于0時,則其絕對值表示等待使用該資源的進程數(shù),即在該信號量隊列上排隊的PCB的個數(shù)。wait<S>:S.value:=S.value-1;ifS.value<0thenblock<S,L>當(dāng)S.value<0時表示該類資源已分配完畢,進程應(yīng)調(diào)用block原語自我阻塞,放棄處理機,插入到鏈表S.L中。signal<S>:S.value:=S.value+1;ifS.value<=0thenwakeup<S,L>若加1后仍是S.value<=0,則表示在信號量鏈表中仍有等待該資源的進程被阻塞,應(yīng)調(diào)用wakeup原語,將S.L鏈表中的第一個等待進程喚醒。前面介紹的進程互斥問題,屬于多個進程共享一個臨界資源。而AND型信號量是為了解決多個進程共享多個臨界資源。3.AND型信號量AND同步機制的基本思想:將進程在整個運行過程中需要的所有資源,一次性全部分配給進程,待進程使用完后再一起釋放。只要尚有一個資源未能分配給進程,其他所有可能為之分配的資源,也不分配給它,即對臨界資源的分配采取原子操作。4.信號量集一般信號量集的幾種特殊情況:Swait<S,d,d>,只有一個信號量S,允許每次申請d個資源,若現(xiàn)有資源數(shù)少于d,不予分配。Swait<S,1,1>,蛻化為一般的記錄型信號量<S>1時>或互斥信號量<S=1時>。Swait<S,1,0>,當(dāng)S>=1時,允許多個進程進入某特定區(qū),當(dāng)S變?yōu)?后,阻止任何進程進入特定區(qū),相當(dāng)于可控開關(guān)。教課小結(jié):預(yù)習(xí)要求:作業(yè)布置:實驗二Linux進程控制第6講〔第5周教學(xué)章節(jié):信號量的應(yīng)用實例分析教學(xué)目的及要求:要求掌握信號量和管程機制的應(yīng)用重點、難點:信號量機制及其應(yīng)用教學(xué)內(nèi)容:板書設(shè)計見PPT。復(fù)習(xí)引入:總結(jié):信號量的物理意義問題:信號量的物理含義以及每次wait和signal操作又分別意味什么一般說來,信號量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)S>0時,其值表示可用資源的數(shù)量,執(zhí)行一次Wait操作意味著請求分配一個單位的資源;若S<=0,表示已無資源,申請資源的進程被阻塞,并排入信號量S的等待隊列中,執(zhí)行一次Signal操作,意味著釋放一個單位的資源。新課講授:信號量的應(yīng)用1.利用信號量實現(xiàn)進程互斥為使多個進程能互斥地訪問某個臨界資源,只需為該資源設(shè)置一互斥信號量mutex,初值為1,然后將訪問該資源的臨界區(qū)置于wait<mutex>和signal<mutex>之間。利用信號量實現(xiàn)互斥的說明為臨界資源設(shè)置一個互斥信號量mutex,其初值為1在每個進程中將臨界區(qū)代碼置于Wait<mutex>和Signal<mutex>原語之間必須成對使用Wait和Signal原語:遺漏Wait原語則不能保證互斥訪問,遺漏Signal原語則不能在使用臨界資源之后將其釋放〔給其他等待的進程Wait、Signal原語不能次序錯誤、重復(fù)或遺漏2.把信號量作為進程間的同步工具〔實現(xiàn)前驅(qū)關(guān)系若pi是pj的直接前趨,則可設(shè)置一個初值為0的公用信號量S,并將signal<S>操作放在pi后,而在pj前插入wait<S>操作,以保證pi在pj開始執(zhí)行之前完成。舉例:設(shè)有兩個并發(fā)執(zhí)行的進程P1和P2,P1中有語句S1,P2中有語句S2,希望在S1執(zhí)行后再執(zhí)行S2。使進程P1和P2共享一個公用信號量S,并賦予其初值為0。進程P1:S1;signal<S>;進程P2:wait<S>;S2;例一:供者和用者對緩沖區(qū)的同步設(shè)2個信號量:empty——緩沖區(qū)是否為空〔初值為1full——緩沖區(qū)是否為滿〔初值為0.供者進程L1:Wait〔empty將信息送入緩沖區(qū);Signal〔fullgotoL1用者進程L2:Wait〔full從緩沖區(qū)取出信息;Signal〔emptygotoL2.在現(xiàn)實生活中,同步的例子也比比皆是。例二:在一輛公交車上,司機和售票員各行其職,獨立工作。司機負(fù)責(zé)開車和到站停車;售票員負(fù)責(zé)售票和開關(guān)車門。但兩者需要密切配合、協(xié)調(diào)一致。即當(dāng)司機駕駛的車輛到站并把車輛停穩(wěn)后,售票員打開車門,讓乘客上下車,然后關(guān)好車門,這時司機繼續(xù)開車行駛。此即典型的同步關(guān)系!設(shè)司機進程設(shè)置一信號量run,用于判斷司機能否進行工作,初值為0;售票員進程設(shè)置一個信號量stop,用于判斷是否停車,售票員是否能夠開車門,初值為0;.司機:RepeatP<run>;啟動車輛;正常行車;到站停車;V<stop>;Untilfalse;售票員:Repeat上乘客;關(guān)車門;V<run>;售票;P<stop>;開車門;下乘客;Untilfalse;.關(guān)于信號量實現(xiàn)同步的說明分析進程間的制約關(guān)系,確定信號量的種類。信號量的初值與相應(yīng)資源的數(shù)量有關(guān),也與P、V操作在程序代碼中出現(xiàn)的位置有關(guān)。同一信號量的P、V操作要成對出現(xiàn),但它們分別在不同的進程代碼中。把信號量視為某種類型的共享資源的剩余個數(shù),實現(xiàn)對一類共享資源的訪問。例:某超市門口為顧客準(zhǔn)備了100輛手推車,每位顧客在進去買東西時取一輛推車,在買完東西結(jié)完帳以后再把推車還回去。試用P、V操作正確實現(xiàn)顧客進程的同步互斥關(guān)系。分析:把手推車視為某種資源,每個顧客為一個要互斥訪問該資源的進程。解:semaphores_cartnum;//空閑的手推車數(shù)量,初值為100voidconsumer<void>//顧客進程{p<s_cartnum>;買東西;結(jié)帳;v<s_cartnum>;}關(guān)于信號量的進一步說明同步和互斥這兩種制約關(guān)系的區(qū)別:進程的互斥是進程間競爭共享資源的使用權(quán),這種競爭沒有固定的必然聯(lián)系;而進程同步時,涉及到共享資源的并發(fā)進程之間一種必然的依賴關(guān)系。用P、V操作解決進程并發(fā)問題時首先應(yīng)確定問題是屬于進程互斥還是進程同步,或是互斥與同步的混合問題,然后根據(jù)共享資源的數(shù)量以及使用共享資源的規(guī)則正確的定義信號量及其初值。如果用于互斥,只要用一個信號量與一組相關(guān)臨界區(qū)聯(lián)系起來,信號量的初值定義為"1"。每個進程要進入臨界區(qū)之前調(diào)用P操作,測試自己是否可以立即進入臨界區(qū);執(zhí)行完臨界區(qū)的代碼后,調(diào)用V操作表示自己退出臨界區(qū)。①對于兩個并發(fā)進程,S只有1、0、-1三個取值:s=1:無進程進入臨界區(qū);s=0:有一個進程進入臨界區(qū);s=-1:有一個進程在臨界區(qū),另一個進程等待進入臨界區(qū)。②對于n個并發(fā)進程,信號量S可取值的范圍是:
1~-<n-1>,當(dāng)S<0時,表示有一個進程已進入臨界區(qū),而且還有|S|個進程正在等待進入臨界區(qū),它們處于等待隊列中。4如果用于同步,常稱為同步〔私用、資源信號量,每個信號量與一個消息對應(yīng),根據(jù)各個消息量的物理含義確定初值,初始值可以為0或為某個正整數(shù)n〔視資源數(shù)而定。進程通過調(diào)用P操作來測定自己需要的消息是否到達(dá),通過調(diào)用V操作把其他進程需要的消息發(fā)送出去。實例分析:教課小結(jié):預(yù)習(xí)要求:作業(yè)布置:1、作業(yè):2、補充習(xí)題:<若沒有可以刪去>推薦參考書目、網(wǎng)站及閱讀材料:<若沒有可以刪去>第7講〔第7周<注:線右側(cè)寫教學(xué)方法、實驗演示、新增補內(nèi)容、重要標(biāo)注、時間分配等>教學(xué)章節(jié):管程機制2.4經(jīng)典進程的同步問題生產(chǎn)者——消費者問題〔是最著名的進程同步問題實例分析教學(xué)目的及要求:用P、V操作解決進程同步問題重點、難點:<注:重點和難點如果一致,則寫在一起,若不同則應(yīng)分開寫>經(jīng)典進程的同步問題教學(xué)內(nèi)容:板書設(shè)計見PPT。<注:內(nèi)容每節(jié)課1-2頁為宜>2.3.4管程<monitor>管程的引入:用信號量可實現(xiàn)進程間的同步,但由于同步操作wait<S>和signal<S>分散在各個進程中,并遍布整個程序。這不僅給系統(tǒng)的管理和程序的維護和修改帶來了麻煩,而且還會因同步操作的使用不當(dāng)造成死鎖。為了解決上述問題,又產(chǎn)生了一種新的進程同步工具——管程。信號量同步的缺點同步操作分散:信號量機制中,同步操作分散在各個進程中,使用不當(dāng)就可能導(dǎo)致各進程死鎖;易讀性差:要了解對于一組共享變量及信號量的操作是否正確,必須通讀整個系統(tǒng)或者并發(fā)程序;不利于修改和維護:各模塊的獨立性差,任一組變量或一段代碼的修改都可能影響全局;正確性難以保證:操作系統(tǒng)或并發(fā)程序通常很大,很難保證這樣一個復(fù)雜的系統(tǒng)沒有邏輯錯誤;管程的基本概念1973年,由Hoare和Hanson所提出;其基本思想是把信號量及其操作原語封裝在一個對象內(nèi)部。即:將共享變量以及對共享變量能夠進行的所有操作集中在一個模塊中。〔1管程的定義:管程是關(guān)于共享資源的數(shù)據(jù)結(jié)構(gòu)及一組針對該資源的操作過程所構(gòu)成的軟件模塊?;舅枷耄菏前研盘柫考捌洳僮髟Z封裝在一個對象內(nèi)部,即:集中在一個模塊中。〔2優(yōu)點:管程可增強模塊的獨立性:系統(tǒng)按資源管理的觀點分解成若干模塊,用數(shù)據(jù)表示抽象系統(tǒng)資源,使同步操作相對集中,從而增加了模塊的相對獨立性引入管程可提高代碼的可讀性,便于修改和維護,正確性易于保證:采用集中式同步機制。一個操作系統(tǒng)或并發(fā)程序由若干個這樣的模塊所構(gòu)成,一個模塊通常較短,模塊之間關(guān)系清晰。管程的組成名稱:數(shù)據(jù)結(jié)構(gòu)說明:一組局部于管程的共享變量操作原語:對共享變量進行操作的一組原語過程〔程序代碼初始化代碼:對控制變量進行初始化的代碼對共享變量和臨界資源進行操作的一組原語過程〔程序代碼,是訪問該管程的唯一途徑。這些原語本身是互斥的,任一時刻只允許一個進程去調(diào)用,其余需要訪問的進程就等待。TYPEmonitor_name=MONITOR;共享變量說明;procedure過程名〔形參表;過程局部變量說明; begin語句序列; end;function函數(shù)名〔形參表:值類型;函數(shù)局部變量說明;begin語句序列;end;begin共享變量初始化語句序列;end;管程具有以下特點:局部于管程的數(shù)據(jù)結(jié)構(gòu),僅被局部于管程的過程訪問。局部于管程的過程,也僅能訪問管程內(nèi)的數(shù)據(jù)結(jié)構(gòu)。任何進程只能通過調(diào)用管程提供的過程入口進入管程任一時刻,最多只能有一個進程在管程中執(zhí)行,管程〔相當(dāng)于圍墻把共享變量和對它進行操作的若干過程圍起來。5.條件變量<condition>條件變量的引入:在任何時刻,最多只有一個進程在管程中執(zhí)行,因此用管程很容易實現(xiàn)互斥,只要將需要互斥訪問的資源用數(shù)據(jù)結(jié)構(gòu)來描述,并將該數(shù)據(jù)結(jié)構(gòu)放入管程中便可。若要用管程來實現(xiàn)同步,則在相應(yīng)條件不滿足時〔如臨界資源得不到時必須能夠?qū)⒃诠艹虄?nèi)執(zhí)行的進程阻塞。由于阻塞的原因不同,為了將他們區(qū)分開,引入局部于管程的條件變量。每個條件變量表示一種等待原因,并不取具體數(shù)值--相當(dāng)于每個原因?qū)?yīng)一個隊列。同步操作原語wait和signal:針對條件變量x,執(zhí)行x.wait的進程將自己阻塞在x隊列中,x.signal將x隊列中的一個進程喚醒。wait操作。如x.wait用來將執(zhí)行進程掛到與條件變量x相應(yīng)的等待隊列上;signal操作。x.signal用來喚醒與x相應(yīng)的等待隊列上的一個進程。值得注意的是,若沒有等待進程,則x.signal不起任何作用。這與信號量機制中的signal操作不同。6.管程與進程的異同設(shè)置的目標(biāo)不同進程實現(xiàn)系統(tǒng)并發(fā);管程解決共享資源的互斥使用系統(tǒng)管理數(shù)據(jù)結(jié)構(gòu)不同進程私有數(shù)據(jù)結(jié)構(gòu)PCB;管程公共數(shù)據(jù)結(jié)構(gòu)〔等待隊列管程被進程調(diào)用管程是OS的固有成分,無創(chuàng)建和撤消2.4經(jīng)典進程的同步問題生產(chǎn)者——消費者問題〔是最著名的進程同步問題思考問題:該問題用于解決什么問題的如何實現(xiàn)互斥如何實現(xiàn)同步對程序的閱讀方式問題的描述:問題的描述:一組生產(chǎn)者與一組消費者,它們共享一個有界緩沖池,生產(chǎn)者向池中投入產(chǎn)品,消費者從中取出產(chǎn)品。假定在生產(chǎn)者和消費者之間的公用緩沖池具有n個緩沖區(qū),每個緩沖區(qū)只能存放一個類型為item的產(chǎn)品,而所有的生產(chǎn)者和消費者是相互等效的。生產(chǎn)者進程和消費者進程都以異步方式運行,但它們之間必須保持同步。生產(chǎn)者——消費者問題實際上是相互合作的進程關(guān)系的一種抽象。比如輸入進程和計算進程、計算進程和打印進程都是生產(chǎn)者——消費者問題的反映,因此,該問題具有很大的實用價值。分析:1實現(xiàn)互斥緩沖池是臨界資源,一次只允許一個生產(chǎn)者投入消息,或者一個消費者從中取出消息,即生產(chǎn)者和消費者之間都必須互斥使用緩沖池。所以必須設(shè)置互斥信號量mutex——它代表緩沖池資源,用于實現(xiàn)諸進程對緩沖池的互斥使用,其初始值為1。2實現(xiàn)同步A.只有緩沖池中至少有一個緩沖區(qū)是空時,生產(chǎn)者才能把消息放入緩沖區(qū);否則生產(chǎn)者必須等待。為了滿足此同步條件,設(shè)置一個資源信號量empty,它代表緩沖池中空緩沖區(qū)的數(shù)量,初始值為n,表示整個緩沖池為空。這個資源是生產(chǎn)者進程所擁有,生產(chǎn)者進程可以申請該資源并對它施加P操作,而消費者進程對它實施V操作。B.只有在緩沖池中至少有一個緩沖區(qū)已存入消息后,消費者才能從中提取消息;否則消費者必須等待。同樣為了滿足此同步條件,設(shè)置一個資源信號量full,它代表緩沖池中滿緩沖區(qū)的數(shù)量,初始值為0,當(dāng)其值為n時,整個緩沖池為滿。這個資源是消費者進程所擁有,消費者進程可以申請該資源并對它施加P操作,而生產(chǎn)者進程對它實施V操作。具體的算法描述略。<用記錄型信號量和AND信號量描述>注意:1.每個程序中用于實現(xiàn)互斥的wait<mutex>和signal<mutex>必須成對地出現(xiàn)。2.對資源信號量empty和full的wait和signal操作,同樣需要成對地出現(xiàn),但處于不同的程序中。3.在每個程序中的多個wait操作順序不能顛倒。應(yīng)先執(zhí)行對資源信號量的wait操作,再執(zhí)行對互斥信號量的wait操作,否則可能引起進程死鎖。利用管程解決生產(chǎn)者-消費者問題在利用管程方法來解決生產(chǎn)者——消費者問題時,首先便是為它們建立一個管程,并明名為Producer-Consumer,或簡稱為PC。其中,包含兩個程:put<item>過程:將生產(chǎn)的消息投放到緩沖池中,:當(dāng)count>或=n時,表示緩沖池已滿,生產(chǎn)者需等待,等待緩沖池不全滿條件成立。get<item>過程:消費者利用該過程從緩沖池中取得一個消息,當(dāng)count<或=n時,表示緩沖池中已無可用消息,消息者應(yīng)等待。PC管程可描述如下:條件變量notfull、notempty分別對應(yīng)于緩沖池不全滿、緩沖池不全空兩個條件Typeproducer-consumer=monitor變量定義;.Procedureentryput<item>BeginIfcount>或=nthennotfull.wait;//等待緩沖池不全滿條件成立……投放數(shù)據(jù)Ifnotempty.queuethennotempty.signal;//緩沖池不全空條成立EndProcedureentryget<item>BeginIfcount<或=0thennotempty.wait;//等待緩沖池不全空條件成立……取數(shù)據(jù)Ifnotfull.queuethennotfull.signal;//緩沖池不全滿條件成立EndBeginin:=out:=0;count:=0;end.在利用管程解決生產(chǎn)者——消費者問題時,其中的生產(chǎn)者和消費者可描述為:.producer:beginrepeatproduceaniteminnextp;PC.put<item>;Untilfalse;EndConsumer:beginRepeatPC.get<item>;Consumetheiteminnextc;Untilfalse;End.實例分析例一:生產(chǎn)圍棋的工人不小心把相等數(shù)量的黑子和白子混裝載一個箱子里,現(xiàn)要用自動分揀系統(tǒng)把黑子和白子分開,該系統(tǒng)由兩個并發(fā)執(zhí)行的進程組成,功能如下:
〔1進程A專門揀黑子,進程B專門揀白子;
〔2每個進程每次只揀一個子,當(dāng)一個進程在揀子時不允許另一個進程去揀子;由于進程A和進程B要互斥進入箱子去揀棋子,箱子是兩個進程的公有資源,所以設(shè)置一個信號量mutex,其值取決于公有資源的數(shù)目,由于箱子只有一個,mutex的初值就設(shè)為1。.processA……P<mutex>;
揀黑子;
V<mutex>;
……processB
……P<mutex>;
揀白子;
V<mutex>;
…….〔3當(dāng)一個進程揀了一個棋子〔黑子或白子以后,必讓另一個進程揀一個棋子〔黑子或白子。對于進程A可設(shè)置一個私有信號量black,該私有信號量用于判斷進程A是否能去揀黑子,初值為1。對于進程B同樣設(shè)置一個私有信號量white,該私有信號量用于判斷進程B是否能去揀白子,初值為0。當(dāng)然你也可以設(shè)置black初值為0,white初值為1。.processA
……P<black>;
揀黑子;
V<white>;processB
……P<white>;
揀白子;
V<black>;…….例二桌上有一空盤,允許存放一只水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤空時一次只能放一只水果供吃者取用,請用P、V原語實現(xiàn)爸爸、兒子、女兒三個并發(fā)進程的同步。應(yīng)設(shè)置三個信號量plate、orange、apple,信號量plate表示盤子是否為空,其初值為l;信號量orange表示盤中是否有桔子,其初值為0;信號量apple表示盤中是否有蘋果,其初值為0。.father<>……P<plate>;將水果放入盤中;if〔放入的是桔子V<orange>;
elseV<apple>;
……son<>
……
P<orange>;
從盤中取出桔子;
V<plate>;
吃桔子;
……daughter<>
……
P<apple>;
從盤中取出蘋果;
V<plate>;
吃蘋果;
…….例三設(shè)有一臺計算機,有兩條I/O通道,分別接一臺卡片輸入機和一臺打印機??ㄆ瑱C把一疊卡片逐一輸入到緩沖區(qū)B1中,加工處理后再搬到緩沖區(qū)B2中,并在打印機上打印,問:①系統(tǒng)要設(shè)幾個進程來完成這個任務(wù)?各自的工作是什么?②這些進程間有什么樣的相互制約關(guān)系?③用P、V操作寫出這些進程的同步算法信號量含義及初值:B1full——緩沖區(qū)B1滿,初值為0;B1empty——緩沖區(qū)B1空,初值為1;B2full——緩沖區(qū)B2滿,初值為0;B2empty——緩沖區(qū)B2空,初值為1。.P1進程……P<B1empty>輸入信息寫入緩沖區(qū)B1V<B1full>P2進程……P<B1full>V<B1empty>加工信息P<B2empty>結(jié)果送入B2V<B2full>P3進程……P<B2full>從B2中取出信息V<B2empty>.教課小結(jié):預(yù)習(xí)要求:作業(yè)布置:P82第24、25題:第8講〔第8周教學(xué)章節(jié):哲學(xué)家進餐問題讀者——寫者問題2.5進程通信教學(xué)目的及要求:重點、難點:<注:重點和難點如果一致,則寫在一起,若不同則應(yīng)分開寫>教學(xué)內(nèi)容:板書設(shè)計見PPT。<注:內(nèi)容每節(jié)課1-2頁為宜>復(fù)習(xí)引入:哲學(xué)家進餐問題由Dijkstra提出并解決的哲學(xué)家進餐問題也是一個經(jīng)典的同步問題。問題描述:五位哲學(xué)家以交替思考、進餐的方式生活,他們坐在一張圓桌旁,桌子上有5個碗和5只筷子。當(dāng)一個哲學(xué)家思考時,他與相鄰的兩個哲學(xué)家不會相互影響;但當(dāng)他進餐時,需同時獲得最靠近他的左右兩只筷子,若其中一只筷子被相鄰的哲學(xué)家拿走,他就必須等待,因此,他們相互制約。該問題中,哲學(xué)家爭用的臨界資源是筷子,因此需為每只筷子分別設(shè)置一初值為1的互斥信號量。第i位哲學(xué)家的活動可描述為:repeatwait<chopstick[i]>;//當(dāng)哲學(xué)家饑餓時,總是先拿左邊的筷子,再拿右邊的筷子。wait<chopstick[<i+1>mod5]>;…eat;…signal<chopstick[i]>;//當(dāng)哲學(xué)家進餐畢,先放下左邊的筷子,再放下右邊的筷子。signal<chopstick[<i+1>mod5]>;…think;untilfalse;上述解法雖然可以保證互斥地使用筷子,但可能造成死鎖。假如5個哲學(xué)家同時拿起各自左邊地筷子,便將出現(xiàn)循環(huán)等待的局面,發(fā)生死鎖現(xiàn)象。具體的解決辦法有:至多只允許有四位哲學(xué)家同時去拿左邊的筷子,最終能保證至少有一位哲學(xué)家能夠進餐,并在用畢后釋放出他用過的兩只筷子,從而使更多的哲學(xué)家能夠進餐。限制并發(fā)執(zhí)行的進程數(shù)僅當(dāng)哲學(xué)家的左右兩只筷子均可用時,才允許他拿起筷子進餐。采用信號量集規(guī)定奇數(shù)號哲學(xué)家先拿他左邊的筷子,然后再去拿右邊的筷子;偶數(shù)號哲學(xué)家則相反。保證總會有一個哲學(xué)家能同時獲得兩只筷子而進餐讀者——寫者問題問題的描述:一個數(shù)據(jù)對象,如文件或記錄,能被多個進程共享,可把那些只要求讀的進程稱為"讀者",其他進程則稱為"寫者"。顯然,多個讀者可同時讀一個共享對象,但不允許一個寫者與其他讀者或?qū)懻咄瑫r訪問共享對象,否則會造成數(shù)據(jù)的不一致性。這個經(jīng)典同步問題就是"讀者——寫者問題"〔一個數(shù)據(jù)文件或記錄可被多個進程共享。只要求讀文件的進程稱為"Reader進程",其它進程則稱為"Writer進程"。允許多個進程同時讀一個共享對象,但不允許一個Writer進程和其他Reader進程或Writer進程同時訪問共享對象。"讀者——寫者問題"是保證一個Writer進程必須與其他進程互斥地訪問共享對象的同步問題。具體的算法描述略。其中,變量readcount表示正在進行讀的讀者數(shù)目,由于每個讀者都要對它進行訪問并作修改,因此readcount是一個臨界資源,必須被所有讀者互斥使用;互斥信號量rmutex用來實現(xiàn)對變量readcont的互斥訪問,其初值為1;互斥信號量wmutex用來實現(xiàn)寫者之間的互斥,或?qū)懻吲c讀者之間的互斥,其初值為1。由于只要有一個讀者在讀,其余讀者便無需等待而可直接進行讀操作,因此,僅當(dāng)readcounter=0時,表示尚無讀者在讀時,讀者進程才需要進行wait<wmutex>操作;而寫者必須與任意其他進程互斥,故每次寫操作之前竇必須進行wait<wmutex>操作。2.5進程的通信思考問題:①進程通信的幾種類型②消息傳遞通信的實現(xiàn)方法③消息緩沖隊列通信機制〔發(fā)送和接收進程如何完成,以及進程間如何實現(xiàn)互斥和同步的④比較直接通信方式和間接通信方式進程通信是指進程之間的信息交換。根據(jù)進程間通信的規(guī)模和方式不同,可以分為:低級通信和高級通信。交換的信息量,少則是一個狀態(tài)或數(shù)值,進程的互斥和同
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度旅游大巴租賃與夜間觀光服務(wù)合同3篇
- 2025年度棉紗產(chǎn)業(yè)技術(shù)創(chuàng)新戰(zhàn)略聯(lián)盟成立合同4篇
- 二零二五年度農(nóng)業(yè)廢棄物資源化利用與農(nóng)產(chǎn)品包裝回收合同4篇
- 2025版新能源車輛融資租賃擔(dān)保合同4篇
- 2025衛(wèi)生院與保潔人員勞動合同規(guī)范文本3篇
- 二零二五年度特色苗圃土地租賃與種植技術(shù)合作合同3篇
- 2025年度國際工程項目外籍專家聘用合同
- 2025年度健康營養(yǎng)送餐服務(wù)合同模板
- 2025年度旅游度假村運營經(jīng)理聘用合同
- 個性化離婚合同樣本(2024版)版
- 電網(wǎng)調(diào)度基本知識課件
- 拉薩市2025屆高三第一次聯(lián)考(一模)語文試卷(含答案解析)
- 《保密法》培訓(xùn)課件
- 回收二手機免責(zé)協(xié)議書模板
- (正式版)JC∕T 60023-2024 石膏條板應(yīng)用技術(shù)規(guī)程
- (權(quán)變)領(lǐng)導(dǎo)行為理論
- 2024屆上海市浦東新區(qū)高三二模英語卷
- 2024年智慧工地相關(guān)知識考試試題及答案
- GB/T 8005.2-2011鋁及鋁合金術(shù)語第2部分:化學(xué)分析
- 不動產(chǎn)登記實務(wù)培訓(xùn)教程課件
- 不銹鋼制作合同范本(3篇)
評論
0/150
提交評論