《操作系統(tǒng)》配套教學(xué)課件_第1頁(yè)
《操作系統(tǒng)》配套教學(xué)課件_第2頁(yè)
《操作系統(tǒng)》配套教學(xué)課件_第3頁(yè)
《操作系統(tǒng)》配套教學(xué)課件_第4頁(yè)
《操作系統(tǒng)》配套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩717頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一章操作系統(tǒng)引論學(xué)院:教師:下面這些軟件中哪些是操作系統(tǒng)?Windows、TurboC++、WordVisualFoxPro、UNIX、VITurboASM、Linux用戶自己編寫的一個(gè)C語(yǔ)言程序極品飛車內(nèi)容概述1.1操作系統(tǒng)的目標(biāo)和作用1.2操作系統(tǒng)的發(fā)展過(guò)程1.3操作系統(tǒng)的基本特性1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)操作系統(tǒng)屬于軟件中的系統(tǒng)軟件,起到對(duì)系統(tǒng)資源進(jìn)行管理和分配,提高運(yùn)行效率的作用。計(jì)算機(jī)系統(tǒng)組成計(jì)算機(jī)系統(tǒng)軟件硬件及固件(裸機(jī))應(yīng)用軟件系統(tǒng)軟件DBMS,編譯軟件操作系統(tǒng)緊貼系統(tǒng)硬件之上,所有其他軟件之下(是其他軟件的共同環(huán)境)1.1操作系統(tǒng)的目標(biāo)和作用1.1.1操作系統(tǒng)的目標(biāo)1.1.2操作系統(tǒng)的作用1.1.3推動(dòng)操作系統(tǒng)發(fā)展的主要?jiǎng)恿?.1.1操作系統(tǒng)的目標(biāo)

目前存在著多種類型的OS,不同類型的OS,其目標(biāo)各有所側(cè)重。通常在計(jì)算機(jī)硬件上配置的OS,其目標(biāo)有以下幾點(diǎn):1.有效性

2.方便性

3.可擴(kuò)充性

4.開(kāi)放性1.有效性(系統(tǒng)管理人員的觀點(diǎn))

提高系統(tǒng)資源利用率。提高系統(tǒng)的吞吐量。2.方便性(用戶的觀點(diǎn))

操作系統(tǒng)最終是要為用戶服務(wù)的。提供良好的、一致的用戶接口,彌補(bǔ)硬件系統(tǒng)的類型和數(shù)量差別,使計(jì)算機(jī)更容易使用。

3.可擴(kuò)充性

OS應(yīng)采用層次化結(jié)構(gòu),以便于增加新的功能層次和模塊,并能修改老的功能層次和模塊。4.開(kāi)放性遵循標(biāo)準(zhǔn)規(guī)范,方便地實(shí)現(xiàn)互連,實(shí)現(xiàn)應(yīng)用程序的可移植性和互操作性。1.1操作系統(tǒng)的目標(biāo)和作用1.1.1操作系統(tǒng)的目標(biāo)1.1.2操作系統(tǒng)的作用1.1.3推動(dòng)操作系統(tǒng)發(fā)展的主要?jiǎng)恿?.OS作為用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口(用戶觀點(diǎn))OS處于用戶與計(jì)算機(jī)硬件系統(tǒng)之間,用戶通過(guò)OS來(lái)使用計(jì)算機(jī)系統(tǒng)。OS是一個(gè)系統(tǒng)軟件,因而這種接口是軟件接口。命令方式(命令接口)聯(lián)機(jī)用戶接口(命令)脫機(jī)用戶接口(批處理)系統(tǒng)調(diào)用方式(程序接口)圖形、窗口方式(圖形接口)1.1.2操作系統(tǒng)的作用

圖1-1OS作為接口的示意圖操作系統(tǒng)各種應(yīng)用程序DOS2.OS作為計(jì)算機(jī)系統(tǒng)資源的管理者(設(shè)計(jì)者觀點(diǎn))包括處理機(jī)、存儲(chǔ)器、I/O設(shè)備及數(shù)據(jù)和程序等資源。管理的內(nèi)容:資源的當(dāng)前狀態(tài)(數(shù)量和使用情況)、資源的分配、回收和訪問(wèn)操作,相應(yīng)管理策略(包括用戶權(quán)限)。處理機(jī)管理存儲(chǔ)器管理I/O設(shè)備管理文件管理3.OS實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象(虛擬機(jī)觀點(diǎn))OS是擴(kuò)展機(jī)/虛擬機(jī)將覆蓋了軟件的機(jī)器稱為擴(kuò)充機(jī)器或虛擬機(jī)。在裸機(jī)上添加:設(shè)備管理、文件管理、存儲(chǔ)管理(內(nèi)存和外存)、處理機(jī)管理(CPU)等軟件。那么用戶此時(shí)看到的計(jì)算機(jī)是一臺(tái)功能強(qiáng)大、使用方便的計(jì)算機(jī),但實(shí)際上,計(jì)算機(jī)的硬件絲毫沒(méi)有變化,這樣的計(jì)算機(jī)稱為軟件擴(kuò)充的機(jī)器,或稱軟件虛擬機(jī)。1.1操作系統(tǒng)的目標(biāo)和作用1.1.1操作系統(tǒng)的目標(biāo)1.1.2操作系統(tǒng)的作用1.1.3推動(dòng)操作系統(tǒng)發(fā)展的主要?jiǎng)恿?.1.3推動(dòng)操作系統(tǒng)發(fā)展的主要?jiǎng)恿?.不斷提高計(jì)算機(jī)資源利用率 計(jì)算機(jī)發(fā)展的初期,計(jì)算機(jī)系統(tǒng)昂貴,用作集中計(jì)算。2.方便用戶 改善用戶上級(jí)、調(diào)試程序時(shí)的條件。人機(jī)交互。3.器件的不斷更新?lián)Q代

CPU的位寬度(指令和數(shù)據(jù))、快速外存(摩爾定律)。4.計(jì)算機(jī)體系結(jié)構(gòu)的不斷發(fā)展 從單處理機(jī)到多處理機(jī)、從單機(jī)OS到網(wǎng)絡(luò)OS。第一章操作系統(tǒng)引論1.1操作系統(tǒng)的目標(biāo)和作用1.2操作系統(tǒng)的發(fā)展過(guò)程1.3操作系統(tǒng)的基本特征1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)1.2操作系統(tǒng)的發(fā)展過(guò)程1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1.2.2單道批處理系統(tǒng)1.2.3多道批處理系統(tǒng)1.2.4分時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)

1.人工操作方式

1945-1950、電子管、集中計(jì)算。工作方式用戶:用戶是程序員、操作員、計(jì)算機(jī)專業(yè)人員。編程語(yǔ)言:機(jī)器語(yǔ)言輸入輸出:紙帶或卡片計(jì)算機(jī)的工作特點(diǎn)用戶獨(dú)占全機(jī):資源利用率低。CPU等待用戶:計(jì)算前,手工裝入紙帶或卡片;計(jì)算完成后,手工卸取紙帶或卡片;CPU利用率低。2.脫機(jī)輸入/輸出(Off-LineI/O)方式

事先將用戶程序或數(shù)據(jù)的紙帶或卡片放入紙帶輸入機(jī),在外圍機(jī)的控制下輸入到磁帶上,CPU從磁帶上讀入數(shù)據(jù);輸出過(guò)程正好相反。

這種脫機(jī)I/O方式的主要優(yōu)點(diǎn)如下:減少了CPU的空閑時(shí)間。

(2)提高I/O速度。圖1-3脫機(jī)I/O示意圖主要矛盾計(jì)算機(jī)處理能力的提高,手工操作的低效率(造成浪費(fèi))。用戶獨(dú)占全機(jī)的所有資源。人機(jī)矛盾、CPU和I/O設(shè)備速度不匹配提高效率的途徑批處理3.無(wú)操作系統(tǒng)的主要問(wèn)題1.2操作系統(tǒng)的發(fā)展過(guò)程1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1.2.2單道批處理系統(tǒng)1.2.3多道批處理系統(tǒng)1.2.4分時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)1.批處理系統(tǒng)理解批處理技術(shù)是指在系統(tǒng)中配置一個(gè)監(jiān)督程序(操作系統(tǒng)的雛形),并在該監(jiān)督程序的控制下,對(duì)一批作業(yè)自動(dòng)進(jìn)行處理的一種技術(shù)。批處理系統(tǒng)是指加載在計(jì)算機(jī)上的一個(gè)系統(tǒng)軟件(監(jiān)督程序),在它的控制下,計(jì)算機(jī)能夠自動(dòng)地成批地處理一個(gè)或多個(gè)用戶的作業(yè)。在內(nèi)存中只存放一道作業(yè)的批處理系統(tǒng)稱為單道批處理系統(tǒng)。1.2.2單道批處理系統(tǒng)2.單道批處理系統(tǒng)的處理過(guò)程

