計(jì)算機(jī)操作系統(tǒng)講義9_第1頁(yè)
計(jì)算機(jī)操作系統(tǒng)講義9_第2頁(yè)
計(jì)算機(jī)操作系統(tǒng)講義9_第3頁(yè)
計(jì)算機(jī)操作系統(tǒng)講義9_第4頁(yè)
計(jì)算機(jī)操作系統(tǒng)講義9_第5頁(yè)
已閱讀5頁(yè),還剩75頁(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)介

《計(jì)算機(jī)操作系統(tǒng)》講義

一、課程簡(jiǎn)介

操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的核心,它負(fù)責(zé)控制和管理整個(gè)計(jì)算機(jī)系統(tǒng)的軟

硬件資源,并使之協(xié)調(diào)工作。隨著計(jì)算機(jī)的功能不斷地發(fā)展和創(chuàng)新,計(jì)算機(jī)

系統(tǒng)仍然遵循馮?諾依曼提出的體系結(jié)構(gòu),操作系統(tǒng)的核心功能依然是對(duì)處

理器、存儲(chǔ)器和輸入輸出設(shè)備的管理。對(duì)操作系統(tǒng)的基本原理和核心功能的

學(xué)習(xí)和理解,是進(jìn)一步創(chuàng)新的基礎(chǔ)。

學(xué)習(xí)本課程,使學(xué)生了解操作系統(tǒng)的基本概念、功能、分類和發(fā)展歷史,

掌握操作系統(tǒng)的使用操作方法,掌握進(jìn)程和線程的管理技術(shù),掌握處理機(jī)的

管理和調(diào)度策略,掌握存儲(chǔ)管理系統(tǒng)、文件系統(tǒng)和設(shè)備管理技術(shù),在此基礎(chǔ)

上結(jié)合Linux的進(jìn)程和存儲(chǔ)管理與文件系統(tǒng)進(jìn)行深入學(xué)習(xí)與分析,掌握目前

主流操作系統(tǒng)Linux的基本原理和功能以及特點(diǎn)。使學(xué)生比較清楚地了解現(xiàn)

在主流操作系統(tǒng)的一般面貌和內(nèi)部結(jié)構(gòu),為進(jìn)一步學(xué)習(xí)軟、硬件技術(shù)及移植、

修改、設(shè)計(jì)和使用系統(tǒng)打下良好的理論基礎(chǔ)。通過(guò)本課程的學(xué)習(xí),可深刻理

解計(jì)算機(jī)軟硬件如何協(xié)同工作,而且明確開(kāi)發(fā)大型軟件必然需要取得操作系

統(tǒng)的支持,為以后設(shè)計(jì)和實(shí)現(xiàn)大型應(yīng)用軟件和系統(tǒng)軟件打好基礎(chǔ);具備基本

的分析問(wèn)題和解決問(wèn)題的能力。課程中應(yīng)使學(xué)生掌握計(jì)算機(jī)操作系統(tǒng)的基本

理論知識(shí),基本原理與設(shè)計(jì)分析方法,掌握基本的實(shí)驗(yàn)技能。學(xué)生學(xué)習(xí)本課

程后,為后續(xù)課程《計(jì)算機(jī)網(wǎng)絡(luò)》、《數(shù)據(jù)庫(kù)原理》、《編譯原理》、《計(jì)算機(jī)接

口技術(shù)》、《計(jì)算機(jī)組成原理》、《嵌入式系統(tǒng)》、《軟件工程》的學(xué)習(xí)打下一個(gè)

堅(jiān)實(shí)的基礎(chǔ)。

二、課程教材

教材:張堯?qū)W,史美林,張高.計(jì)算機(jī)操作系統(tǒng)教程(第3版).北京:清華大

學(xué)出版社,2006

教學(xué)內(nèi)容:

第一章緒論

第二章操作系統(tǒng)用戶界面

第三章進(jìn)程管理

第四章處理機(jī)調(diào)度

第五章存儲(chǔ)管理

第六章進(jìn)程與存儲(chǔ)管理示例

第七章文件系統(tǒng)

第八章設(shè)備管理

第九章Linux文件系統(tǒng)

三、課程安排

1、學(xué)時(shí)安排

總學(xué)時(shí):56

理論學(xué)時(shí):46

實(shí)驗(yàn)學(xué)時(shí):10

2、參考書(shū)目

[1]張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京:清華

大學(xué)出版社,2006

[2]湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,

2001

[3]AndrewS.Tanenbaum.ModernOperatingSystems,SecondEdition.Englewood

Cliffs,N.J,PrenticeHall,2001

14J屠祁等編.操作系統(tǒng)基礎(chǔ)(第三版).北京:清華大學(xué)出版社,2000

[5]馮耀霖等編.操作系統(tǒng).西安:西安電子科技大學(xué)出版社,2001

[6]左萬(wàn)歷.計(jì)算機(jī)操作系統(tǒng)教程(第二版).北京:高等教育出版社,2004

備課札記

第一章操作系統(tǒng)引論

主要內(nèi)容:

本章主要介紹什么是操作系統(tǒng);操作系統(tǒng)在計(jì)算機(jī)

系統(tǒng)中的地位、作用;操作系統(tǒng)的發(fā)展過(guò)程;操作系統(tǒng)

的基本特征和功能;操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)模式;并對(duì)操

作系統(tǒng)的今后發(fā)展動(dòng)向和現(xiàn)在流行的操作系統(tǒng)進(jìn)行介

紹。

教學(xué)安排:

理論教學(xué);共2學(xué)時(shí)y

1.1什么是操作系統(tǒng)

一、系統(tǒng)軟件的構(gòu)成

銀行系統(tǒng)航空訂票系統(tǒng)游戲}應(yīng)用程序

編譯器編輯器命令解釋器

系統(tǒng)程序

操作系統(tǒng)

機(jī)器語(yǔ)言

微程序硬件

物理設(shè)備

二、操作系統(tǒng)的作用

1、操作系統(tǒng)作為用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口

用戶通過(guò)兩種方式使用計(jì)算機(jī):一是命令方式;二是系統(tǒng)

調(diào)用方式。

2、操作系統(tǒng)作為計(jì)算機(jī)系統(tǒng)資源的管理者

系統(tǒng)資源分為:處理機(jī)資源(一個(gè)或多個(gè))、存儲(chǔ)器資源、

I/O設(shè)備資源以及信息資源。

相應(yīng)操作系統(tǒng)的管理分為:處理機(jī)管理(進(jìn)程管理)、存儲(chǔ)

器管理、I/O設(shè)備管理和文件管理

3、操作系統(tǒng)作為擴(kuò)充機(jī)器一虛擬機(jī)

計(jì)算機(jī)安裝了操作系統(tǒng)后,易于程序設(shè)計(jì)人員在邏輯上編

