版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章處理器管理(2)6.1進(jìn)程的概念
6.2進(jìn)程的狀態(tài)和轉(zhuǎn)換
6.3進(jìn)程的控制
6.4進(jìn)程的協(xié)調(diào)
6.5進(jìn)程間的通信
6.6進(jìn)程的安全性
6.7線程的概念
6.8作業(yè)管理
6.9處理器調(diào)度進(jìn)程管理6.4進(jìn)程的協(xié)調(diào)
6.4.1進(jìn)程互斥
6.4.2進(jìn)程同步
6.4.3信號(hào)量和P、V操作6.4進(jìn)程的協(xié)調(diào)概述:
在多道程序設(shè)計(jì)系統(tǒng)中,許多進(jìn)程可并發(fā)執(zhí)行,但由于資源共享和進(jìn)程合作,而產(chǎn)生了進(jìn)程之間的兩類相互制約的關(guān)系:
互斥關(guān)系 同步關(guān)系6.4進(jìn)程的協(xié)調(diào)(1)互斥關(guān)系(競爭關(guān)系):間接制約關(guān)系。指進(jìn)程之間因相互競爭使用系統(tǒng)資源(獨(dú)占型資源),而產(chǎn)生的制約關(guān)系。主要由資源共享引起。表現(xiàn)形式:“進(jìn)程——資源——進(jìn)程”。進(jìn)程間的間接相互作用構(gòu)成進(jìn)程互斥。進(jìn)程互斥(mutualexclusion):若干進(jìn)程因相互爭奪獨(dú)占型資源(打印機(jī)、共享變量等)而產(chǎn)生的競爭制約關(guān)系。資源競爭會(huì)引發(fā)兩個(gè)控制問題:死鎖(deadlock)
一組進(jìn)程如果都獲得部分資源,還想要得到其他進(jìn)程所占有的資源,最終所有進(jìn)程將陷入永遠(yuǎn)等待的狀態(tài)。饑餓(starvation)
一個(gè)可運(yùn)行進(jìn)程由于其它進(jìn)程總是優(yōu)先于它,被調(diào)度程序無限期的拖延而不能被執(zhí)行。進(jìn)程的協(xié)調(diào)(2)同步關(guān)系(協(xié)作關(guān)系):一個(gè)用戶作業(yè)可以涉及一組并發(fā)進(jìn)程,它們?yōu)榱送瓿晒餐娜蝿?wù)需要分工協(xié)作。例:有A、B兩個(gè)進(jìn)程,A進(jìn)程負(fù)責(zé)從鍵盤讀數(shù)據(jù)到緩沖區(qū),B進(jìn)程負(fù)責(zé)從緩沖區(qū)讀數(shù)據(jù)進(jìn)行計(jì)算。要完成取數(shù)據(jù)并計(jì)算的工作,A進(jìn)程和B進(jìn)程要協(xié)同工作。即B進(jìn)程只有等待A進(jìn)程把數(shù)據(jù)送到緩沖區(qū)后才能進(jìn)行計(jì)算。A進(jìn)程只有等待B進(jìn)程發(fā)出已把緩沖區(qū)數(shù)據(jù)取走的信號(hào)之后才能從鍵盤向緩沖區(qū)中送數(shù)據(jù),否則就會(huì)出現(xiàn)錯(cuò)誤。由于每個(gè)進(jìn)程都獨(dú)立地以不可預(yù)知的速度推進(jìn),在執(zhí)行的先后次序上就要有約束,需要相互協(xié)作的進(jìn)程在某些關(guān)鍵點(diǎn)上協(xié)調(diào)各自的工作。當(dāng)其中的一個(gè)進(jìn)程到達(dá)關(guān)鍵點(diǎn)后,在尚未得到協(xié)作進(jìn)程發(fā)來的消息(或信號(hào))之前應(yīng)阻塞自己,等待協(xié)作進(jìn)程發(fā)來消息后方被喚醒繼續(xù)執(zhí)行。這種協(xié)作進(jìn)程之間需要排定執(zhí)行先后次序的協(xié)調(diào)關(guān)系是直接制約關(guān)系,稱為進(jìn)程同步。進(jìn)程的協(xié)調(diào)(2)同步關(guān)系(協(xié)作關(guān)系):進(jìn)程同步(synchronization)是指,為完成共同任務(wù)的并發(fā)進(jìn)程基于某個(gè)條件來協(xié)調(diào)其活動(dòng),因?yàn)樾枰谀承┪恢蒙吓哦▓?zhí)行的先后次序而等待、傳遞信號(hào)(或消息)所產(chǎn)生的相互制約關(guān)系。可由資源共享引起,也可由進(jìn)程合作引起。各個(gè)進(jìn)程的行動(dòng)時(shí)間次序必須滿足某種依賴關(guān)系。表現(xiàn)形式:“進(jìn)程——進(jìn)程”進(jìn)程間的直接作用構(gòu)成進(jìn)程的同步。注:進(jìn)程互斥關(guān)系(逐次使用互斥共享資源)是一種特殊的進(jìn)程同步關(guān)系6.4.1進(jìn)程互斥1.進(jìn)程互斥與臨界區(qū)進(jìn)程互斥在系統(tǒng)中,許多進(jìn)程常常需要共享資源,而這些資源往往要求排它地使用,即一次只能為一個(gè)進(jìn)程服務(wù)。因此,各進(jìn)程間互斥使用這些資源,進(jìn)程間的這種關(guān)系是進(jìn)程的互斥。臨界資源和臨界區(qū)
臨界資源(criticalresource):
一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源。許多物理設(shè)備(如打印機(jī)、光盤刻錄機(jī)等)和軟件資源(如變量、數(shù)據(jù)、隊(duì)列等)都具有這種獨(dú)占性的特點(diǎn)。
臨界區(qū)(criticalsection):(Dijkstra于1965年首次提出) 在進(jìn)程中訪問臨界資源的那段代碼稱為臨界區(qū)。要注意區(qū)分臨界資源與臨界區(qū)。2互斥的概念與要求進(jìn)程的互斥(臨界區(qū)、臨界資源)系統(tǒng)中,當(dāng)一個(gè)進(jìn)程先進(jìn)入臨界區(qū)使用臨界資源時(shí),另一個(gè)進(jìn)程必須等待;當(dāng)占用臨界資源的進(jìn)程退出臨界區(qū)后,另一進(jìn)程才允許訪問此臨界資源。2互斥的概念與要求互斥進(jìn)程進(jìn)入臨界區(qū)的準(zhǔn)則/要求:①空閑讓進(jìn)。 無進(jìn)程處于臨界區(qū)時(shí),可允許一個(gè)申請(qǐng)進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū)。②忙則等待。 任何時(shí)候,處于臨界區(qū)內(nèi)的進(jìn)程不可多于一個(gè)。如已有進(jìn)程進(jìn)入自己的臨界區(qū),則其它所有試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待。③有限等待。 入臨界區(qū)的進(jìn)程要在有限時(shí)間內(nèi)退出,以便其它進(jìn)程能及時(shí)進(jìn)入自己的臨界區(qū)。④讓權(quán)等待。 等待進(jìn)入臨界區(qū)的進(jìn)程,應(yīng)放棄占用CPU,避免進(jìn)程出現(xiàn)“忙等”現(xiàn)象。
3.互斥的實(shí)現(xiàn)方法1)軟件的方法方法一:設(shè)置公用整型變量turn,保存進(jìn)入臨界區(qū)的進(jìn)程標(biāo)識(shí)。Dekker’sAlgorithm[Dijkstra65]例如:有兩個(gè)進(jìn)程P0和P1,互斥共享某個(gè)資源。P0、P1是循環(huán)進(jìn)程,它們執(zhí)行一個(gè)無限循環(huán)程序,每次使用該資源一個(gè)有限的時(shí)間間隔。若turn=0,允許進(jìn)程P0進(jìn)入臨界區(qū),否則等待。退出臨界區(qū)時(shí),修改turn為1。P1的算法類似?;コ獾膶?shí)現(xiàn):軟件方法一P0() {…… while(turn!=0);
CS0;//P0的臨界區(qū)
turn=1;
……
} turn=0;P1() {…… while(turn!=1);
CS1;//P1的臨界區(qū)
turn=0;
……
} 缺點(diǎn):滿足不了“空閑讓進(jìn)”原則3.互斥的實(shí)現(xiàn)方法1)軟件的方法:方法二:(1981G.L.Peterson提出) 設(shè)置全局變量turn,指示允許進(jìn)入臨界區(qū)的進(jìn)程標(biāo)識(shí)。 定義數(shù)組flag[]表示進(jìn)程是否希望進(jìn)入臨界區(qū)或是否在臨界區(qū)執(zhí)行。若flag[0]=true,表示進(jìn)程P0希望進(jìn)入臨界區(qū)或已經(jīng)進(jìn)入臨界區(qū)。若turn=0,表示進(jìn)程P0允許進(jìn)入臨界區(qū)?;コ獾膶?shí)現(xiàn):軟件方法二P0() {…… flag[0]=true;turn=1;while(flag[1]&&turn==1);
CS0;//P0的臨界區(qū)
flag[0]=false;
……
} blooleanflag[2]={false,false};特點(diǎn):滿足“空閑讓進(jìn)”、“忙則等待”原則;P1() {…… flag[1]=true;turn=0;while(flag[0]&&turn==0);
CS1;//P1的臨界區(qū)
flag[1]=false;
……
} 互斥的實(shí)現(xiàn)方法2)硬件的方法:
(1)中斷屏蔽方法當(dāng)一個(gè)進(jìn)程進(jìn)入臨界區(qū)時(shí),通過屏蔽中斷來防止其它進(jìn)程進(jìn)入臨界區(qū)。禁用中斷->時(shí)鐘中斷或其它均無效->CPU無法切換到其它進(jìn)程優(yōu)點(diǎn):簡單、有效,對(duì)操作系統(tǒng)自身很有用。缺點(diǎn):不適合作為通用的互斥機(jī)制關(guān)中斷時(shí)間過長會(huì)影響性能和系統(tǒng)效率,降低系統(tǒng)對(duì)外部中斷的響應(yīng)速度,影響系統(tǒng)處理緊急事件的能力。不適用于多處理器計(jì)算機(jī)系統(tǒng)。一個(gè)處理器關(guān)中斷,不能阻止進(jìn)程在其他處理器上執(zhí)行相同的臨界區(qū)。損害其他“無辜的”進(jìn)程,阻止了多個(gè)進(jìn)程并發(fā)地進(jìn)入不同的臨界區(qū)。互斥的實(shí)現(xiàn)方法2)硬件的方法:(2)硬件指令方法使用硬件指令實(shí)現(xiàn)進(jìn)程互斥測(cè)試與設(shè)置指令TS(TestandSet);交互指令Swap(或Exchange)特點(diǎn):指令對(duì)內(nèi)存單元內(nèi)容的操作(包括讀和寫)是不可分割的(原子性的),即該指令執(zhí)行結(jié)束之前,其他處理器均不允許訪問該內(nèi)存單元。(2)硬件指令方法TS(TestandSetLock)指令把該指令看做函數(shù),它有布爾型參數(shù)和返回條件碼。TS(&x)返回x的值,并將x值設(shè)置為TRUE。其本身不做測(cè)試,調(diào)用該函數(shù)的程序做測(cè)試工作,如while(…)。TS指令的處理過程如下(C語言版本):booleanTS(boolean*x){booleanrv=*x;*x=TRUE;returnrv;}(2)硬件指令方法TS(TestandSet)指令用TS指令管理臨界區(qū)時(shí),可以把一個(gè)臨界區(qū)與一個(gè)布爾型變量s相關(guān)聯(lián)。變量s代表臨界資源的狀態(tài),把它看成一把鎖。s的初值為FALSE,表示沒有進(jìn)程在臨界區(qū)內(nèi),資源可用。系統(tǒng)利用TS指令實(shí)現(xiàn)臨界區(qū)上的上鎖和開鎖原語操作。P0{…While(TS(&s));CS0;//臨界區(qū)s=FALSE;…P1{…While(TS(&s));CS1;//臨界區(qū)s=FALSE;…booleanTS(boolean*x){booleanrv=*x;*x=TRUE;returnrv;}bools=FALSE;(2)硬件指令方法Swap指令 對(duì)換指令可以交換兩個(gè)字節(jié)的內(nèi)容,其處理過程為:voidSwap(boolean*a,boolean*b){ booleantemp=*a; *a=*b; *b=temp;}(在Intelx86中)使用對(duì)換指令可以簡單有效地實(shí)現(xiàn)互斥,方法是:
為每個(gè)臨界區(qū)設(shè)置布爾型鎖變量lock,當(dāng)其值為FALSE時(shí)表示無進(jìn)程在臨界區(qū)內(nèi)。boollock=FALSE; //初始化Pi{ … booleankey=TRUE; while(key) Swap(&key,&lock); //上鎖
CSi;//臨界區(qū)
Swap(&key,&lock); //開鎖
…互斥的實(shí)現(xiàn)方法
(2)硬件指令方法優(yōu)點(diǎn):(1)適用范圍廣。硬件方法適用于任何數(shù)目的進(jìn)程,在單處理機(jī)和多處理機(jī)環(huán)境中完全相同。(2)簡單。硬件方法的標(biāo)志設(shè)置簡單,含義明確,容易驗(yàn)證其正確性。(3)支持多個(gè)臨界區(qū)。在一個(gè)進(jìn)程內(nèi)有多個(gè)臨界區(qū)時(shí),只需為每個(gè)臨界區(qū)設(shè)立一個(gè)布爾變量。缺點(diǎn):進(jìn)程在等待進(jìn)入臨界區(qū)時(shí)要耗費(fèi)處理機(jī)時(shí)間,不能實(shí)現(xiàn)讓權(quán)等待;由于進(jìn)入臨界區(qū)的進(jìn)程是從等待進(jìn)程中隨機(jī)選擇的,有的進(jìn)程可能一直選不上,從而導(dǎo)致饑餓現(xiàn)象。6.4.2進(jìn)程的同步系統(tǒng)中的各進(jìn)程可以并發(fā)共享資源,從而使系統(tǒng)資源得到充分利用,但是共享資源往往使并發(fā)進(jìn)程產(chǎn)生某種時(shí)序上的約束關(guān)系。例如:有A、B兩個(gè)進(jìn)程,A進(jìn)程負(fù)責(zé)從鍵盤讀數(shù)據(jù)到緩沖區(qū),B進(jìn)程負(fù)責(zé)從緩沖區(qū)讀數(shù)據(jù)進(jìn)行計(jì)算。要完成取數(shù)據(jù)并計(jì)算的工作,A進(jìn)程和B進(jìn)程要協(xié)同工作:即B進(jìn)程只有等待A進(jìn)程把數(shù)據(jù)送到緩沖區(qū)后才能進(jìn)行計(jì)算。A進(jìn)程只有等待B進(jìn)程發(fā)出已把緩沖區(qū)數(shù)據(jù)取走的信號(hào)之后才能從鍵盤向緩沖區(qū)中送數(shù)據(jù),否則就會(huì)出現(xiàn)錯(cuò)誤。進(jìn)程同步示意圖6.4.2進(jìn)程的同步進(jìn)程同步:進(jìn)程同步是指進(jìn)程之間一種直接的協(xié)同工作關(guān)系,這些進(jìn)程相互合作,共同完成一項(xiàng)任務(wù)。進(jìn)程間的直接相互作用構(gòu)成進(jìn)程的同步。進(jìn)程互斥的實(shí)質(zhì)也是同步,進(jìn)程互斥可以看成是一種特殊的進(jìn)程同步。6.4.3信號(hào)量(Semaphore)及PV操作1.信號(hào)量及PV操作原語實(shí)現(xiàn)進(jìn)程之間互斥關(guān)系的方法軟件算法太復(fù)雜,效率低下;硬件方法雖然簡單,但采用了“忙等待”,浪費(fèi)CPU資源;將測(cè)試能否進(jìn)入臨界區(qū)的責(zé)任推卸給各個(gè)競爭的進(jìn)程,會(huì)削弱系統(tǒng)的可靠性,加重用戶的編程負(fù)擔(dān)。這些方案只能解決進(jìn)程互斥卻不能解決進(jìn)程同步問題。信號(hào)量和P、V操作1965年,荷蘭計(jì)算機(jī)科學(xué)家EdsgerWDijkstra(迪杰斯特拉)提出的同步工具;將交通管制中的信號(hào)燈管理方法引入操作系統(tǒng),讓兩個(gè)或多個(gè)進(jìn)程通過特殊變量展開交互;一個(gè)進(jìn)程在某一關(guān)鍵點(diǎn)上被迫停止執(zhí)行直至接收到對(duì)應(yīng)的特殊變量值(信號(hào)量);進(jìn)程通過P、V兩個(gè)特殊操作來發(fā)送和接收信號(hào)。6.4.3信號(hào)量(Semaphore)及PV操作1.信號(hào)量及PV操作原語信號(hào)量是一種特殊的變量,表示資源的物理實(shí)體(即表示系統(tǒng)中某類資源的數(shù)目)。它的表面形式是一個(gè)整型變量附加一個(gè)隊(duì)列;僅能被施加3種操作:初始化和2個(gè)特殊的原語操作
(1)初始化操作,信號(hào)量能初始化為非負(fù)的值。
(2)P操作(荷蘭語Proberen,嘗試減小try)
(3)V操作(荷蘭語Vehogen,增加raise/makehigher)數(shù)值指針S6.4.3信號(hào)量(Semaphore)及PV操作
信號(hào)量(S)的數(shù)據(jù)結(jié)構(gòu):
為一個(gè)值和一個(gè)指針,指針指向等待該信號(hào)量的下一個(gè)進(jìn)程。數(shù)值指針SStructsemaphore{intvalue;point_to_PCBqueue;}信號(hào)量及PV操作
設(shè)信號(hào)量為S,S可以取不同的整數(shù)值。信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)S>=0時(shí),表示當(dāng)前可用資源的數(shù)量;當(dāng)S<0時(shí),其絕對(duì)值表示等待使用該資源的進(jìn)程個(gè)數(shù)。
注意:信號(hào)量的值僅能由PV操作來改變。
數(shù)值(-3)·指針·PCB1·0·信號(hào)量·PCB2·PCB3·信號(hào)量及PV操作
PV操作既能實(shí)現(xiàn)進(jìn)程互斥,又能實(shí)現(xiàn)進(jìn)程同步。它由P操作原語和V操作原語組成,對(duì)信號(hào)量進(jìn)行操作,定義如下:V(S)操作①將信號(hào)量S的值加1,即S=S+1;②如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則(S≤0)還要釋放S信號(hào)量隊(duì)列中第一個(gè)等待的進(jìn)程(阻塞態(tài)改為就緒態(tài))。P(S)操作①將信號(hào)量S的值減1,即S=S-1;②如果S
0,則該進(jìn)程繼續(xù)執(zhí)行;否則(S<0)該進(jìn)程置為阻塞狀態(tài),排入S信號(hào)量的等待隊(duì)列。VoidP(semaphore*s)//P操作{s->value--;if(s->value<0){/*placethisprocessins->queue*/;/*blockthisprocess*/;asleep(s->queue)}}VoidV(semaphore*s)//V操作{s->value++;if(s->value<=0){/*removeaprocessPfroms->queue*/;/*placeprocessPonreadylist*/;
wakeup(s->queue)}}操作流程見教材信號(hào)量及PV操作
說明:信號(hào)量S
0時(shí),S表示某類可用資源的數(shù)量。執(zhí)行一次P操作意味著請(qǐng)求分配一個(gè)單位資源,因此S的值減1;減1后,若S<0,表示已經(jīng)沒有可用資源,請(qǐng)求者必須等待別的進(jìn)程釋放該類資源,它才能運(yùn)行下去。而執(zhí)行一個(gè)V操作意味著釋放一個(gè)單位資源,因此S的值加1;加1后,若S
0,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個(gè)等待狀態(tài)(阻塞狀態(tài))的進(jìn)程,使之能運(yùn)行下去。2.利用P、V原語實(shí)現(xiàn)進(jìn)程互斥
設(shè)有A、B兩個(gè)進(jìn)程,競爭使用某一臨界資源。利用信號(hào)量和PV原語操作可以方便地實(shí)現(xiàn)進(jìn)程間的互斥執(zhí)行。設(shè)mutex為公共互斥信號(hào)量。初值為1,取值范圍為(1,0,-1)。mutex=1表示進(jìn)程A、B都沒有進(jìn)入臨界區(qū)。mutex=0表示進(jìn)程A、B中的一個(gè)已經(jīng)進(jìn)入臨界區(qū)。mutex=-1表示進(jìn)程中,一個(gè)進(jìn)程已經(jīng)進(jìn)入臨界區(qū),另一個(gè)進(jìn)程被阻塞,等待前一進(jìn)入臨界區(qū)的進(jìn)程退出并釋放資源后喚醒它。
令mutex初值為1,進(jìn)程A、B競爭進(jìn)入臨界區(qū)的程序可以寫成: 進(jìn)程A 進(jìn)程B … …
P(mutex); P(mutex);
A臨界區(qū) B臨界區(qū)
V(mutex); V(mutex);2.利用P、V原語實(shí)現(xiàn)進(jìn)程互斥注意:PV操作必須成對(duì)出現(xiàn),先做P進(jìn)臨界區(qū);后做V,出臨界區(qū)。互斥信號(hào)量初值一般為1。3.利用P、V原語實(shí)現(xiàn)進(jìn)程同步設(shè)兩個(gè)信號(hào)量S1和S2S1表示緩沖區(qū)是否為空(信息是否取走,空閑單元的個(gè)數(shù))S1=0,緩沖區(qū)不空;S1=1,緩沖區(qū)空。S2表示緩沖區(qū)是否為滿(是否裝滿信息,非空單元/數(shù)據(jù)的個(gè)數(shù))S2=0,緩沖區(qū)不滿;S2=1,緩沖區(qū)滿。賦予初值S1為1,S2為0,程序可寫成:進(jìn)程A P(S1);把信息送入緩沖區(qū);V(S2);進(jìn)程BP(S2);把信息從緩沖區(qū)取走;V(S1);注意事項(xiàng):分析進(jìn)程間的制約關(guān)系,確定信號(hào)量種類。通過信號(hào)量協(xié)調(diào)進(jìn)程的執(zhí)行先后順序。(當(dāng)進(jìn)程需要等待相關(guān)協(xié)同進(jìn)程完成某個(gè)協(xié)作任務(wù)時(shí),就可以對(duì)初值為0的信號(hào)量執(zhí)行P操作,以使自己在此點(diǎn)阻塞。)信號(hào)量初值與資源數(shù)量有關(guān),也與PV操作的出現(xiàn)位置有關(guān)。同一信號(hào)量的P、V操作“成對(duì)”出現(xiàn),但分別在不同的進(jìn)程代碼中?;コ夂屯綄?duì)信號(hào)量PV操作方法的差異都是通過對(duì)信號(hào)量的P、V操作來實(shí)現(xiàn),但策略不同互斥:不同進(jìn)程對(duì)同一信號(hào)量進(jìn)行P、V操作一個(gè)進(jìn)程在成功地對(duì)信號(hào)量執(zhí)行了P操作后進(jìn)入臨界區(qū);在退出臨界區(qū)后,由該進(jìn)程對(duì)信號(hào)量執(zhí)行V操作。同步:進(jìn)程PA要同步等待PB。由進(jìn)程PA對(duì)信號(hào)量進(jìn)行P操作后,只能由進(jìn)程PB對(duì)同一個(gè)信號(hào)量進(jìn)行V操作,從而使PA能夠繼續(xù)執(zhí)行。若進(jìn)程PB也要同步等待PA,則要設(shè)置另一個(gè)信號(hào)量。4.生產(chǎn)者—消費(fèi)者問題“生產(chǎn)者和消費(fèi)者”問題是一個(gè)典型的進(jìn)程同步的例子計(jì)算機(jī)系統(tǒng)中的許多問題都可以被歸結(jié)“生產(chǎn)者和消費(fèi)者”問題:針對(duì)某類資源,一個(gè)進(jìn)程如果產(chǎn)生并釋放它,則該進(jìn)程稱作生產(chǎn)者;一個(gè)進(jìn)程如果使用這類資源,則該進(jìn)程稱作消費(fèi)者;例如:生產(chǎn)者可以是計(jì)算進(jìn)程,消費(fèi)者是打印進(jìn)程生產(chǎn)者和消費(fèi)者可以通過一個(gè)緩沖區(qū)聯(lián)系起來。(課本P131)生產(chǎn)者存放產(chǎn)品的單元數(shù)不能超過緩沖區(qū)的容量N;消費(fèi)者取出產(chǎn)品的總量不能超過生產(chǎn)者生產(chǎn)產(chǎn)品的總量。4.生產(chǎn)者—消費(fèi)者問題可設(shè)信號(hào)量buffers:空閑的緩沖區(qū)數(shù)目。初值為N。products:已存入緩沖區(qū)的產(chǎn)品數(shù)目。初值為0。mutex:互斥信號(hào)量。初值為1。生產(chǎn)者和消費(fèi)者問題的一般過程為:生產(chǎn)者在執(zhí)行P(buffers)之后,只要buffers≥0(還有空閑的緩沖區(qū)),就可將產(chǎn)品送入。消費(fèi)者在執(zhí)行P(produ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)書記基層治理黨課
- 2025年重慶備考題庫與智慧醫(yī)學(xué)研究院聘用人員招聘備考題庫及答案詳解一套
- 牽引護(hù)理的重要性
- 2025年國家空間科學(xué)中心復(fù)雜航天系統(tǒng)電子備考題庫技術(shù)重點(diǎn)實(shí)驗(yàn)室復(fù)雜系統(tǒng)研制與開發(fā)人員招聘備考題庫完整參考答案詳解
- 2025年湘科研究院招聘專業(yè)技術(shù)人員5名備考題庫及答案詳解一套
- 2026屆云南省景東縣二中高二數(shù)學(xué)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 供應(yīng)鏈合作伙伴評(píng)估工具
- 商務(wù)活動(dòng)現(xiàn)場(chǎng)管理與資源調(diào)配協(xié)議
- 環(huán)保話題下的我們議論文探討環(huán)保重要性(10篇)
- 國土三調(diào)合同范本
- 2025年居家養(yǎng)老助餐合同協(xié)議
- 石材行業(yè)合同范本
- 生產(chǎn)性采購管理制度(3篇)
- 2026年遠(yuǎn)程超聲診斷系統(tǒng)服務(wù)合同
- 中醫(yī)藥轉(zhuǎn)化研究中的專利布局策略
- COPD巨噬細(xì)胞精準(zhǔn)調(diào)控策略
- 網(wǎng)店代發(fā)合作合同范本
- 心源性休克的液體復(fù)蘇挑戰(zhàn)與個(gè)體化方案
- 基礎(chǔ)部分6se70變頻柜-整流單元
- GB∕T 37092-2018 信息安全技術(shù)密碼模塊安全要求
- 2022年《內(nèi)蒙古自治區(qū)建設(shè)工程費(fèi)用定額》取費(fèi)說明
評(píng)論
0/150
提交評(píng)論