圖1-4單道批處理系統(tǒng)的處理流程監(jiān)督程序:控制作業(yè)連續(xù)處理3.單道批處理系統(tǒng)的特征 單道批處理系統(tǒng)是最早出現(xiàn)的一種OS。旨在提高系統(tǒng)資源的利用率和系統(tǒng)吞吐量。

(1)自動(dòng)性。在順利的情況下,磁帶上的一批作業(yè)能自動(dòng)地逐個(gè)地依次運(yùn)行,而無(wú)需人工干預(yù)

(2)順序性。磁帶上的各道作業(yè)是順序地進(jìn)入內(nèi)存,完成順序與進(jìn)入內(nèi)存順序相同

(3)單道性。內(nèi)存中只有一道程序運(yùn)行1.2操作系統(tǒng)的發(fā)展過(guò)程1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1.2.2單道批處理系統(tǒng)1.2.3多道批處理系統(tǒng)1.2.4分時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)1.2.3多道批處理系統(tǒng)1.多道程序設(shè)計(jì)的基本概念在單道批處理系統(tǒng)中,內(nèi)存中僅有一道作業(yè),它無(wú)法充分利用系統(tǒng)中的所有資源,致使系統(tǒng)性能較差。多道程序設(shè)計(jì)技術(shù)是指在內(nèi)存同時(shí)存放若干個(gè)作業(yè),并使它們共享系統(tǒng)資源同時(shí)運(yùn)行的技術(shù)。采用多道程序設(shè)計(jì)技術(shù)的批處理系統(tǒng)被稱為多道批處理系統(tǒng)。圖1-5單道和多道程序運(yùn)行情況|←CPU空閑-→||←CPU空閑-→|2.多道批處理系統(tǒng)的特征

(1)多道性 內(nèi)存中同時(shí)存放幾個(gè)作業(yè),并允許并發(fā)執(zhí)行,從而有效地提高了資源利用率和系統(tǒng)吞吐量。(2)無(wú)序性 多個(gè)作業(yè)完成的先后順序與它們進(jìn)入內(nèi)存的順序之間無(wú)嚴(yán)格對(duì)應(yīng)關(guān)系。(3)調(diào)度性 作業(yè)調(diào)度,從后備隊(duì)列進(jìn)入內(nèi)存;進(jìn)程調(diào)度,分配處理機(jī)運(yùn)行。(4)宏觀上并發(fā)、微觀上串行。3.多道批處理系統(tǒng)的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):資源利用率高:CPU、內(nèi)存和I/O設(shè)備利用率較高;系統(tǒng)吞吐量大:?jiǎn)挝粫r(shí)間內(nèi)完成的工作總量大。缺點(diǎn):用戶交互性差:整個(gè)作業(yè)完成后或中間出錯(cuò)時(shí),才與用戶交互,不利于調(diào)試和修改。作業(yè)平均周轉(zhuǎn)時(shí)間長(zhǎng):短作業(yè)的周轉(zhuǎn)時(shí)間顯著增長(zhǎng)。4.多道批處理系統(tǒng)需要解決的問(wèn)題

(1)處理機(jī)管理問(wèn)題(第3章)(2)內(nèi)存管理問(wèn)題(第4章)(3)I/O設(shè)備管理問(wèn)題(第5章)(4)文件管理問(wèn)題(第6章)(5)作業(yè)管理問(wèn)題(第3章)

操作系統(tǒng)是一組控制和管理計(jì)算機(jī)硬件和軟件資源,合理地對(duì)各類作業(yè)進(jìn)行調(diào)度,以及方便用戶使用的程序集合。單道批處理系統(tǒng)與多道批處理系統(tǒng)的比較1.2操作系統(tǒng)的發(fā)展過(guò)程1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1.2.2單道批處理系統(tǒng)1.2.3多道批處理系統(tǒng)1.2.4分時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)1.2.4分時(shí)系統(tǒng)1.分時(shí)系統(tǒng)的產(chǎn)生用戶的需求人機(jī)交互(對(duì)程序進(jìn)行調(diào)試、修改等直接控制)共享主機(jī)(主機(jī)貴,提高資源利用率)便于用戶上機(jī)(作業(yè)直接從終端進(jìn)入,并能控制)分時(shí)系統(tǒng)分時(shí)系統(tǒng)是指在一臺(tái)計(jì)算機(jī)上連接了多個(gè)帶有顯示器和鍵盤的終端,同時(shí)允許多個(gè)用戶共享主機(jī)中的資源,每個(gè)用戶都可通過(guò)自己的終端以交互方式使用計(jì)算機(jī)。2.分時(shí)系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵問(wèn)題

及時(shí)接收(只需配置多路卡,同時(shí)接收各終端數(shù)據(jù))

及時(shí)處理(在不長(zhǎng)的時(shí)間能響應(yīng)用戶命令)3.分時(shí)系統(tǒng)的特征

多路性:宏觀上多個(gè)用戶同時(shí)工作,微觀上多個(gè)終端輪轉(zhuǎn)時(shí)間片。獨(dú)立性:每個(gè)用戶一臺(tái)終端,互不干擾,感覺(jué)像一個(gè)人獨(dú)占計(jì)算機(jī)。及時(shí)性:用戶請(qǐng)求應(yīng)盡快得到響應(yīng)(2-3秒)。交互性:用戶可通過(guò)終端與系統(tǒng)進(jìn)行廣泛的人機(jī)對(duì)話。1.2操作系統(tǒng)的發(fā)展過(guò)程1.2.1無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)1.2.2單道批處理系統(tǒng)1.2.3多道批處理系統(tǒng)1.2.4分時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)1.2.5實(shí)時(shí)系統(tǒng)

所謂“實(shí)時(shí)”是表示“及時(shí)”,而實(shí)時(shí)系統(tǒng)是指系統(tǒng)能及時(shí)(或即時(shí))響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。要求:響應(yīng)時(shí)間短,在一定范圍之內(nèi);系統(tǒng)可靠性高。1.應(yīng)用需求(1)實(shí)時(shí)控制。包括生產(chǎn)過(guò)程控制和武器控制。(2)實(shí)時(shí)信息處理。例如證劵交易、飛機(jī)訂票、情報(bào)檢索。2.實(shí)時(shí)任務(wù)按任務(wù)執(zhí)行時(shí)是否呈現(xiàn)周期性來(lái)劃分周期性實(shí)時(shí)任務(wù)非周期性實(shí)時(shí)任務(wù)按對(duì)截止時(shí)間的要求來(lái)劃分硬實(shí)時(shí)任務(wù)軟實(shí)時(shí)任務(wù)3.實(shí)時(shí)系統(tǒng)與分時(shí)系統(tǒng)特征的比較實(shí)時(shí)系統(tǒng)分時(shí)系統(tǒng)多路性對(duì)多個(gè)對(duì)象的信息采集和控制為多個(gè)終端服務(wù)獨(dú)立性表現(xiàn)為對(duì)多個(gè)對(duì)象的互不干擾每個(gè)用戶獨(dú)占主機(jī)及時(shí)性在規(guī)定時(shí)間內(nèi)對(duì)外部事件響應(yīng)在一定時(shí)間處理各個(gè)終端用戶作業(yè)交互性一般情況下無(wú)交互性由交互引入可靠性要求高度可靠可靠性低第一章操作系統(tǒng)引論1.1操作系統(tǒng)的目標(biāo)和作用1.2操作系統(tǒng)的發(fā)展過(guò)程1.3操作系統(tǒng)的基本特征1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)1.3操作系統(tǒng)的基本特征1.3.1并發(fā)(Concurrence)1.3.2共享(Sharing)1.3.3虛擬(Virtual)1.3.4異步性(Asynchronism)1.3操作系統(tǒng)的基本特性1.3.1并發(fā)(Concurrence)并行性是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生;并發(fā)性是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生。時(shí)間BA時(shí)間BA在多道程序環(huán)境下的并發(fā)性單處理機(jī)系統(tǒng)多個(gè)處理機(jī)系統(tǒng)并發(fā):即宏觀上在一段時(shí)間內(nèi)有多道程序在同時(shí)運(yùn)行,在微觀上,這些程序是在交替執(zhí)行的。程序和進(jìn)程、線程為使程序能并發(fā)執(zhí)行,為每個(gè)程序建立進(jìn)程。進(jìn)程是能獨(dú)立運(yùn)行并作為資源分配的基本單位,是活動(dòng)實(shí)體。引入線程后,進(jìn)程是分配資源的基本單位,線程作為獨(dú)立運(yùn)行的基本單位。調(diào)度開(kāi)銷小。1.3操作系統(tǒng)的基本特征1.3.1并發(fā)(Concurrence)1.3.2共享(Sharing)1.3.3虛擬(Virtual)1.3.4異步性(Asynchronism)1.3.2共享(Sharing)

在操作系統(tǒng)環(huán)境下,所謂共享是指系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程(線程)共同使用。由于資源屬性的不同,進(jìn)程對(duì)資源共享的方式也不同,目前主要有兩種資源共享方式:

1.互斥共享方式