寫(xiě)程序,方便了用戶使用。

三、操作系統(tǒng)的定義

操作系統(tǒng)可以定義為如下3個(gè)方面的程序集合:

1、控制和管理計(jì)算機(jī)系統(tǒng)的硬件和軟件資源;

2、合理地組織計(jì)算機(jī)的工作流程;備課札記

3、方便用戶的使用。

1.2操作系統(tǒng)的發(fā)展史和分類

一、操作系統(tǒng)的發(fā)展簡(jiǎn)史

二、操作系統(tǒng)分類

迄今為止,各類操作系統(tǒng)均屬于下列操作系統(tǒng)之一或它們的組

介.

1、單用戶(微機(jī))操作系統(tǒng);

2、批處理系統(tǒng);

3、分時(shí)系統(tǒng);

4、實(shí)時(shí)系統(tǒng);

5、網(wǎng)絡(luò)操作系統(tǒng);

6、分布式操作系統(tǒng);

7、多處理機(jī)操作系統(tǒng);

其中前4類操作系統(tǒng)的運(yùn)行環(huán)境以單處理機(jī)系統(tǒng)為主,后3類以多

計(jì)算機(jī)系統(tǒng)為主。備課札記

1.3操作系統(tǒng)的特征與功能

一、操作系統(tǒng)的特征

1并發(fā)(Concurrence)

指宏觀上在一段時(shí)間內(nèi)有多道程序在同時(shí)運(yùn)行,而微觀上

這些程序是在交替執(zhí)行。

*注意區(qū)分并行。并行是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)

生。

2^共享(Sharing)-------------

程序的并發(fā)執(zhí)行使系統(tǒng)中的全部資源不在為某個(gè)程序所獨(dú)

占,而是有多個(gè)程序共同使用。

3、虛擬(Virtual)

多道程序設(shè)計(jì)技術(shù)把一臺(tái)物理計(jì)算機(jī)虛擬為多臺(tái)邏輯上的

計(jì)算機(jī),使的每個(gè)用戶都感覺(jué)是“獨(dú)占”計(jì)算機(jī)。

4、異步性(Asynchronism)-------------

指一組事件在多次出現(xiàn)時(shí),它們出現(xiàn)的時(shí)間和次序沒(méi)有一

定規(guī)律。多道程序環(huán)境下,指每道持續(xù)均以人們不可預(yù)知的速

度向前推進(jìn)。

其中并發(fā)和共享是操作系統(tǒng)的兩個(gè)基本特征。

二、操作系統(tǒng)的功能

五大管理功能:

1、進(jìn)程管理一處理機(jī)管理

主要任務(wù):對(duì)處理機(jī)的分配和運(yùn)行實(shí)施有效的管理。

2、存儲(chǔ)器管理

主要任務(wù):對(duì)內(nèi)存進(jìn)行分配、保護(hù)和擴(kuò)充。

3、設(shè)備管理

主要任務(wù):根據(jù)設(shè)備分配原則對(duì)設(shè)備進(jìn)行分配,使設(shè)備與

主機(jī)并行工作,為用戶提供良好的設(shè)備使用界面。

4、文件管理

主要任務(wù):有效地管理文件的存儲(chǔ)空間,合理地組織和管

理文件系統(tǒng),為文件訪問(wèn)和文件保護(hù)提供良好的使用手段。

5、作業(yè)管理

作業(yè):是用戶需要計(jì)算機(jī)完成任務(wù)的總和。

主要任務(wù):根據(jù)用戶要求對(duì)作業(yè)的運(yùn)行進(jìn)行合理的組織和

控制。

1.4操作家統(tǒng).結(jié)構(gòu)設(shè)計(jì)模式

1、模塊化結(jié)構(gòu)模式

備課札記

系統(tǒng)由許多標(biāo)準(zhǔn)的、可兼容的基本單位(模塊)構(gòu)成。各模塊

功能獨(dú)立,可以單獨(dú)設(shè)計(jì),模塊之間通過(guò)規(guī)定的接口相互調(diào)用。

系統(tǒng)開(kāi)發(fā)周期短,但模塊之間調(diào)用關(guān)系復(fù)雜、相互依賴,使分

析、移植和維護(hù)系統(tǒng)較為困難。

2、層次化結(jié)構(gòu)模式

把操作系統(tǒng)分成許多基本的模塊,并將這些模塊按照某種邏輯

關(guān)系進(jìn)行分層,各層之間只能單向依賴,即上層軟件基于下層之

后,不能構(gòu)成循環(huán)。

整個(gè)系統(tǒng)的正確性由各層次的正確性來(lái)保證,易于保證可靠性,

也便于維護(hù)和移植。

3、客戶/服務(wù)器結(jié)構(gòu)模式

操作系統(tǒng)的基本功能構(gòu)成了內(nèi)核。用戶進(jìn)程(即客戶進(jìn)程)向

服務(wù)器進(jìn)程發(fā)出請(qǐng)求,服務(wù)器進(jìn)程完成操作后,把結(jié)果返回給客

戶進(jìn)程。服務(wù)器進(jìn)程運(yùn)行在用戶態(tài)下而不是核心態(tài)下。

4、對(duì)象模式

利用面向?qū)ο蠹夹g(shù)設(shè)計(jì)的操作系統(tǒng)。

5、對(duì)稱多處理模式

操作系統(tǒng)工作在所有的處理機(jī)上且共享同一內(nèi)存。

1.5主要操作系統(tǒng)的介紹

一、Windows系列

個(gè)人操作系統(tǒng)商用操作系統(tǒng)

1985Windows1.0

1987Windows2.0

1990Windows3.0

1993Windows3.XWindowsNT3.1(NT第1版)1993

WindowsNT3.5(NT第2版)1994

1995Windows95WindowsNTs.51(NT第3版)1995

WindowsNT4.0(NT第4版)1996

1998Windows98WindowsCE1998

2000WindowsMEWindows2000(NT5.0)2000

2001WindowsXP

二、UNIX系列備課札記

三、Linux發(fā)展

Linux是由LinusTorvalds于1991年開(kāi)發(fā)的。

1991年9月,Linux0.0.1,很不完善。

1991年10月,Linux0.0.2,第一個(gè)“正式”版本。兩周后0.0.3。

1991年12月,Linux0.1.0,已經(jīng)有許多人在上面工作了。

1994年3月,Linux1.0

1.6小結(jié)

操作系統(tǒng)是由一系列程序模塊組成的,它的基本功能是資源管理和方

便用戶:它管理處理機(jī)、內(nèi)存、I/O設(shè)備和文件,提供用戶接口。

操作系統(tǒng)發(fā)展40年來(lái),主要有兩個(gè)目的:第一,為程序開(kāi)發(fā)和執(zhí)行提

