版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024詳細(xì)版門(mén)面房出租合同范文
- 2024廣州市簡(jiǎn)單的房屋租賃合同范本2
- 2024年產(chǎn)品代銷(xiāo)合同區(qū)域保護(hù)政策
- 2024雜志廣告發(fā)布需簽什么合同
- 2024年企業(yè)綜合營(yíng)銷(xiāo)解決方案合同
- 2024年商標(biāo)許可合同商標(biāo)標(biāo)的及許可使用
- 2024-2025年新教材高中物理第4章萬(wàn)有引力定律及航天1天地力的綜合:萬(wàn)有引力定律課時(shí)練習(xí)含解析魯科版必修2
- 2024-2025學(xué)年高中英語(yǔ)Unit7Artlesson1練習(xí)含解析北師大版必修3
- 2024年學(xué)校足球場(chǎng)施工合約
- 物聯(lián)網(wǎng)技術(shù)應(yīng)用集成服務(wù)合同
- 夸美紐斯完整版本
- 社會(huì)主義發(fā)展史智慧樹(shù)知到期末考試答案2024年
- 醫(yī)院管理案例分享:住院患者人工氣道同質(zhì)化管理持續(xù)改進(jìn)
- 項(xiàng)目設(shè)計(jì)招標(biāo)實(shí)施工作方案
- 2024年護(hù)坡施工合同范本
- (2024年)量子計(jì)算機(jī)課件(精)
- 糖尿病酮癥酸中毒的診斷和治療
- GB/T 19812.7-2024塑料節(jié)水灌溉器材第7部分:微灌用塑料閥門(mén)
- 世界工廠的中國(guó)特色新時(shí)期工人狀況的社會(huì)學(xué)鳥(niǎo)瞰
- 2023中國(guó)路跑賽事藍(lán)皮書(shū)
- 鄉(xiāng)鎮(zhèn)社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論