2.同時(shí)訪問(wèn)方式1.互斥共享方式系統(tǒng)中的某些資源,如打印機(jī)、磁帶機(jī),在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程(線程)訪問(wèn)該資源。僅當(dāng)該進(jìn)程訪問(wèn)完并釋放該資源后,才允許另一進(jìn)程對(duì)該資源進(jìn)行訪問(wèn)。

在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)的資源稱為臨界資源或獨(dú)占資源。計(jì)算機(jī)系統(tǒng)中的大多數(shù)物理設(shè)備,以及棧、變量和表格,都屬于臨界資源,它們要求被互斥地共享。2.同時(shí)訪問(wèn)方式系統(tǒng)中還有另一類資源,允許在一段時(shí)間內(nèi)由多個(gè)進(jìn)程“同時(shí)”對(duì)它們進(jìn)行訪問(wèn)。典型的可供多個(gè)進(jìn)程“同時(shí)”訪問(wèn)的資源是磁盤設(shè)備。并發(fā)和共享是操作系統(tǒng)的兩個(gè)最基本的特征。它們又是互為存在的條件。

資源共享是以程序(進(jìn)程)的并發(fā)執(zhí)行為條件的,若系統(tǒng)不允許程序并發(fā)執(zhí)行,自然不存在資源共享問(wèn)題。

若系統(tǒng)不能對(duì)資源共享實(shí)施有效管理,必然影響到程序并發(fā)執(zhí)行的程度。1.3操作系統(tǒng)的基本特征1.3.1并發(fā)(Concurrence)1.3.2共享(Sharing)1.3.3虛擬(Virtual)1.3.4異步性(Asynchronism)1.3.3虛擬(Virtual)

所謂“虛擬”是指通過(guò)某種技術(shù)把一個(gè)物理實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)物。在OS中利用了多種虛擬技術(shù),分別用來(lái)實(shí)現(xiàn)虛擬處理機(jī)、虛擬內(nèi)存、虛擬外部設(shè)備等。

CPU-每個(gè)用戶(進(jìn)程)的“虛處理機(jī)”(多道程序設(shè)計(jì)技術(shù)、時(shí)分復(fù)用)

存儲(chǔ)器--虛擬存儲(chǔ)器(時(shí)分復(fù)用)

打印設(shè)備--將臨界資源變?yōu)橥瑫r(shí)訪問(wèn)資源(spooling技術(shù))1.3操作系統(tǒng)的基本特征1.3.1并發(fā)(Concurrence)1.3.2共享(Sharing)1.3.3虛擬(Virtual)1.3.4異步性(Asynchronism)1.3.4異步性(Asynchronism)

在多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行,但只有進(jìn)程在獲得所需的資源后方能執(zhí)行。由于資源等因素的限制,使進(jìn)程的執(zhí)行通常都不是“一氣呵成”,而是以“停停走走”的方式運(yùn)行。進(jìn)程是以人們不可預(yù)知的速度向前推進(jìn),此即進(jìn)程的異步性。第一章操作系統(tǒng)引論1.1操作系統(tǒng)的目標(biāo)和作用1.2操作系統(tǒng)的發(fā)展過(guò)程1.3操作系統(tǒng)的基本特征1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)1.4操作系統(tǒng)的主要功能操作系統(tǒng)是用戶與硬件之間的橋梁,它主要負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)中的所有資源,并負(fù)責(zé)它們的調(diào)度和使用,充分發(fā)揮這些資源的作用和方便用戶使用計(jì)算機(jī)。從資源管理的角度來(lái)看,操作系統(tǒng)的功能主要有1.4.1處理機(jī)管理功能1.4.2存儲(chǔ)器管理功能1.4.3設(shè)備管理功能1.4.4文件管理功能1.4.5用戶接口1.4操作系統(tǒng)的主要功能1.4.1處理機(jī)管理功能1.進(jìn)程控制創(chuàng)建、撤銷、掛起等--主動(dòng)改變進(jìn)程的狀態(tài);在現(xiàn)代OS中,進(jìn)行控制還應(yīng)具有為一個(gè)進(jìn)程創(chuàng)建和撤消線程的功能。

處理機(jī)管理的主要任務(wù)是對(duì)處理機(jī)進(jìn)行分配,并對(duì)其運(yùn)行進(jìn)行有效的控制和管理。在多道程序環(huán)境下,處理機(jī)的分配和運(yùn)行都是以進(jìn)程為單位,所以對(duì)處理機(jī)的管理可理解為對(duì)進(jìn)程的管理。2.進(jìn)程同步協(xié)調(diào)并發(fā)進(jìn)程之間的推進(jìn)步驟,以協(xié)調(diào)資源共享--交換信息能力弱互斥方式諸進(jìn)程訪問(wèn)臨界資源時(shí)采用這種方式。同步方式在相互合作完成任務(wù)的進(jìn)程之間由同步機(jī)構(gòu)對(duì)執(zhí)行次序加以協(xié)調(diào)。3.進(jìn)程通信進(jìn)程之間傳送數(shù)據(jù),以協(xié)調(diào)進(jìn)程間的協(xié)作--交換信息能力強(qiáng),也可以用來(lái)協(xié)調(diào)進(jìn)程之間的推進(jìn)。包括直接通信方式和間接通信方式。如輸入進(jìn)程、計(jì)算進(jìn)程、打印進(jìn)程之間的通信。4.調(diào)度

作業(yè)調(diào)度:從外存調(diào)入內(nèi)存進(jìn)程調(diào)度:是從內(nèi)存中的進(jìn)程就緒隊(duì)列中選一個(gè)分配處理機(jī)。1.4操作系統(tǒng)的主要功能1.4.1處理機(jī)管理功能1.4.2存儲(chǔ)器管理功能1.4.3設(shè)備管理功能1.4.4文件管理功能1.4.5用戶接口1.4.2存儲(chǔ)器管理功能1.內(nèi)存分配靜態(tài)分配:每個(gè)作業(yè)的內(nèi)存空間是在作業(yè)裝入時(shí)確定的;整個(gè)運(yùn)行期間,不允許再申請(qǐng)新的內(nèi)存空間;不允許在內(nèi)存中“移動(dòng)”。動(dòng)態(tài)分配:每個(gè)作業(yè)的基本內(nèi)存空間,是在裝入時(shí)確定的;允許運(yùn)行期間申請(qǐng)新的內(nèi)存空間,適應(yīng)動(dòng)態(tài)增漲;允許作業(yè)在內(nèi)存中“移動(dòng)”。管理目標(biāo):提高利用率、方便用戶使用、提供足夠的存儲(chǔ)空間、方便進(jìn)程并發(fā)運(yùn)行。2.內(nèi)存保護(hù)內(nèi)存保護(hù)的主要任務(wù),是確保每道用戶程序都只在自己的內(nèi)存空間內(nèi)運(yùn)行,彼此互不干擾。為了確保每道程序都只在自己的內(nèi)存區(qū)中運(yùn)行,必須設(shè)置內(nèi)存保護(hù)機(jī)制。一種比較簡(jiǎn)單的內(nèi)存保護(hù)機(jī)制,是設(shè)置兩個(gè)界限寄存器,分別用于存放正在執(zhí)行程序的上界和下界。越界檢查都由硬件實(shí)現(xiàn)。當(dāng)然,對(duì)發(fā)生越界后的處理,還須與軟件配合來(lái)完成。3.地址映射程序中的地址稱為“邏輯地址”或“相對(duì)地址”,這些程序的地址都是從“0”開(kāi)始的,程序中的其它地址都是相對(duì)于起始地址計(jì)算的。內(nèi)存中單元的地址稱為“物理地址“,由內(nèi)存中的一系列單元所限定的地址范圍。多道程序下,進(jìn)程裝入內(nèi)存后要由邏輯地址到內(nèi)存物理地址進(jìn)行變換,該功能應(yīng)在硬件的支持下完成。4.內(nèi)存擴(kuò)充借助于虛擬存儲(chǔ)技術(shù),從邏輯上去擴(kuò)充內(nèi)存容量,借助于虛擬存儲(chǔ)技術(shù)。改善了系統(tǒng)的性能,基本上不增加硬件投資。請(qǐng)求調(diào)入功能。置換功能。1.4操作系統(tǒng)的主要功能1.4.1處理機(jī)管理功能1.4.2存儲(chǔ)器管理功能1.4.3設(shè)備管理功能1.4.4文件管理功能1.4.5用戶接口1.4.3設(shè)備管理功能設(shè)備管理用于管理計(jì)算機(jī)系統(tǒng)中所有的外圍設(shè)備。設(shè)備管理的主要任務(wù)是:

完成用戶進(jìn)程提出的I/O請(qǐng)求;

為用戶進(jìn)程分配其所需的I/O設(shè)備;

提高CPU和I/O設(shè)備的利用率;

提高I/O速度;