供一個(gè)方便的環(huán)境;第二,為保證計(jì)算機(jī)系統(tǒng)順利執(zhí)行,操作系統(tǒng)對(duì)各個(gè)

計(jì)算機(jī)活動(dòng)進(jìn)行調(diào)度。

操作系統(tǒng)的形成和發(fā)展是與計(jì)算機(jī)硬件發(fā)展密切相關(guān)的。

操作系統(tǒng)這類系統(tǒng)軟件有自己的基本特征,這就是:并發(fā)、共享和異步性。

操作系統(tǒng)提供大量的服務(wù),在最低層是系統(tǒng)調(diào)用,它允許正在運(yùn)行的程序直接得到

操作系統(tǒng)的服務(wù);在較高層,命令解釋程序?yàn)橛脩籼峁┱?qǐng)求服務(wù)的機(jī)制,而不必編寫(xiě)程

第二章進(jìn)程的描述與控制

乙£要內(nèi)容:

本章的重點(diǎn)在于建立進(jìn)程的概念,深入理解進(jìn)程動(dòng)態(tài)性以及

進(jìn)程間的相互作用。程序是靜態(tài)的,進(jìn)程是動(dòng)態(tài)的。進(jìn)程有不同

的狀態(tài),在一定的條件下發(fā)生狀態(tài)變遷,每個(gè)進(jìn)程有惟一的進(jìn)程

控制塊(PCB),PCB是進(jìn)程存在的惟一標(biāo)志。

教學(xué)安排:

,理論教學(xué);共6學(xué)時(shí)

2.1前趨圖和程序執(zhí)行

-、前趨圖的定義

1、前趨圖

前趨圖是一個(gè)有向無(wú)環(huán)圖。有向是指結(jié)點(diǎn)Pi到Pj有邊,用〈Pi,Pj)表示。無(wú)

環(huán)是指在整個(gè)圖中不存在循環(huán)。

2、前趨圖的表示

使用兩個(gè)集合來(lái)表示。一個(gè)是結(jié)點(diǎn)集合“P”,另一個(gè)是前趨關(guān)系(有向邊)的

集合“一”。

例:

P={P1,P2,P3,P4,P5,P6,P7},

一={<P1,P2),〈Pl,P3),<P2,P4>,<P3,P5),<P4,P6),<P5,P6〉,<P6,

P7)}0

二、程序的順序執(zhí)行(單道程序設(shè)計(jì)環(huán)境)

備課札記

順序程序活動(dòng)有三個(gè)主要特點(diǎn):

(1)程序所規(guī)定的動(dòng)作在機(jī)器上嚴(yán)格地按順序執(zhí)行。備課札記

(2)只有程序本身的動(dòng)作才能改變程序的運(yùn)行環(huán)境。

(3)程序的執(zhí)行結(jié)果與程序運(yùn)行的速度無(wú)關(guān)。

上述特點(diǎn)概括起來(lái)就是程序順序性、封閉性和可再現(xiàn)性。所謂順序性

就是處理機(jī)的操作嚴(yán)格按程序所規(guī)定的順序執(zhí)行,即程序和機(jī)器執(zhí)行程序

的操作一一對(duì)應(yīng)。所謂封閉性就是指程序一旦運(yùn)行起來(lái),其計(jì)算結(jié)果僅取

決于程序本身;除了人為地改變運(yùn)行狀態(tài)或機(jī)器出現(xiàn)故障外,沒(méi)有別的因

素能影響程序運(yùn)行的過(guò)程。所謂可再現(xiàn)性就是當(dāng)機(jī)器在同一數(shù)據(jù)集上重復(fù)

執(zhí)行同一程序,每次執(zhí)行都會(huì)得到相同的結(jié)果。

程序順序執(zhí)行的特征:順序性、封閉性、可再現(xiàn)性

三、程序的并發(fā)執(zhí)行(多道程序設(shè)計(jì)環(huán)境)

1、多道程序設(shè)計(jì)

在硬件引入通道和中斷機(jī)構(gòu)后,使得處理機(jī)和外部設(shè)備之間,外部設(shè)

備和外部設(shè)備之間可以并行操作。這樣就引入了多道程序設(shè)計(jì)技術(shù)。

多道程序設(shè)計(jì)是在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行兩個(gè)或更多個(gè)程序。從宏觀

上看,系統(tǒng)中的多個(gè)程序都同時(shí)得到執(zhí)行,從微觀上看它們是在交替執(zhí)行,

即程序是并發(fā)執(zhí)行的。多道程序設(shè)計(jì)具有提高系統(tǒng)資源利用率和增加作業(yè)

吞吐量的優(yōu)點(diǎn)。

例:(一個(gè)極端化的例子,但能說(shuō)明問(wèn)題)

假定有兩道作業(yè)A和B都在執(zhí)行,每個(gè)作業(yè)都是執(zhí)行一秒鐘,然后等

待一秒鐘,進(jìn)行數(shù)據(jù)輸入,隨后再執(zhí)行,再等待……一直重復(fù)60次。如果

按單道方式,先執(zhí)行作業(yè)A,A作完了再執(zhí)行B,那么兩個(gè)作業(yè)都運(yùn)行完,

共需要4分鐘,CPU的利用率為百分之五十。如果我們采用多道程序技術(shù)

來(lái)執(zhí)行同樣的作業(yè)A和B就能大大改進(jìn)系統(tǒng)性能,作業(yè)A先運(yùn)行,它運(yùn)行

一秒后等待輸入。此時(shí)讓B運(yùn)行,B運(yùn)行一秒后等待輸入,此時(shí)恰好A輸

入完,可以運(yùn)行了,……就這樣在CPU上交替地運(yùn)行A和B,在這種理想

的情況下,CPU不空轉(zhuǎn),其使用率升到百分之百,并且吞吐量也隨之增加

了。

2、并發(fā)程序的表示

為了在高級(jí)語(yǔ)言以及描述程序中的并發(fā)成分,Dijkstra引出了一組并

發(fā)語(yǔ)句Parbegin/Parendo

具體形式:

Parbegin

S1;

S2;

Sn;

parend備課札記

其中SI,S2,…,Sn表示可以并發(fā)執(zhí)行的語(yǔ)句。

3、程序并發(fā)執(zhí)行時(shí)的特征-------

1)間斷性(制約性)

并發(fā)程序在執(zhí)行期間可以相互制約

2)失去封閉性

由于資源共享,所以資源狀態(tài)的改變不再取決于某一個(gè)程序,

而是由并發(fā)執(zhí)行的多個(gè)程序所共同決定。

3)不可再現(xiàn)性

失去封閉性后,對(duì)于同一個(gè)程序來(lái)說(shuō),即使初始條件相同,但

