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