方便用戶使用I/O設(shè)備。1.緩沖管理匹配CPU和外設(shè)的速度,提高兩者的利用率(單緩沖區(qū)、雙緩沖區(qū)和公用緩沖池)最常見(jiàn)的緩沖區(qū)機(jī)制有單緩沖機(jī)制、能實(shí)現(xiàn)雙向同時(shí)傳送數(shù)據(jù)的雙緩沖機(jī)制,循環(huán)緩沖以及能供多個(gè)設(shè)備同時(shí)使用的公用緩沖池機(jī)制。2.設(shè)備分配根據(jù)用戶請(qǐng)求,分配I/O設(shè)備及相應(yīng)的控制器和通道。3.設(shè)備處理設(shè)備處理程序又稱為設(shè)備驅(qū)動(dòng)程序。其基本任務(wù)是用于實(shí)現(xiàn)CPU和設(shè)備控制器之間的通信,即由CPU向設(shè)備控制器發(fā)出I/O命令,要求它完成指定的I/O操作;反之由CPU接收從控制器發(fā)來(lái)的中斷請(qǐng)求,并給予迅速的響應(yīng)和相應(yīng)的處理。

1.4操作系統(tǒng)的主要功能1.4.1處理機(jī)管理功能1.4.2存儲(chǔ)器管理功能1.4.3設(shè)備管理功能1.4.4文件管理功能1.4.5用戶接口1.4.4文件管理功能

1.文件存儲(chǔ)空間的管理解決如何存放信息,以提高空間利用率和讀寫性能。存儲(chǔ)空間的使用情況,空間分配與回收。程序和數(shù)據(jù)以文件的形式存儲(chǔ)在磁盤和磁帶上。文件管理的主要任務(wù):對(duì)用戶文件和系統(tǒng)文件進(jìn)行管理,以方便用戶使用并保證文件安全。2.目錄管理解決信息檢索問(wèn)題,對(duì)眾多目錄項(xiàng)加以有效組織。目錄項(xiàng)包括文件名、文件屬性、文件在磁盤上的物理位置等。3.文件的讀/寫管理和保護(hù)

(1)文件的讀/寫管理。該功能是根據(jù)用戶的請(qǐng)求,從外存中讀取數(shù)據(jù),或?qū)?shù)據(jù)寫入外存。

(2)文件保護(hù)。 ①防止未經(jīng)核準(zhǔn)的用戶存取文件; ②防止冒名頂替存取文件; ③防止以不正確的方式使用文件。1.4操作系統(tǒng)的主要功能1.4.1處理機(jī)管理功能1.4.2存儲(chǔ)器管理功能1.4.3設(shè)備管理功能1.4.4文件管理功能1.4.5用戶接口1.4.5用戶接口目標(biāo):提供一個(gè)友好的用戶訪問(wèn)操作系統(tǒng)的接口。程序接口用戶接口(2)脫機(jī)用戶接口該接口是為批處理作業(yè)的用戶提供的,故也稱為批處理用戶接口。該接口由一組作業(yè)控制語(yǔ)言JCL組成。批處理作業(yè)的用戶不能直接與自己的作業(yè)交互作用,只能委托系統(tǒng)代替用戶對(duì)作業(yè)進(jìn)行控制和干預(yù)。1.命令接口(1)聯(lián)機(jī)用戶接口這是為聯(lián)機(jī)用戶提供的,它由一組鍵盤操作命令及命令解釋程序所組成。當(dāng)用戶在終端或控制臺(tái)上每鍵入一條命令后,系統(tǒng)便立即轉(zhuǎn)入命令解釋程序,對(duì)該命令加以解釋并執(zhí)行該命令。2.程序接口該接口是為用戶程序在執(zhí)行中訪問(wèn)系統(tǒng)資源而設(shè)置的,是用戶程序取得操作系統(tǒng)服務(wù)的惟一途徑。它是由一組系統(tǒng)調(diào)用組成,每一個(gè)系統(tǒng)調(diào)用都是一個(gè)能完成特定功能的子程序,每當(dāng)應(yīng)用程序要求OS提供某種服務(wù)(功能)時(shí),便調(diào)用具有相應(yīng)功能的系統(tǒng)調(diào)用。3.圖形接口圖形用戶接口采用了圖形化的操作界面,用非常容易識(shí)別的各種圖標(biāo)(icon)來(lái)將系統(tǒng)的各項(xiàng)功能、各種應(yīng)用程序和文件,直觀、逼真地表示出來(lái)。用戶可用鼠標(biāo)或通過(guò)菜單和對(duì)話框,來(lái)完成對(duì)應(yīng)用程序和文件的操作。第一章操作系統(tǒng)引論1.1操作系統(tǒng)的目標(biāo)和作用1.2操作系統(tǒng)的發(fā)展過(guò)程1.3操作系統(tǒng)的基本特征1.4操作系統(tǒng)的主要功能1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)(了解)1.5操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)操作系統(tǒng)開(kāi)發(fā)小程序:程序員的程序設(shè)計(jì)技巧大型軟件:工程化的開(kāi)發(fā)方法,軟件工程學(xué)傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu)無(wú)結(jié)構(gòu)操作系統(tǒng)(第一代)模塊化結(jié)構(gòu)操作系統(tǒng)(第二代)分層結(jié)構(gòu)操作系統(tǒng)(第三代)現(xiàn)代的操作系統(tǒng)結(jié)構(gòu)微內(nèi)核操作系統(tǒng)操作系統(tǒng)的開(kāi)發(fā)方法本章小結(jié)

熟悉和掌握以下基本概念: 操作系統(tǒng)、批處理技術(shù)、批處理系統(tǒng)、分時(shí)系統(tǒng)、實(shí)時(shí)系統(tǒng)、脫機(jī)輸入輸出、多道程序設(shè)計(jì)技術(shù)熟悉和掌握以下基本知識(shí):1.操作系統(tǒng)的目標(biāo)2.操作系統(tǒng)的作用3.操作系統(tǒng)的特征4.操作系統(tǒng)的基本功能作業(yè):P33,1、2、13、2525、從資源管理的角度看,操作系統(tǒng)具有哪些功能?第一章授課結(jié)束,歡迎討論!學(xué)院:教師:第二章進(jìn)程管理內(nèi)容概述2.1進(jìn)程的基本概念2.2進(jìn)程控制2.3進(jìn)程同步2.4經(jīng)典進(jìn)程的同步問(wèn)題2.5進(jìn)程通信2.6線程

進(jìn)程管理的主要功能是把處理機(jī)分配給進(jìn)程,并對(duì)處理器運(yùn)行進(jìn)行有效地控制和管理,以及協(xié)調(diào)各個(gè)進(jìn)程之間的相互關(guā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)程控制塊圖2-1程序的順序執(zhí)行1.程序的順序執(zhí)行僅當(dāng)前一操作(程序段)執(zhí)行完后,才能執(zhí)行后繼操作。例如,在進(jìn)行計(jì)算時(shí),總須先輸入用戶的程序和數(shù)據(jù),然后進(jìn)行計(jì)算,最后才能打印計(jì)算結(jié)果。

S1:a:=x+y;S2:b:=a-5;S3:c:=b+1;2.1.1程序的順序執(zhí)行及其特征2.程序順序執(zhí)行時(shí)的特征(1)順序性:處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,只有當(dāng)上一個(gè)操作完成后,下一個(gè)操作才能執(zhí)行。(2)封閉性:程序運(yùn)行在一個(gè)封閉的環(huán)境中,即程序運(yùn)行時(shí)獨(dú)占系統(tǒng)的全部資源,這些資源的狀態(tài)只能因程序的執(zhí)行而改變,不受任何外界因素的影響。(3)可再現(xiàn)性:由于程序順序執(zhí)行的封閉性,只要程序順序執(zhí)行的初始條件和環(huán)境相同,則不論何時(shí)執(zhí)行,也不論程序執(zhí)行期間是否存在停頓,程序所得的結(jié)果也相同。結(jié)論:正由于程序順序執(zhí)行的特點(diǎn),程序員可以檢測(cè)和重現(xiàn)程序的錯(cuò)誤,可以調(diào)試和校正程序。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)程控制塊2.1.2前趨圖(PrecedenceGraph)

前趨圖是一個(gè)有向無(wú)循環(huán)圖,記為DAG。用于描述進(jìn)程之間執(zhí)行的前后關(guān)系。圖中的每個(gè)結(jié)點(diǎn)可用于描述一個(gè)程序段或進(jìn)程,乃至一條語(yǔ)句;結(jié)點(diǎn)間的有向邊則用于表示兩個(gè)結(jié)點(diǎn)之間存在的偏序或前趨關(guān)系“→”。→={(Pi,Pj)|PimustcompletebeforePjmaystart},如果(Pi,Pj)∈→,可寫成Pi→Pj:稱Pi是Pj的直接前趨,而稱Pj是Pi的直接后繼。把沒(méi)有前趨的結(jié)點(diǎn)稱為初始結(jié)點(diǎn)(InitialNode),把沒(méi)有后繼的結(jié)點(diǎn)稱為終止結(jié)點(diǎn)(FinalNode)。