在程序重復(fù)執(zhí)行時(shí).,因資源狀態(tài)受到其他并發(fā)程序的影響,每次

并不相同,所以其運(yùn)行的結(jié)果可能不同。

四、程序并發(fā)執(zhí)行的條件

程序的并發(fā)執(zhí)行能有效的提高資源利用率和系統(tǒng)的吞吐量,但并

發(fā)執(zhí)行也帶來(lái)了“不可再現(xiàn)性”缺點(diǎn)。為了去掉這一缺點(diǎn),由Bernstein-------

于1966年提出了程序并發(fā)執(zhí)行的條件。

1、讀集和寫(xiě)集

R(Pi)={al,a2,…,am},表示程序Pi在執(zhí)行期間所需參考

的所有變量的集合,稱“讀集”。

W(Pi)={bl,b2,…,bn},表示程序Pi在執(zhí)行期間要參改變一

的所有變量的集合,稱“寫(xiě)集”。

2、程序并發(fā)執(zhí)行的條件

程序Pi和Pj若滿足下述條件,他們能并發(fā)執(zhí)行,且具有“可再

現(xiàn)性”。

Bernstein條件:

R(Pi)nw(Pj)UR(PJ)nw(Pi)uw(Pi)nw(Pj)={}o

2.2進(jìn)程的描述

一、進(jìn)程的定義與特征

1、進(jìn)程概念的引入

由于多道程序并發(fā)執(zhí)行時(shí)共享系統(tǒng)資源,共同決定這些資源的狀態(tài),

因此系統(tǒng)中各程序在執(zhí)行過(guò)程中就出現(xiàn)了相互制約的關(guān)系,程序的執(zhí)行出

現(xiàn)“走走停停”的新?tīng)顟B(tài)。這些都是在程序的動(dòng)態(tài)過(guò)程中發(fā)生的。而程序

本身是機(jī)器能夠翻譯或執(zhí)行的一組動(dòng)作或指令,是靜止的。因此,用程序

這個(gè)靜態(tài)概念已不能如實(shí)反映程序并發(fā)執(zhí)行過(guò)程中的這些特征。為此,人們引入“進(jìn)程”

(Process)這一概念來(lái)描述程序動(dòng)態(tài)執(zhí)行過(guò)程的性質(zhì)。即進(jìn)程就是操作系統(tǒng)為進(jìn)行處理

機(jī)管理而引入的概念。

2、進(jìn)程的定義備課札記

進(jìn)程定義為:在并發(fā)環(huán)境下,程序在一個(gè)數(shù)據(jù)集合上的的執(zhí)行過(guò)程。

即:進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過(guò)程。

3、進(jìn)程的特征

序號(hào)特征說(shuō)明

是動(dòng)態(tài)概念,有一事實(shí)

上的生命期,是動(dòng)態(tài)地

1動(dòng)態(tài)性

產(chǎn)生和消亡的。

多個(gè)進(jìn)程的實(shí)體能存在

2并發(fā)性于同一內(nèi)存中,在一段

時(shí)間內(nèi)都能運(yùn)行。

作為資源申請(qǐng)和獨(dú)立調(diào)

獨(dú)立性

3度的基本單位。

各進(jìn)程向前推進(jìn)的速度

4異步性

是不可預(yù)知的。

程序段、數(shù)據(jù)段、控制

5結(jié)構(gòu)性

結(jié)構(gòu)和堆棧段等組成。

*小結(jié):進(jìn)程與程序的主要區(qū)別:

序號(hào)進(jìn)程程序

1動(dòng)態(tài)的靜態(tài)的

是獨(dú)立性的,能并發(fā)執(zhí)不能并發(fā)執(zhí)行

2

程序和進(jìn)程無(wú)一一對(duì)應(yīng)關(guān)系。一個(gè)程序可由多個(gè)進(jìn)程

3共用;另一方面,一個(gè)進(jìn)程在其活動(dòng)中又可順序地執(zhí)

4異步運(yùn)行,會(huì)相互制約程序不具備此特征

二、進(jìn)程的基本狀態(tài)

進(jìn)程的動(dòng)態(tài)性是由它的狀態(tài)和轉(zhuǎn)換體現(xiàn)出來(lái)的。

1、進(jìn)程的基本狀態(tài)

三種基本狀態(tài)是:執(zhí)行態(tài)、就緒態(tài)和阻塞態(tài)(或等待態(tài))

(1)執(zhí)行態(tài)(Running)

運(yùn)行狀態(tài)是指當(dāng)前進(jìn)程已分配到CPU,它的程序正在處理機(jī)上執(zhí)行時(shí)的狀態(tài)。

(2)就緒態(tài)(Ready)

就緒狀態(tài)是指進(jìn)程已具備運(yùn)行條件,但因?yàn)槠渌M(jìn)程正占用CPU,所

以暫時(shí)不能運(yùn)行而等待分配CPU的狀態(tài)。備課札記

(3)阻塞態(tài)(Blocked)------------

阻塞態(tài)是指進(jìn)程因等待某種事件發(fā)生而暫時(shí)不能運(yùn)行的狀態(tài)。

進(jìn)程的狀態(tài)及其轉(zhuǎn)換:如下圖

2、進(jìn)程狀態(tài)的轉(zhuǎn)換

(1)就緒一一執(zhí)行

處于就緒狀態(tài)的進(jìn)程被調(diào)度程序選中,分配到CPU后,該進(jìn)程的狀態(tài)

就由就緒態(tài)變?yōu)檫\(yùn)行態(tài)。

(2)執(zhí)行一一阻塞

正在運(yùn)行的進(jìn)程因某個(gè)條件未滿足而放棄對(duì)CPU的占用,這個(gè)進(jìn)程的

狀態(tài)就由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。

(3)阻塞一一就緒

處于阻塞狀態(tài)的進(jìn)程所等待事件發(fā)生了,系統(tǒng)就把該進(jìn)程的狀態(tài)由阻

塞態(tài)變?yōu)榫途w態(tài)。

(4)執(zhí)行----就緒

正在運(yùn)行的進(jìn)程如用完了本次分配給它的CPU時(shí)間片,它就得從CPU

上退下來(lái),暫停運(yùn)行。該進(jìn)程狀態(tài)就由運(yùn)行態(tài)變?yōu)榫途w態(tài).

所等待事件發(fā)生

(如I/O完成)

*小結(jié):進(jìn)程基本狀態(tài)

執(zhí)行態(tài):此時(shí)正用CPU;

就緒態(tài):可運(yùn)行,但未分到CPU;

阻塞態(tài):不能運(yùn)行,等待某個(gè)外部事件發(fā)生。

在一定條件下,進(jìn)程狀態(tài)才發(fā)生轉(zhuǎn)換

三、進(jìn)程的組成

1、進(jìn)程的組成