每個(gè)結(jié)點(diǎn)還具有一個(gè)重量(Weight),用于表示該結(jié)點(diǎn)所含有的程序量或結(jié)點(diǎn)的執(zhí)行時(shí)間。圖2-2前趨圖×直接前趨直接后繼初始結(jié)點(diǎn)終止結(jié)點(diǎn)對(duì)于圖2-2(a)所示的前趨圖,存在下述前趨關(guān)系P1→P2,P1→P3,P1→P4,P2→P5,P3→P5,P4→P6,P4→P7,P5→P8,P6→P8,P7→P9,P8→P9或表示為:P={P1,P2,P3,P4,P5,P6,P7,P8,P9}→={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),(P7,P9),(P8,P9)}應(yīng)當(dāng)注意,前趨圖中必須不存在循環(huán),但在圖2-2(b)中卻有著下述的前趨關(guān)系:S2→S3,S3→S22.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)程控制塊2.1.3程序的并發(fā)執(zhí)行及其特征

1.程序的并發(fā)執(zhí)行

圖2-3并發(fā)執(zhí)行時(shí)的前趨圖并發(fā)輸入程序I計(jì)算程序C輸出程序P下述四條語(yǔ)句的程序段:S1:a:=x+2S2:b:=y+4S3:c:=a+bS4:d:=c+6圖2-4四條語(yǔ)句的前趨關(guān)系什么樣的程序可以并發(fā)執(zhí)行?2.程序并發(fā)執(zhí)行時(shí)的特征

(1)間斷性 相互制約導(dǎo)致并發(fā)程序具有“執(zhí)行-暫停-執(zhí)行”的間斷性活動(dòng)規(guī)律。(2)失去封閉性

系統(tǒng)中多道程序共享資源,資源的狀態(tài)由多個(gè)程序來(lái)改變,必然失去了程序的封閉性。(3)不可再現(xiàn)性 失去封閉性->失去可再現(xiàn)性,外界環(huán)境在程序的兩次執(zhí)行期間發(fā)生變化,失去原有的可重復(fù)特征。例如,有兩個(gè)程序A和B,它們共享一個(gè)變量N(初始值為x)。

A: N:=N+1B: Print(N); N:=0;

程序A和B并發(fā)執(zhí)行,可出現(xiàn)以下三種情況:(1)N:=N+1在Print(N)和N:=0之前,此時(shí)得到的N值分別為x+1,x+1,0。

(2)N:=N+1在Print(N)和N:=0之后,此時(shí)得到的N值分別為x,0,1。

(3)N:=N+1在Print(N)和N:=0之間,此時(shí)得到的N值分別為x,x+1,0。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)程控制塊2.1.4進(jìn)程的特征與狀態(tài)1、進(jìn)程實(shí)體的構(gòu)成(1)程序(段):進(jìn)程要進(jìn)行的操作。(2)數(shù)據(jù)段:包括操作的數(shù)據(jù)和程序自己的變量。(3)進(jìn)程控制塊PCB(ProcessControlBlock):存放進(jìn)程標(biāo)識(shí)符、進(jìn)程運(yùn)行的當(dāng)前狀態(tài)、程序和數(shù)據(jù)的地址、程序運(yùn)行時(shí)的CPU環(huán)境等。2.1.4進(jìn)程的特征與狀態(tài)

2.進(jìn)程的特征

結(jié)構(gòu)特征:進(jìn)程的創(chuàng)建與撤消就是PCB的創(chuàng)建與撤消。動(dòng)態(tài)性:進(jìn)程是一個(gè)動(dòng)態(tài)的概念,實(shí)質(zhì)上是程序的一次執(zhí)行過(guò)程。進(jìn)程具有生命期:它因“創(chuàng)建”而產(chǎn)生,因“調(diào)度”而執(zhí)行,執(zhí)行時(shí)還走走停停,因“撤消”而滅亡。并發(fā)性:多個(gè)進(jìn)程實(shí)體同存于內(nèi)存中,且能在一段時(shí)間內(nèi)同時(shí)運(yùn)行,共享系統(tǒng)資源;引入進(jìn)程實(shí)體的目的就是并發(fā)執(zhí)行。2.進(jìn)程的特征獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。異步性:各進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。3.進(jìn)程的定義進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過(guò)程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。4.進(jìn)程與程序的區(qū)別進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合,它可以復(fù)制;進(jìn)程是程序在數(shù)據(jù)集上的一次執(zhí)行。進(jìn)程是暫時(shí)的,程序是永久的:進(jìn)程是一個(gè)狀態(tài)變化的過(guò)程,有它的撤銷,程序可長(zhǎng)久保存。進(jìn)程具有結(jié)構(gòu)特征:由程序段、數(shù)據(jù)段和進(jìn)程控制塊三者組成,而程序僅是指令的有序集合,是進(jìn)程的組成部分之一。進(jìn)程與程序的對(duì)應(yīng)關(guān)系:通過(guò)多次執(zhí)行,一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程。5.進(jìn)程的狀態(tài)(1)進(jìn)程的三種基本狀態(tài)就緒(Ready)狀態(tài):進(jìn)程已獲得除處理機(jī)外的所需資源,等待分配處理機(jī)資源;只要分配CPU就可執(zhí)行。執(zhí)行(Running)狀態(tài):處于就緒狀態(tài)的進(jìn)程一旦獲得了處理機(jī),進(jìn)程狀態(tài)就處于執(zhí)行狀態(tài)。阻塞(Blocked)狀態(tài)(“等待”或“睡眠”):由于進(jìn)程等待某種事件(如I/O操作或進(jìn)程同步),在事件發(fā)生之前無(wú)法繼續(xù)執(zhí)行。該事件發(fā)生前即使把處理機(jī)分配給該進(jìn)程,也無(wú)法運(yùn)行。如:請(qǐng)求I/O操作,申請(qǐng)緩沖空間等。圖2-5進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換1.時(shí)間片用光2.有優(yōu)先級(jí)高的進(jìn)程到來(lái)引入掛起狀態(tài)的原因終端用戶的請(qǐng)求父進(jìn)程請(qǐng)求負(fù)荷調(diào)節(jié)的需要操作系統(tǒng)的需要(2)進(jìn)程的掛起狀態(tài)圖2-6具有掛起狀態(tài)的進(jìn)程狀態(tài)圖(3)進(jìn)程的其它兩種狀態(tài)

創(chuàng)建狀態(tài):當(dāng)一個(gè)新進(jìn)程剛剛建立,還未將其放入就緒隊(duì)列時(shí)的狀態(tài),稱為新?tīng)顟B(tài)。終止?fàn)顟B(tài):當(dāng)一個(gè)進(jìn)程已經(jīng)正常結(jié)束或異常結(jié)束,操作系統(tǒng)已將其從系統(tǒng)隊(duì)列中移出,但尚未撤消,這時(shí)稱為終止?fàn)顟B(tài)。圖2-7進(jìn)程的五種基本狀態(tài)及其轉(zhuǎ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)程控制塊2.1.5進(jìn)程控制塊

1.進(jìn)程控制塊的作用

進(jìn)程控制塊的作用是使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f(shuō),OS是根據(jù)PCB來(lái)對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的。記錄了操作系統(tǒng)所需的,用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需的全部信息。

PCB是進(jìn)程存在的唯一標(biāo)志。2.進(jìn)程控制塊中的信息

進(jìn)程標(biāo)識(shí)符內(nèi)部標(biāo)識(shí)符和外部標(biāo)識(shí)符。處理機(jī)狀態(tài)①通用寄存器②指令計(jì)數(shù)器PC③程序狀態(tài)字PSW④用戶棧指針進(jìn)程調(diào)度信息①進(jìn)程狀態(tài)②進(jìn)程優(yōu)先級(jí)③進(jìn)程調(diào)度所需的其它信息④事件進(jìn)程控制信息①程序和數(shù)據(jù)的地址②進(jìn)程同步和通信機(jī)制③資源清單④鏈接指針structpcb{intid;//進(jìn)程序號(hào)

intra;//所需資源A的數(shù)量

intrb;//所需資源B的數(shù)量

intrc;//所需資源C的數(shù)量

intntime;//所需的時(shí)間片個(gè)數(shù)

intrtime;//已經(jīng)運(yùn)行的時(shí)間片個(gè)數(shù)

charstate;//進(jìn)程狀態(tài)

structpcb*next;}圖2-9PCB鏈接隊(duì)列示意圖3.進(jìn)程控制塊的組織方式(1)鏈接方式

(2)索引方式圖2-10按索引方式組織PCB3.進(jìn)程控制塊的組織方式(1)鏈接方式(2)索引方式內(nèi)容概述2.1進(jìn)程的基本概念

2.2進(jìn)程控制

2.3進(jìn)程同步2.4經(jīng)典進(jìn)程的同步問(wèn)題2.5進(jìn)程通信2.6線程2.2進(jìn)程控制1.系統(tǒng)態(tài)和用戶態(tài)處理機(jī)的執(zhí)行狀態(tài)分系統(tǒng)態(tài)和用戶態(tài)兩種:(1)系統(tǒng)態(tài)(管態(tài)、核心態(tài)):有較高特權(quán),能執(zhí)行一切指令,訪問(wèn)所有寄存器和存儲(chǔ)區(qū)。

(2)用戶態(tài)(目態(tài)):有較低特權(quán),能執(zhí)行規(guī)定指令,訪問(wèn)指定寄存器和存儲(chǔ)區(qū)。 用戶程序運(yùn)行在用戶態(tài),不能執(zhí)行OS指令及區(qū)域。

OS內(nèi)核運(yùn)行在系統(tǒng)態(tài),進(jìn)程控制是由OS內(nèi)核實(shí)現(xiàn)的。2.2進(jìn)程控制2.進(jìn)程控制的功能

進(jìn)程控制是進(jìn)程管理中最基本的功能:創(chuàng)建新進(jìn)程終止已結(jié)束進(jìn)程終止由于某事件而無(wú)法運(yùn)行下去的進(jìn)程負(fù)責(zé)進(jìn)程的狀態(tài)轉(zhuǎn)換進(jìn)程控制一般由OS的內(nèi)核中的原語(yǔ)來(lái)實(shí)現(xiàn)的。2.2進(jìn)程控制3.原語(yǔ)由若干條指令構(gòu)成的“原子操作”過(guò)程,在執(zhí)行期間不可中斷,作為一個(gè)整體而不可分割。原子操作:一個(gè)操作中的所有動(dòng)作要么全做,要么全不做。原子操作在管態(tài)下執(zhí)行,常駐內(nèi)存。原語(yǔ)的作用是為了實(shí)現(xiàn)進(jìn)程的通信和控制。1.創(chuàng)建原語(yǔ)2.撤消原語(yǔ)3.阻塞原語(yǔ)4.喚醒原語(yǔ)5.掛起原語(yǔ)6.激活原語(yǔ)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.2.1進(jìn)程的創(chuàng)建圖2-9進(jìn)程樹(shù)1.進(jìn)程圖(ProcessGraph)進(jìn)程圖是用于描述一個(gè)進(jìn)程的家族關(guān)系的有向樹(shù),樹(shù)中的結(jié)點(diǎn)表示進(jìn)程。子進(jìn)程可以繼承父進(jìn)程的資源。撤消父進(jìn)程時(shí)必須同時(shí)撤消子進(jìn)程2.引起創(chuàng)建進(jìn)程的事件

(1)用戶登錄

(2)作業(yè)調(diào)度

(3)提供服務(wù)

(4)應(yīng)用請(qǐng)求3.進(jìn)程的創(chuàng)建步驟(1)申請(qǐng)空白PCB(2)為新進(jìn)程分配資源(3)初始化進(jìn)程控制塊(4)將新進(jìn)程插入就緒隊(duì)列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.2.2進(jìn)程的終止1.引起進(jìn)程終止的事件

1)正常結(jié)束

2)異常結(jié)束

3)外界干預(yù)2.進(jìn)程的終止過(guò)程

(1)從PCB集合中檢索出該進(jìn)程的PCB,讀出該進(jìn)程的狀態(tài)。

(2)若被終止進(jìn)程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進(jìn)程的執(zhí)行。

(3)若該進(jìn)程還有子孫進(jìn)程,應(yīng)將其所有子孫進(jìn)程予以終止。

(4)將被終止進(jìn)程所擁有的全部資源,歸還給其父進(jìn)程,或者歸還給系統(tǒng)。

(5)將被終止進(jìn)程(它的PCB)從所在隊(duì)列(或鏈表)中移出,等待其他程序來(lái)搜集信息。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.2.3進(jìn)程的阻塞與喚醒1.引起進(jìn)程阻塞和喚醒的事件

(1)請(qǐng)求系統(tǒng)服務(wù)(2)啟動(dòng)某種操作(3)新數(shù)據(jù)尚未到達(dá)(4)無(wú)新工作可做2.進(jìn)程阻塞過(guò)程進(jìn)程調(diào)用阻塞原語(yǔ)block()把自己阻塞,立即停止執(zhí)行,把進(jìn)程控制塊中的現(xiàn)行狀態(tài)由“執(zhí)行”改為阻塞,并將PCB插入阻塞隊(duì)列。將本進(jìn)程插入到具有相同事件的阻塞(等待)隊(duì)列。調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一就緒進(jìn)程,并進(jìn)行切換,亦即,保留被阻塞進(jìn)程的處理機(jī)狀態(tài)(在PCB中),再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置CPU的環(huán)境。3.進(jìn)程喚醒過(guò)程調(diào)用喚醒原語(yǔ)wakeup()將等待該事件的進(jìn)程喚醒。喚醒原語(yǔ)執(zhí)行的過(guò)程是把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒將該P(yáng)CB插入到就緒隊(duì)列中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.2.4進(jìn)程的掛起與激活1.進(jìn)程的掛起系統(tǒng)將利用掛起原語(yǔ)suspend()將指定進(jìn)程或處于阻塞狀態(tài)的進(jìn)程掛起。suspend()原語(yǔ)的執(zhí)行過(guò)程首先檢查被掛起進(jìn)程的狀態(tài),若處于活動(dòng)就緒狀態(tài),便將其改為靜止就緒;對(duì)于活動(dòng)阻塞狀態(tài)的進(jìn)程,則將之改為靜止阻塞。把該進(jìn)程的PCB復(fù)制到某指定的內(nèi)存區(qū)域。若被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度。2.進(jìn)程的激活過(guò)程系統(tǒng)將利用激活原語(yǔ)active()將指定進(jìn)程激活。active()原語(yǔ)執(zhí)行過(guò)程將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài),若是靜止就緒,將之改為活動(dòng)就緒;若為靜止阻塞便將之改為活動(dòng)阻塞。假如采用的是搶占調(diào)度策略,則每當(dāng)有新進(jìn)程進(jìn)入就緒隊(duì)列時(shí),應(yīng)檢查是否要進(jìn)行重新調(diào)度,即由調(diào)度程序?qū)⒈患せ钸M(jìn)程與當(dāng)前進(jìn)程進(jìn)行優(yōu)先級(jí)的比較,如果被激活進(jìn)程的優(yōu)先級(jí)更低,就不必重新調(diào)度;否則,立即剝奪當(dāng)前進(jìn)程的運(yùn)行,把處理機(jī)分配給剛被激活的進(jìn)程。內(nèi)容概述2.1進(jìn)程的基本概念

2.2進(jìn)程控制2.3進(jìn)程同步

2.4經(jīng)典進(jìn)程的同步問(wèn)題2.5進(jìn)程通信2.6線程2.3進(jìn)程同步

進(jìn)程同步的主要任務(wù)是對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上進(jìn)行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進(jìn)程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。2.3.1進(jìn)程同步的基本概念2.3.2信號(hào)量機(jī)制2.3.3信號(hào)量的應(yīng)用2.3.4管程機(jī)制2.3.1進(jìn)程同步的基本概念1.兩種形式的制約關(guān)系(1)間接相互制約關(guān)系源于資源共享。如A、B共享打印機(jī),若A申請(qǐng)打印時(shí),打印機(jī)已分配給B,則A只能阻塞,等B釋放后再改為就緒,又稱為“互斥”。(2)直接相互制約關(guān)系源于進(jìn)程之間的合作關(guān)系。如進(jìn)程A向B提供數(shù)據(jù),當(dāng)輸入緩沖空時(shí),B不能得到數(shù)據(jù)而阻塞;反之當(dāng)緩沖滿時(shí),A無(wú)法寫入而阻塞,又稱為“同步”。2.臨界資源定義:在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)的資源。例如:打印機(jī)、磁帶機(jī)、卡片輸入機(jī)、變量、表格、數(shù)據(jù)、指針、數(shù)組等。進(jìn)程之間采取互斥方式實(shí)現(xiàn)對(duì)這些資源的共享。例子:

生產(chǎn)者-消費(fèi)者(producer-consumer)問(wèn)題是一個(gè)著名的進(jìn)程同步問(wèn)題。有一群生產(chǎn)者進(jìn)程在生產(chǎn)產(chǎn)品,提供給消費(fèi)者進(jìn)程去消費(fèi)。不能向滿緩沖區(qū)投放產(chǎn)品,不能從空緩沖區(qū)中取產(chǎn)品。

一個(gè)數(shù)組緩沖池,有n個(gè)緩沖區(qū)。

buffer:array[0,1,…,n-1]ofitem

輸入指針inin∶=(in+1)modn。輸出指針outout∶=(out+1)modn。

counter:初始值為0。緩沖池中含有的產(chǎn)品數(shù)目。01n-1inout……producer:repeat{生產(chǎn)者進(jìn)程}

…produceaniteminnextp;//生產(chǎn)一個(gè)產(chǎn)品…whilecounter=ndono-op;buffer[in]∶=nextp;//將產(chǎn)品放入緩沖區(qū)內(nèi)