進(jìn)程實(shí)體通常由程序、數(shù)據(jù)集合和PCB這三部分組成。進(jìn)程的這三部分構(gòu)成進(jìn)程在

系統(tǒng)中的存在和活動(dòng)的實(shí)體,有時(shí)也統(tǒng)稱為“進(jìn)程映象”。

__________備課札記

PCB

程序段

數(shù)據(jù)段

2、進(jìn)程控制塊的組成(ProcessControlBlock,簡(jiǎn)稱PCB)

進(jìn)程控制塊有時(shí)也稱進(jìn)程描述塊(ProcessDescriptor)它是進(jìn)程組成中

最關(guān)鍵的部分。其中含有進(jìn)程描述信息和控制信息,是進(jìn)程動(dòng)態(tài)性的集中

反映,它是系統(tǒng)對(duì)進(jìn)程進(jìn)行識(shí)別和控制的依據(jù)。用來(lái)描述進(jìn)程當(dāng)前的狀態(tài)、

本身的特性的數(shù)據(jù)結(jié)構(gòu)被稱為進(jìn)程控制塊。

一般來(lái)說(shuō),進(jìn)程控制塊包括如下內(nèi)容:

1)進(jìn)程標(biāo)識(shí)符信息

①外部標(biāo)識(shí)符:進(jìn)程名;

②內(nèi)部標(biāo)識(shí)符:進(jìn)程的序號(hào)(PID);

③其他:族系關(guān)系,UID,GID,PPID

2)處理機(jī)狀態(tài)信息

當(dāng)進(jìn)程進(jìn)行切換時(shí)一,需要保護(hù)的信息包括:通用寄存器、指令計(jì)數(shù)器、

程序狀態(tài)字(PSW)和用戶棧指針。

3)進(jìn)程調(diào)度信息

進(jìn)程狀態(tài)、進(jìn)程優(yōu)先權(quán)、調(diào)度所需的其它信息和事件(原因)。

4)進(jìn)程控制信息

程序和數(shù)據(jù)的存儲(chǔ)情況;同步和通信機(jī)制;資源清單和鏈接指針。

3、進(jìn)程控制塊的作用:

進(jìn)程控制塊是進(jìn)程組成中最關(guān)鍵的部分。每個(gè)進(jìn)程有惟一的進(jìn)程控制

塊。操作系統(tǒng)根據(jù)PCB對(duì)進(jìn)程實(shí)施控制和管理。

進(jìn)程的動(dòng)態(tài)、并發(fā)等特征是利用PCB表現(xiàn)出來(lái)的。

PCB是進(jìn)程存在的惟一標(biāo)志。

4、PCB的組織方式

有鏈接方式和索引方式兩種。

1)鏈接方式

把具有相同狀態(tài)的PCB,用其中的鏈接指針,鏈接成一個(gè)隊(duì)列。如教

材P45圖2-7所示。

2)索引方式

系統(tǒng)根據(jù)所有進(jìn)程的狀態(tài),建立幾張索引表。索引表目中,記錄相應(yīng)狀態(tài)的PCB在

PCB表中甲地址。每張索引表的地址放在相應(yīng)的專用單元中。如教材P46

圖2-8所示。備課札記

2.3進(jìn)程控制--------

為了防止用戶程序?qū)ο到y(tǒng)程序的破壞,系統(tǒng)提供了不同的處理機(jī)執(zhí)行

狀態(tài),通常分為系統(tǒng)態(tài)(也稱做管理態(tài))和用戶態(tài)兩種。

1、系統(tǒng)態(tài):當(dāng)操作系統(tǒng)程序執(zhí)行時(shí),處理機(jī)處于系統(tǒng)態(tài)。即內(nèi)核運(yùn)行

在系統(tǒng)態(tài)下。

2、用戶態(tài):用戶程序在用戶態(tài)下執(zhí)行。^^3

—>操作系統(tǒng)內(nèi)核(Kernel)

1、操作系統(tǒng)內(nèi)核

內(nèi)核是計(jì)算機(jī)硬件的第一層擴(kuò)充軟件。它們常住內(nèi)存,對(duì)進(jìn)程進(jìn)行控

制、對(duì)存儲(chǔ)器進(jìn)行管理以及對(duì)設(shè)備進(jìn)行管理。

內(nèi)核一般由中斷處理程序、各種常用設(shè)備的驅(qū)動(dòng)程序以及一些運(yùn)行頻

率較高的模塊(如時(shí)鐘管理、進(jìn)程調(diào)度等)組成。

2、內(nèi)核的功能

1)支撐功能

?中斷管理

是內(nèi)核的最基本功能。是整個(gè)操作系統(tǒng)賴以活動(dòng)的基礎(chǔ)。

?時(shí)鐘管理

是內(nèi)核的基本功能。操作系統(tǒng)中的許多活動(dòng)也都需要它。

?原語(yǔ)操作

所謂原語(yǔ)(Primitive)是機(jī)器指令的延伸,往往是為了完成某些特

定的功能而編制的一段系統(tǒng)程序。為保證操作的正確性,在許多機(jī)

器中規(guī)定,執(zhí)行原語(yǔ)操作時(shí),要屏蔽中斷,以保證操作的不可分割

性,即一個(gè)操作中的所有動(dòng)作要么全做,要么全不做。操作系統(tǒng)中

完成某些基本操作時(shí),往往利用原語(yǔ)操作來(lái)實(shí)現(xiàn)。

2)資源管理功能

?進(jìn)程管理

由于進(jìn)程管理的運(yùn)行頻率高,所以這些模塊的全部或部分功能都放

一內(nèi)核'中。

?存儲(chǔ)器管理

目的是保證存儲(chǔ)器管理的運(yùn)行速度。

?設(shè)備管理

設(shè)備管理和設(shè)備密切相關(guān),因此其中一大部分也放在內(nèi)核中。

二、進(jìn)程的控制

1、進(jìn)程圖

進(jìn)程圖是用來(lái)描述進(jìn)程家族關(guān)系的有向樹(shù)。由父進(jìn)程創(chuàng)建子進(jìn)程,子

備課札記

進(jìn)程再創(chuàng)建子進(jìn)程,……,從而構(gòu)成一棵樹(shù)型的進(jìn)程圖。如教材P48圖2-90

2、進(jìn)程控制原語(yǔ)

內(nèi)核中有很多原語(yǔ),如創(chuàng)建進(jìn)程、終止進(jìn)程、阻塞進(jìn)程等。

1)進(jìn)程創(chuàng)建

?引起進(jìn)程創(chuàng)建的事件

用戶登錄、作業(yè)調(diào)度、提供服務(wù)和應(yīng)用請(qǐng)求。

?進(jìn)程創(chuàng)建原語(yǔ)的主要操作過(guò)程

(1)申請(qǐng)一個(gè)空閑的PCB;