in∶=in+1modn;counter∶=counter+1;//緩沖池中產(chǎn)品數(shù)加一

untilfalse;consumer:repeat{消費(fèi)者進(jìn)程}

whilecounter=0dono-op;nextc∶=buffer[out];//從緩沖區(qū)中消費(fèi)產(chǎn)品

out∶=(out+1)modn;counter∶=counter-1;//緩沖池中產(chǎn)品數(shù)減一

consumertheiteminnextc;//消費(fèi)一個(gè)產(chǎn)品

untilfalse;

雖然上面的生產(chǎn)者程序和消費(fèi)者程序,在分別看時(shí)都是正確的,而且兩者在順序執(zhí)行時(shí)其結(jié)果也會(huì)是正確的,但若并發(fā)執(zhí)行時(shí),就會(huì)出現(xiàn)差錯(cuò),問(wèn)題就在于這兩個(gè)進(jìn)程共享變量counter。生產(chǎn)者對(duì)它做加1操作,消費(fèi)者對(duì)它做減1操作,這兩個(gè)操作在用機(jī)器語(yǔ)言實(shí)現(xiàn)時(shí),??捎孟旅娴男问矫枋觯簉egister1∶=counter;register2∶=counter;register1∶=register1+1;register2∶=register2-1;counter∶=register1;counter∶=register2;

假設(shè):counter的當(dāng)前值是5。如果生產(chǎn)者進(jìn)程先執(zhí)行左列的三條機(jī)器語(yǔ)言語(yǔ)句,然后消費(fèi)者進(jìn)程再執(zhí)行右列的三條語(yǔ)句,則最后共享變量counter的值仍為5;反之,如果讓消費(fèi)者進(jìn)程先執(zhí)行右列的三條語(yǔ)句,然后再讓生產(chǎn)者進(jìn)程執(zhí)行左列的三條語(yǔ)句,counter值也還是5,但是,如果按下述順序執(zhí)行,counter值是4。由于并發(fā)執(zhí)行而失去封閉性。register1∶=counter;(register1=5)register1∶=register1+1;(register1=6)register2∶=counter;(register2=5)register2∶=register2-1;(register2=4)counter∶=register1;(counter=6)counter∶=register2;(counter=4)共享資源的訪問(wèn)互斥3.臨界區(qū)不論是硬件臨界資源還是軟件臨界資源,多個(gè)進(jìn)程必須互斥地對(duì)它進(jìn)行訪問(wèn)。在每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段代碼稱為臨界區(qū)。每個(gè)進(jìn)程進(jìn)入臨界區(qū)之前應(yīng)先對(duì)欲訪問(wèn)的臨界資源進(jìn)行檢查,看是否正在被訪問(wèn)。如果此刻該臨界資源未被訪問(wèn),該進(jìn)程可進(jìn)入臨界區(qū),并設(shè)置它正在被訪問(wèn)的標(biāo)志,在臨界區(qū)之前執(zhí)行的這段代碼稱為進(jìn)入?yún)^(qū)。在臨界區(qū)后面也要加上一段代碼,用于將臨界區(qū)被訪問(wèn)的資源恢復(fù)為未被訪問(wèn)的標(biāo)志,稱為退出區(qū)。可把一個(gè)訪問(wèn)臨界資源的循環(huán)進(jìn)程描述如下:repeat

criticalsection; {臨界區(qū)}remaindersection; {剩余區(qū)}untilfalse;entrysectionexitsection{進(jìn)入?yún)^(qū)}{退出區(qū)}4.同步機(jī)制應(yīng)遵循的規(guī)則(1)空閑讓進(jìn):當(dāng)無(wú)進(jìn)程處于臨界區(qū)時(shí),應(yīng)允許一個(gè)進(jìn)程進(jìn)入臨界區(qū),以有效利用臨界資源。(2)忙則等待:當(dāng)有進(jìn)程進(jìn)入臨界區(qū)時(shí),其他進(jìn)程必須等待。(3)有限等待:對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證在有限時(shí)間內(nèi)進(jìn)入自己的臨界區(qū),防止“死等”。(4)讓權(quán)等待:當(dāng)進(jìn)程不能進(jìn)入其臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),防止“忙等”,不能一直用語(yǔ)句判斷能不能進(jìn),占用處理機(jī)。2.3進(jìn)程同步2.3.1進(jìn)程同步的基本概念2.3.2信號(hào)量機(jī)制2.3.3信號(hào)量的應(yīng)用1965年,荷蘭學(xué)者Dijkstra提出的信號(hào)量(Semaphores)機(jī)制是一種有效的進(jìn)程同步工具,所以P、V分別是荷蘭語(yǔ)的test(proberen)和increment(verhogen)。信號(hào)量機(jī)制已從整型信號(hào)量發(fā)展為記錄型信號(hào)量、AND型信號(hào)量,又進(jìn)一步發(fā)展為信號(hào)量集。信號(hào)量就是OS提供的管理公有資源的有效手段。信號(hào)量代表可用資源實(shí)體的數(shù)量。2.3.2信號(hào)量機(jī)制1.整型信號(hào)量除初始化外,僅能通過(guò)兩個(gè)標(biāo)準(zhǔn)的原子操作wait(S)和signal(S)來(lái)訪問(wèn)。也稱為P、V操作。wait和signal操作可描述為:wait(S):whileS≤0dono-op; S:=S-1;signal(S):S:=S+1;wait(S)和signal(S)是原子操作,因此它們?cè)趫?zhí)行時(shí)是不可中斷的。另外,信號(hào)量只能通過(guò)原語(yǔ)操作來(lái)訪問(wèn),不能被進(jìn)程調(diào)度所打斷。有“忙等”現(xiàn)象??砂岩粋€(gè)訪問(wèn)臨界資源的循環(huán)進(jìn)程描述如下:repeat

criticalsection; {臨界區(qū)}remaindersection; {剩余區(qū)}untilfalse;entrysectionexitsectionP(S)或wait(S);V(S)或signal(S);{進(jìn)入?yún)^(qū)}{退出區(qū)}2.記錄型信號(hào)量記錄型信號(hào)量(也稱資源信號(hào)量)機(jī)制,則是一種不存在“忙等”現(xiàn)象的進(jìn)程同步機(jī)制,它采用了記錄型的數(shù)據(jù)結(jié)構(gòu)。在采取了“讓權(quán)等待”的策略后,又會(huì)出現(xiàn)多個(gè)進(jìn)程等待訪問(wèn)同一臨界資源的情況。為此,在信號(hào)量機(jī)制中,除了需要一個(gè)用于代表資源數(shù)目的整型變量value外,還應(yīng)增加一個(gè)進(jìn)程鏈表L,用于鏈接上述的所有等待進(jìn)程。typesemaphore=recordvalue:integer;//資源數(shù)目

L:listofprocess;//進(jìn)程鏈表指針

endprocedurewait(S)varS:semaphore;beginS.value:=S.value-1;ifS.value<0thenblock(S.L);endproceduresignal(S)varS:semaphore;beginS.value:=S.value+1;ifS.value≤0thenwakeup(S.L);end請(qǐng)求一個(gè)單位的該類資源該類資源數(shù)減少一個(gè)自我阻塞,放棄處理機(jī)釋放一個(gè)單位資源該類資源增加一個(gè)喚醒進(jìn)程3.AND型信號(hào)量

在有些任務(wù)中,一個(gè)進(jìn)程先要獲得多個(gè)共享資源后才能執(zhí)行,若進(jìn)程A和B都要申請(qǐng)D和E兩種資源,設(shè)信號(hào)量Dmutex和Emutex的初值均為1在兩個(gè)進(jìn)程中都要包含兩個(gè)對(duì)Dmutex和Emutex的操作,即processA: processB:P(Dmutex); P(Emutex);P(Emutex); P(Dmutex);若進(jìn)程A和B按下述次序交替執(zhí)行P操作:processA:P(Dmutex);于是Dmutex=0processB:P(Emutex);于是Emutex=0processA:P(Emutex);于是Emutex=-1A阻塞

processB:P(Dmutex);于是Dmutex=-1B阻塞

AND同步機(jī)制的基本思想是:將進(jìn)程在整個(gè)運(yùn)行過(guò)程中需要的所有資源,一次性全部地分配給進(jìn)程,待進(jìn)程使用完后再一起釋放。只要尚有一個(gè)資源未能分配給進(jìn)程,其它所有可能為之分配的資源,也不分配給他。亦即,對(duì)若干個(gè)臨界資源的分配,采取原子操作方式:要么全部分配到進(jìn)程,要么一個(gè)也不分配。由死鎖理論可知,這樣就可避免上述死鎖情況的發(fā)生。為此,在P操作中,增加了一個(gè)“AND”條件,故稱為AND同步,或稱為同時(shí)P操作,

即SP(Simultaneouswait)定義如下:SP:Swait(S1,S2,…,Sn)ifSi≥1and…andSn≥1then{每個(gè)資源都可用}fori:=1tondoSi:=Si-1;{分配所有資源}endforelse{否則,將進(jìn)程放到等待資源Si的隊(duì)列中}

“阻塞”(去第1個(gè)Si<1的“等待Si”的阻塞隊(duì)列中排隊(duì),并置它的程序計(jì)數(shù)器于SP操作的起始點(diǎn))endifSV:Ssignal(S1,S2,…,Sn)fori:=1tondoSi=Si+1;{釋放所有資源}

“喚醒”(所有“等待Si”的阻塞進(jìn)程,置為“就緒”狀態(tài),移到就緒隊(duì)列中)endfor;4.信號(hào)量集:一次申請(qǐng)多個(gè)資源在記錄型信號(hào)量機(jī)制中,P(S)和V(S)操作僅能對(duì)信號(hào)量施以加1或減1操作,意味著每次只能獲得或釋放一個(gè)單位的臨界資源,效率較低。在有些情況下,當(dāng)資源數(shù)量低于某下限值時(shí)便不予分配。因而,在每次分配之前,都必須測(cè)試該資源的數(shù)量,看其是否大于下限值。在對(duì)AND型信號(hào)量機(jī)制擴(kuò)充的基礎(chǔ)上,形成一般化的“信號(hào)量集”機(jī)制。SP:Swait(S1,t1,d1,…,Sn,tn,dn)ifSi≥t1and…andSn≥tnthenfori:=1tondoSi:=Si-di;{一次分配d個(gè)資源}endforelse

“阻塞”(去第1個(gè)Si<ti的“等待Si”的阻塞隊(duì)列中排隊(duì))endif

SV:Ssignal(S1,d1,…,Sn,dn)fori:=1tondoSi:=Si+di;{釋放所有資源}“喚醒”(所有“等待Si”的阻塞進(jìn)程,置為“就緒”狀態(tài),移到就緒隊(duì)列中)endfor;一般“信號(hào)量集”的幾種特殊情況:(1)SP(S,d,d)。此時(shí)在信號(hào)量集中只有一個(gè)信號(hào)量S,但允許它每次申請(qǐng)d個(gè)資源,當(dāng)現(xiàn)有資源數(shù)少于d時(shí),不予分配。

(2)SP(S,1,1)。此時(shí)的信號(hào)量集已蛻化為一般的記錄型信號(hào)量(S>1時(shí))或互斥信號(hào)量(S=1時(shí))。

(3)SP(S,1,0)。這是一種很特殊且很有用的信號(hào)量操作。當(dāng)S≥1時(shí),允許多個(gè)進(jìn)程進(jìn)入某特定區(qū);當(dāng)S變?yōu)?后,將阻止任何進(jìn)程進(jìn)入特定區(qū)。換言之,它相當(dāng)于一個(gè)可控開(kāi)關(guān)。wait(S):whileS≤0dono-op; S:=S-1;signal(S):S:=S+1;procedurewait(S)varS:semaphore;beginS.value:=S.value-1;ifS.value<0thenblock(S.L);endproceduresignal(S)varS:semaphore;beginS.value:=S.value+1;ifS.value≤0thenwakeup(S.L);end記錄型信號(hào)量:整型信號(hào)量:2.3進(jìn)程同步2.3.1進(jìn)程同步的基本概念2.3.2信號(hào)量機(jī)制2.3.3信號(hào)量的應(yīng)用2.3.3信號(hào)量的應(yīng)用1.利用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥Varmutex:semaphore:=1;//信號(hào)量初始值為1beginparbeginprocess1:begin repeat

P(mutex);//占用資源

criticalsection

V(mutex);

//釋放資源

remainderseetion untilfalse; endprocess2:begin repeat

P(mutex); criticalsection

V(mutex); remaindersection untilfalse; endparend利用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥利用整型信呈量機(jī)制實(shí)現(xiàn)進(jìn)程互斥時(shí)應(yīng)注意,P(mutex)和V(mutex)必須成對(duì)出現(xiàn)。缺少P(mutex)會(huì)導(dǎo)致系統(tǒng)混亂,不能保證對(duì)臨界資源的互斥訪問(wèn)。缺少V(mutex)將會(huì)使臨界資源永遠(yuǎn)不被釋放,從而使因等待該資源而阻塞的進(jìn)程不再被喚醒。2.利用信號(hào)量實(shí)現(xiàn)前趨關(guān)系設(shè)有兩個(gè)并發(fā)進(jìn)程P1和P2。P1中有語(yǔ)句S1,P2中有語(yǔ)句S2,希望在執(zhí)行完S1后執(zhí)行S2。進(jìn)程P1和P2共享一個(gè)公用信號(hào)量a,并賦初值為0。進(jìn)程P1:S1;V(a);進(jìn)程P2:P(a);S2;由于a被初始化為0,若P2先執(zhí)行,必定阻塞,只有在進(jìn)程P1執(zhí)行完使S增為1后,P2才能執(zhí)行S2操作。a圖2-10前趨圖舉例Vara,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0;beginparbegin beginS1;V(a);V(b);end; beginP(a);S2;V(c);V(d);end; beginP(b);S3;V(e);end; beginP(c);S4;V(f);end; beginP(d);S5;V(g);end; beginP(f);P(g);P(e);S6;end;parendendabcdegf圖2-10前趨圖舉例內(nèi)容概述2.1進(jìn)程的基本概念

2.2進(jìn)程控制2.3進(jìn)程同步2.4經(jīng)典進(jìn)程的同步問(wèn)題

2.5進(jìn)程通信2.6線程2.4經(jīng)典進(jìn)程的同步問(wèn)題2.4.1生產(chǎn)者—消費(fèi)者問(wèn)題2.4.2哲學(xué)家進(jìn)餐問(wèn)題2.4.3讀者—寫者問(wèn)題未考慮進(jìn)程的互斥與同步問(wèn)題,會(huì)造成數(shù)據(jù)Counter的不定性。生產(chǎn)者—消費(fèi)者問(wèn)題是相互合作的進(jìn)程關(guān)系的一種抽象。例如,在輸入時(shí),輸入進(jìn)程是生產(chǎn)者,計(jì)算進(jìn)程是消費(fèi)者;而在輸出時(shí),則計(jì)算進(jìn)程是生產(chǎn)者,而打印進(jìn)程是消費(fèi)者。2.4.1生產(chǎn)者—消費(fèi)者問(wèn)題producer:repeat{生產(chǎn)者進(jìn)程}

…produceaniteminnextp;//生產(chǎn)一個(gè)產(chǎn)品…whilecounter=ndono-op;buffer[in]∶=nextp;//將產(chǎn)品放入緩沖區(qū)內(nèi)

in∶=in+1modn;counter∶=counter+1;//緩沖池中產(chǎn)品數(shù)加一

untilfalse;consumer:repeat{消費(fèi)者進(jìn)程}

whilecounter=0dono-op;nextc∶=buffer[out];//從緩沖區(qū)中消費(fèi)產(chǎn)品

out∶=(out+1)modn;counter∶=counter-1;//緩沖池中產(chǎn)品數(shù)減一

consumertheiteminnextc;//消費(fèi)一個(gè)產(chǎn)品

untilfalse;1.利用記錄型信號(hào)量解決生產(chǎn)者—消費(fèi)者問(wèn)題只要緩沖池未滿,生產(chǎn)者便可將消息送入緩沖池。只要緩沖池未空,消費(fèi)者便可從緩沖池中取走一個(gè)消息?;コ庠L問(wèn)緩沖池。設(shè)置三個(gè)信號(hào)量:empty:表示可供使用的緩沖區(qū)數(shù),其初值為n。full:表示放有消息的緩沖區(qū)數(shù),其初值為0。mutex:互斥信號(hào)量,初值為1,表示各進(jìn)程互斥進(jìn)入臨界區(qū),保證任何時(shí)候只有一個(gè)進(jìn)程使用緩沖區(qū)。Varmutex,empty,full:semaphore:=1,n,0;buffer:array[0,…,n-1]ofitem;in,out:integer:=0,0;beginparbeginproducer:{生產(chǎn)者進(jìn)程}beginrepeat…

生產(chǎn)一條消息=>nextp;…P(empty);{empty減1}

P(mutex);buffer(in):=nextp;in:=(in+1)modn;{移動(dòng)生產(chǎn)指針}

V(mutex);V(full);{full增1}untilfalse;endconsumer:{消費(fèi)者進(jìn)程}beginrepeatP(full);

P(mutex);nextc:=buffer(out);out:=(out+1)modn;

V(mutex);V(empty);

消費(fèi)nextc中的一條消息;

untilfalse;endparendend在生產(chǎn)者—消費(fèi)者問(wèn)題中要注意以下幾點(diǎn):在每個(gè)程序中用于實(shí)現(xiàn)互斥的P(mutex)和V(mutex)必須成對(duì)地出現(xiàn);對(duì)資源信號(hào)量empty

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論