(2)為新進(jìn)程分配資源;

(3)將進(jìn)程的PCB初始化;

(4)將新進(jìn)程加到就緒隊(duì)列中。

2)進(jìn)程終止

?引起進(jìn)程終止的事件

正常終止、異常結(jié)束和外界干預(yù)。

?終止進(jìn)程的主要操作過(guò)程

(1)從系統(tǒng)的PCB表中找到指定進(jìn)程PCB;

(2)回收該進(jìn)程所占用的全部資源;

(3)若該進(jìn)程還有子孫進(jìn)程,則還要終止其所有子孫進(jìn)程,回收它們

所占用的全部資源;

(4)釋放被終止進(jìn)程的PCB,并從原來(lái)隊(duì)列中摘走。

3)進(jìn)程阻塞

正在運(yùn)行的進(jìn)程通過(guò)調(diào)用阻塞原語(yǔ)主動(dòng)地把自己阻塞。

?引起進(jìn)程阻塞的事件

請(qǐng)求系統(tǒng)服務(wù)、啟動(dòng)某種操作、新數(shù)據(jù)尚未到達(dá)和無(wú)新工作可做。

?阻塞的過(guò)程

(1)立即停止當(dāng)前進(jìn)程的執(zhí)行;

(2)將現(xiàn)行進(jìn)程的CPU現(xiàn)場(chǎng)送到該進(jìn)程的PCB現(xiàn)場(chǎng)保護(hù)區(qū)中保存起

來(lái),以便將來(lái)重新運(yùn)行時(shí)恢復(fù)此時(shí)的現(xiàn)場(chǎng)。

(3)把該進(jìn)程PCB中的現(xiàn)行狀態(tài)由“運(yùn)行”改為阻塞,把它插入到

具有相同事件的阻塞隊(duì)列中。

(4)然后轉(zhuǎn)到進(jìn)程調(diào)度程序,重新從就緒隊(duì)列中挑選一個(gè)合適進(jìn)程投

入運(yùn)行。

4)進(jìn)程喚醒

喚醒原語(yǔ)執(zhí)行過(guò)程:

(1)首先把被阻塞進(jìn)程從相應(yīng)的阻塞隊(duì)列中摘下;

(2)將現(xiàn)行狀態(tài)改為就緒態(tài),然后把該進(jìn)程插入到就緒隊(duì)列中;

(3)如果被喚醒進(jìn)程比運(yùn)行進(jìn)程有更高的優(yōu)先級(jí),則設(shè)置重新調(diào)度標(biāo)備課札記

,志O

阻塞原語(yǔ)與喚醒原語(yǔ)恰好是--對(duì)相反的原語(yǔ):調(diào)用前者(阻塞原語(yǔ))

是自己去睡眠,調(diào)用后者(喚醒原語(yǔ))是把“別人”喚醒。使用時(shí)也要成

對(duì),前邊有睡的,后邊有叫醒的。否則,前者就要“長(zhǎng)眠”了。如同兩個(gè)

士兵輪流站崗值班和睡覺(jué)休息。相關(guān)者喚醒,自己不能喚醒自己。

2.4線程的基本概念

一、線程的引入

1、處理機(jī)分配單位的演變

進(jìn)程的兩個(gè)基本屬性:一是擁有資源的獨(dú)立單位;二是獨(dú)立調(diào)度和分

配的基本單位。由于進(jìn)程是一個(gè)資源的擁有者,所以進(jìn)程在創(chuàng)建、終止和

切換中,系統(tǒng)必須為之付出較大的時(shí)空開(kāi)銷(xiāo)。于是想把這兩個(gè)屬性分開(kāi),

即對(duì)擁有資源的基本單位,不進(jìn)行頻繁的切換;而對(duì)于調(diào)度和分配的基本

單位,使其輕裝運(yùn)行。

3

2>

^^

多進(jìn)程、每個(gè)進(jìn)程一個(gè)線程多進(jìn)程、每個(gè)進(jìn)程多個(gè)線程

2、線程的定義

線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分配的基本單位。又

稱為輕型進(jìn)程。

二、線程與進(jìn)程的比較

1、單線程和多線程的進(jìn)程模型

單線程進(jìn)程模式多線程進(jìn)程模式

線程線程備課札記

進(jìn)程用戶棧進(jìn)程控制塊控制塊

控制塊控制塊用戶棧用戶棧

用戶內(nèi)核棧用戶

內(nèi)核棧內(nèi)核棧

地址空間地址空間

2、線線程線程

程與進(jìn)程

的比較

性能進(jìn)程線程

進(jìn)程內(nèi)的線程切

換,不會(huì)引起進(jìn)程

調(diào)度切換。當(dāng)不同進(jìn)程調(diào)度的基本單位

內(nèi)的線程進(jìn)行切換

時(shí),進(jìn)程進(jìn)行切換。

并發(fā)性可以可以

擁有資源的獨(dú)立單僅擁有能運(yùn)行的基

擁有資源

位本資源

系統(tǒng)開(kāi)銷(xiāo)大小

三、線程的分類

線程分為用戶級(jí)線程(ULT)和內(nèi)核支持線程(KLT)。

1、用戶級(jí)線程(ULT)

線程僅存在用戶級(jí)中,對(duì)于線程的創(chuàng)建、撤消和切換,都不利用系統(tǒng)

調(diào)用來(lái)實(shí)現(xiàn),因而這種線程與內(nèi)核無(wú)關(guān)。

2、內(nèi)核支持線程(KLT)

又稱輕便進(jìn)程。線程的實(shí)現(xiàn)依賴內(nèi)核

用戶空間備課札記

內(nèi)核空間

2.5小結(jié)

進(jìn)程可以理解為:”程序在并發(fā)環(huán)境中的執(zhí)行過(guò)程?!彼罨镜奶卣?/p>

是并發(fā)性和動(dòng)態(tài)性,一個(gè)進(jìn)程至少應(yīng)有三種狀態(tài),它們?cè)谝欢l件下相互

轉(zhuǎn)化。

每一個(gè)進(jìn)程都有惟一的進(jìn)程控制塊(PCB),它是進(jìn)程存在的惟一標(biāo)志。

PCB表的物理組織方式有若干種,最常見(jiàn)的是線性方式、鏈接方式和

索引方式。

第三章進(jìn)程的同步與通信

主要內(nèi)容:

本章將在系統(tǒng)動(dòng)態(tài)模型基礎(chǔ)上討論進(jìn)程(線程)間的

同步和互斥、進(jìn)程通信以及操作系統(tǒng)提供的相應(yīng)工具。

教學(xué)安排:

理論教學(xué);共6學(xué)時(shí)

3.1進(jìn)程同步的基本概念

一、進(jìn)程的同步與互斥

進(jìn)程間的相互關(guān)系分為同步關(guān)系和互斥關(guān)系。

1、同步(直接制約關(guān)系)

同步是指為完成同一任務(wù)的伙伴進(jìn)程間,因?yàn)樾枰谀承┪恢蒙蠀f(xié)調(diào)

它們的工作而相互等待、相互交換信息所產(chǎn)生的制約的關(guān)系。

兩者要步調(diào)協(xié)調(diào)一致,是同步關(guān)系,同時(shí)又相互牽制。

2、互斥(間接制約關(guān)系)

兩個(gè)進(jìn)程在邏輯上本來(lái)完全獨(dú)立,毫無(wú)關(guān)系,只是由于競(jìng)爭(zhēng)同一個(gè)物理資源而相互

制約。攵

二、臨界資源和臨界區(qū)備課札圮

1、臨界區(qū)的定義

一次僅允許一個(gè)進(jìn)程使用的這類資源稱為臨界資源,在每個(gè)進(jìn)程中訪

問(wèn)臨界資源的那段程序區(qū)叫臨界區(qū)。

訪問(wèn)臨界資源的程序結(jié)構(gòu)描述:

repeat

Entrysection

Criticalsection;

Exitsection

Remaindersection;

Untilfalse;

2、互斥準(zhǔn)則

?空閑讓進(jìn)

只要臨界資源空閑,允許請(qǐng)求者使用。

?忙則等待

當(dāng)臨界資源正被進(jìn)程訪問(wèn),其他請(qǐng)求則等待,保證臨界資源的

互斥訪問(wèn)。

?有限等待

讓等待進(jìn)入臨界資源的進(jìn)程,在等待一段有限的時(shí)間后進(jìn)入臨

界區(qū),以免出現(xiàn)“死等”。

?讓權(quán)等待

當(dāng)請(qǐng)求進(jìn)程不能進(jìn)入臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程

陷入“忙等”。

三、利用軟件方法解決進(jìn)程互斥問(wèn)題

使用軟件設(shè)計(jì)方法,在Entrycode和exitcode位置上設(shè)計(jì)相應(yīng)

代碼,實(shí)現(xiàn)對(duì)臨界區(qū)的互斥執(zhí)行。

在進(jìn)行下面的講解前,首先假設(shè)進(jìn)程Pi(i=0,1)和Pj(j=l-i)。

算法]一嚴(yán)格輪換法

設(shè)置整形變量turn(令牌),用turn=i還是j來(lái)區(qū)分進(jìn)入臨界區(qū)

的進(jìn)程。

Pi進(jìn)程算法的描述

repeat

備課札記

WhileturnWidoskip;

Criticalsection;

Turn=j;

noncriticalsection;

untilfalse;

缺點(diǎn):如果初值tum=i;則算法嚴(yán)格按Pi-Pj輪換使用臨界資

源,即使某時(shí)刻臨界區(qū)空閑(準(zhǔn)則1空閑讓進(jìn))。

算法2

為了避免出現(xiàn)忙等的情況,使用數(shù)組flag來(lái)記錄各進(jìn)程使用臨

界區(qū)的情況。

Varflag:array[O..l]ofBoolean>;

Flag[i]=true表示進(jìn)程Pi正在執(zhí)行其臨界區(qū)。

Pi進(jìn)程算法的描述

repeat

Whileflag[j]doskip;

Flag[i]=true;

Criticalsection;

Flag[i]=false;

noncriticalsection;

untilfalse;

缺點(diǎn):雖然解決了算法1中的忙等,但卻不能保證臨界資源的

互斥使用(準(zhǔn)則2忙則等待)。

算法3

為了解決while語(yǔ)句和Hag]]設(shè)置語(yǔ)句之間為另一進(jìn)程執(zhí)行留

有可乘之機(jī)的情況,交換這兩個(gè)語(yǔ)句執(zhí)行的順序。

Pi進(jìn)程算法的描述

repeat

Flag[i]=true;

Whileflag[j]doskip;

Criticalsection;

Flag[i]=false;

noncriticalsection;備課札記

untilfalse;

缺點(diǎn):雖然解決了算法2中的不能互斥使用的情況,但卻導(dǎo)致

了都不能進(jìn)入的情況(準(zhǔn)則1空閑讓進(jìn))。

算法4

為了解決上述問(wèn)題,同時(shí)引入兩個(gè)變量,一個(gè)Hag[i]表示Pi進(jìn)

程要求進(jìn)入或正在執(zhí)行臨界區(qū),另一個(gè)turn表示要求進(jìn)入的進(jìn)程編

號(hào)。

Pi進(jìn)程算法的描述

repeat

Flag[i]=true;tum=j;

Whileflag[j]andturn=jdoskip;

Flag[i]=false;

Criticalsection;

noncriticalsection;

untilfalse;

缺點(diǎn):能保證互斥使用,但卻導(dǎo)致了浪費(fèi)處理機(jī)資源的情況(準(zhǔn)

則4讓權(quán)等待)。

四、利用硬件方法解決進(jìn)程互斥問(wèn)題

使用硬件指令保證其操作的原子性,但不能滿足“讓權(quán)等待”。

1、Test—and一Set指令實(shí)現(xiàn)互斥

1)Test—and-Set指令功能

functionTS(varlock:boolean):boolean

begin

TS=lock;

Lock=true;

End

LOCK:TRUE表示在使用;FALSE表示空閑。TS是一條指令,

執(zhí)行過(guò)程,不會(huì)被打斷。

2)利用TS實(shí)現(xiàn)進(jìn)程互斥

repeat

WhileTS(lock)doskip;

Criticalsection;

lock=false;

noncriticalsection;備課札記

untilfalse;

2、利用SWAP指令實(shí)現(xiàn)進(jìn)程互斥

1)SWAP指令功能

procedureSWAP(vara,b:boolean)

vartemp:boolean;

begin

temp=a;

a=b;

b=temp;

End

交換變量a和b的值。

2)利用SWAP實(shí)現(xiàn)進(jìn)程互斥

Key=true;

Whilekeydoswap(key,lock);

repeat

Criticalsection;

lock=false;

noncriticalsection;

untilfalse;

3.2信號(hào)量機(jī)制

信號(hào)量是操作系統(tǒng)解決進(jìn)程互斥與同步的工程。

一、整型信號(hào)量機(jī)制

1、整型信號(hào)量

定義:把信號(hào)量定義為一個(gè)整型量,除初始化外,僅能通過(guò)兩個(gè)原子

操作WAIT和SIGNAL來(lái)訪問(wèn)。

WAIT和SIGNAL的描述:

WAIT(S):WHILE(S〈=0〉DOSKIP;

S=S-1;

SIGNAL(S):S=S+1;

小結(jié):

?S是正數(shù),表示資源的個(gè)數(shù)。

?WAIT和SIGNAL是原子操作。

備課札記

?原子操作的實(shí)現(xiàn)一般采用屏蔽中斷(適用于單處理機(jī))或利用

TS和SWAP硬指令(適用于多處理機(jī))實(shí)現(xiàn)。

?仍然不能實(shí)現(xiàn)讓權(quán)等待。

2、利用整型信號(hào)量實(shí)現(xiàn)互斥問(wèn)題

repeat

WAIT(S);______

Criticalsection;

SIGNAL(S);

noncriticalsection;

untilfalse;

3、利用整型信號(hào)量描述前趨關(guān)系

Vara,b,c:semaphore=0,0,0;

Parbegin

BeginSI;SIGNAL(a);end;

BeginS2;SIGNAL(b);end;

BeginWAIT(a);WAIT(b);S3;SIGNAL(c);end;

BeginWAIT(c);S4;end;

parend

二、記錄型信號(hào)量機(jī)制

1、定義

typesemaphore=record

value:integer;

L:Listofprocess;

End;

其中L表示等待信號(hào)量進(jìn)程的鏈表。

S取值為負(fù)、零和正。負(fù)和零表示阻塞進(jìn)程個(gè)數(shù),正表示現(xiàn)有資源的個(gè)數(shù)。

2、原子操作

WAIT(S):S.value=S.value-1;備課札記

IfS.VALUE<0THENBLOCK(S.L);

SIGNAL(S):S.VALUE=S.VALUE+1;

IfS.VALUE<=0THENWAKEUP(S.L);

三、信號(hào)量集機(jī)制

當(dāng)進(jìn)程互斥使用多個(gè)臨界資源時(shí),可能出現(xiàn)死鎖問(wèn)題(在第四章中介

紹)。為了解決上述問(wèn)題,引入了信號(hào)量集的技術(shù)。

1、AND型信號(hào)量集機(jī)制

就是將進(jìn)程在整個(gè)運(yùn)行過(guò)程中所需要的所有臨界資源,一次性的全部

分配給它,待進(jìn)程使用完后一次性的釋放,只要尚有一個(gè)資源不能分配給一

它,則全部不能進(jìn)行分配。

2、兩個(gè)原子操作

SWAIT(SI,Tl,D1,...?Sn,Tn,Dn);

其中Si表示某類資源數(shù),Ti表示分配下限,Di表一次分配的個(gè)數(shù)。

SSIGNAL(SI,D1,...?Sn,Dn);

其中Si表示某類資源數(shù),Di表示回收的個(gè)數(shù)。

3.3經(jīng)典進(jìn)程同步問(wèn)題

一、生產(chǎn)者——消費(fèi)者問(wèn)題

1、問(wèn)題的提出

2、問(wèn)題的解決

varmutex,full,empty:semaphore=1,0,n;

buff:array[0..n-lJofitem;

in,out:integer=0,0;

begin

parbegin備課札記

producer();

consumer0;

parend

end

procedureproducer()procedureconsumer()

beginbegin—

repeatrepeat

produceaniteminnextp;wait(full);

wait(empty);wait(mutex);

wait(mutex);nextc=buff[outj;

buff[in]=nextp;out=(out+l)modn;

in=(in+1)modn;signal(mutex);

signal(mutex);signal(empty);

signal(full);consumetheiteminnextc;

untilfalse;untilfalse;

endend

3、小結(jié)________

MUTEX用于控制互斥訪緩存池,問(wèn)初值為1,表示消費(fèi)者進(jìn)程和生產(chǎn)

者進(jìn)程在對(duì)緩存池使用時(shí),按照互斥方式。

FULL用于同步控制,初值為0,表示當(dāng)前緩存池中“滿”緩存區(qū)數(shù)。

EMPTY用于同步控制,初值為N,表示當(dāng)前緩存池中“空”緩存區(qū)數(shù)。

不論是互斥還是同步,WAIT和SIGNAL操作都配對(duì)出現(xiàn)。

WAIT操作不能顛倒,SIGNAL操作可以。

二、讀者——寫(xiě)者問(wèn)題

1、問(wèn)題描述

有兩種情況:一是READER有較高的優(yōu)先權(quán);二是WRITER有較

高的優(yōu)先權(quán)。下面描述的是READER有較高優(yōu)先權(quán)的情況。

1)如果當(dāng)前無(wú)人訪問(wèn)數(shù)據(jù),無(wú)論READER或WRITER都可直接進(jìn)

入訪問(wèn)。

2)如果已有一個(gè)READER正在訪問(wèn)數(shù)據(jù),那么其它欲訪問(wèn)數(shù)據(jù)的

READER可直接進(jìn)行訪問(wèn),而當(dāng)前欲訪問(wèn)數(shù)據(jù)的WRITER則必須無(wú)條件等待。

3)若某個(gè)WRITER正在訪問(wèn)數(shù)據(jù),則當(dāng)前欲訪問(wèn)數(shù)據(jù)的READER和WRITER

均須等待。

4)當(dāng)最后一個(gè)結(jié)束訪問(wèn)數(shù)據(jù)的READER發(fā)現(xiàn)有WRITER正在等待

時(shí),則將其中的一個(gè)喚醒。備課札記

5)當(dāng)某個(gè)WRITER結(jié)束訪問(wèn)數(shù)據(jù)時(shí)發(fā)現(xiàn)存在等待者,則按FIFO或

其他原則喚醒READER和WRITERo

2、,可題解決

varmutex,wmt:semaphore=1,1;

rcount:integer=0;

begin

parbegin

reader();

writer0;

parend

end

procedurereader()procedurewriter()

beginbegin

repeatrepeat

wait(mutex);wait(wmt);

rcount=rcount+l;writingisperformed;

ifrcount==1wait(wmt);signal(wmt);

signal(mutex);untilfalse;

readingisperformed;end

wait(mutex);

rcount=rcount-l;

ifrcount==0signal(wmt);

signal(mutex);

untilfalse;

end

三、哲學(xué)家就餐問(wèn)題

1、問(wèn)題描述

有5位哲學(xué)家,他們的生活方式是交替進(jìn)行思考和進(jìn)餐。他們共用一

張圓桌,分別坐在5把椅子上,有5只碗和5支筷子,平時(shí)哲學(xué)家進(jìn)行思

考,饑餓時(shí)便試圖取其左、右兩支筷子,取道后開(kāi)始進(jìn)餐,進(jìn)餐后放下筷

子又繼續(xù)思考。

2、問(wèn)題解決

varmutex:array[0..4]ofsemaphore=1,1,1,1,1;

begin

parbegin備課札記

p(0);

p(1);

p(2);

p(3);

p(4);

parend

end

procedurep(vari:integer)

begin

溫馨提示

  • 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)論