第三章進程管理課后習(xí)題答案._第1頁
第三章進程管理課后習(xí)題答案._第2頁
第三章進程管理課后習(xí)題答案._第3頁
第三章進程管理課后習(xí)題答案._第4頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、進程管理習(xí)題1 現(xiàn)代操作系統(tǒng)中為什么要引入“進程”概念? 它與程序有什么區(qū)別?答:之所以要引入進程的概念,是因為在一些可以并發(fā)的程序段之間,存在著某種相互制約的關(guān)系, 每個程序段的執(zhí)行不僅要受到其它程序執(zhí)行的制約,而且還要動態(tài)地依賴系統(tǒng)資源的分配情況,因此每個可以并發(fā)執(zhí)行的程序段就會因外界條件的限制而不能運行,被迫處于阻塞狀態(tài)。 僅用程序的概念無法表示程序的走走停停以及程序運行過程中對資源的競爭現(xiàn)象, 因此需要采用一種動態(tài)的概念描述并發(fā)程序這種走走停停的現(xiàn)象,這就產(chǎn)生了進程的概念。進程和程序的區(qū)別:( 1)進程是程序的執(zhí)行過程, 是動態(tài)的過程, 屬于一種動態(tài)概念。 程序是一組有序靜態(tài)指令和數(shù)據(jù)

2、的集合,用來指示處理機的操作,是一種靜態(tài)概念。( 2)從結(jié)構(gòu)上看,每個進程實體是由程序段和相應(yīng)的數(shù)據(jù)段兩部分構(gòu)成,并且進程結(jié)構(gòu)中還要包含 PCB,即進程控制塊。( 3)一個進程可以涉及到一個或幾個程序的執(zhí)行; 反之,同一程序可以對應(yīng)多個進程,即同一個程序段可以在不同數(shù)據(jù)集合上運行,可以構(gòu)成不同的進程。( 4)進程能真實地描述并發(fā)執(zhí)行的過程, 而程序僅僅是靜態(tài)指令堆積的序列。( 5)進程有可創(chuàng)建其他進程的功能, 而一般的程序不具有創(chuàng)建其它程序的功能。( 6)每一個程序都是在一個進程現(xiàn)場中運行的。2 敘述進程的并發(fā)性和制約性。答:并發(fā)性是進程的重要特征。即多道程序中多個進程同時向前推進的過程,沒個

3、進程總是與其它進程并發(fā)地執(zhí)行的。進程的制約性是指一個進程的運行受到另一進程的制約。比如有的進程可能正在等待另一進程的計算結(jié)果而無法運行,或者進程所需的資源被別的進程占有而無法運行。3 進程的含義是什么? 如何構(gòu)造和描述進程?答:進程是程序的一次執(zhí)行。進程由“進程控制塊+程序 +數(shù)據(jù)”構(gòu)成,用進程控制塊描述進程。4 有三個并發(fā)進程,R 負(fù)責(zé)從輸入設(shè)備讀入信息并傳送給M, M將信息加工并傳送給P, P 將打印輸出,寫出下列條件下的并發(fā)程序。(1)雙緩沖區(qū),每個區(qū)大小為K。(2) 單緩沖區(qū),其大小為 K。答:( 1) 雙緩沖區(qū),每個區(qū)大小為 K,信號量初值如下:mutexR=mutexP=1;emp

4、tyR=emptyP=k;fullR= fullP=0;變量的初值如下:inR=outR=inP=outP=0 ;用類 Pascal 編寫程序如下:varmutexR,mutexP,emptyR,fullR,emptyP,fullP: semaphere;inR,outR,inP,outP:integer;buffer:array 0.k-1ofitem;bufferP:array 0.k-1ofitem;procedureRbeginwhiletruedobegin輸入數(shù)據(jù)data1;P (emptyR); P (mutexR);bufferR(inR):=data1; inR:=(inR+

5、1) mod (k);V(mutexR);V(fullR);endend;procedureMbeginwhiletruedobeginP(fullR);P(mutexR);data2:=bufferR(outR);outR:=(outR+1)mod (k);V(mutexR);V(emptyR);對 data2 進行加工 ; P(emptyP); P(mutexP);bufferP(inP):=data2; inP:=(inP+1)mod (k);V(mutexP);V(fullP);endend;procedureP:beginwhiletruedobeginP(fullP);P(mute

6、xP)data3:=bufferP(outP);outP:=(outP+1)mod(k);V(mutexP);V(emptyP);打印 data3;endend;beginseminitinal(mutexR.v,1;mutexP.v,1;emptyR.v,k;fullR.v,0;emptyP.v,k;fullP.v,0);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.(2) 單緩沖區(qū),大小為 kvarempty,full,ok,mutexinR,outR,inP,outPbufferprocedureR:beginwhiletrued

7、o: semaphere;:integer;:array0.k-1ofitem;begin輸入數(shù)據(jù)data1;P(empty);P(mutex);buffer(inR):=data1;inR:=(inR+1) mod (k);V(mutex);V(full)endend;procedureM:beginwhileturedobeginP(full);P(mutex);data2:=buffer(outR);outR:=(outR+1) mod (k);V(mutex);對 data2 加工 ; P(mutex);buffer(inP):=data2; inP:=(inP+1)mod (k);V

8、(mutex);V(ok); endend;proedureP:beginwhileturedobeginP(ok);P(mutex);data3:=buffer(outP);outP:=(outP+1) mod(k);V(mutex);V(empty);打印data3;end;endbeginseminitial(empty.v,k;full.v,0;ok.v,0;mutex.v,1);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.5 在生產(chǎn)者與消費者問題的算法中,交換兩個V 操作的次序會有什么結(jié)果?交換兩P操作的次序呢 ? 說明理由

9、。答:交換兩 P 操作的次序有可能造成死鎖。例如,當(dāng)無空緩沖區(qū)時,如果此時生產(chǎn)者先做互斥操作,即:P(mutex), 然后才做同步操作P(empty) ,由于此時empty=-1 造成生產(chǎn)者被阻塞。 當(dāng)消費者執(zhí)行到互斥操作P(mutex) 時,由于生產(chǎn)者已執(zhí)行過P(mutex) 并未作釋放,所以此時 mutex=-1 ,造成消費者也被阻塞,生產(chǎn)者等消費者釋放空緩沖區(qū),而消費者則等待生產(chǎn)者釋放臨界資源的使用權(quán),所以兩個進程都無法向前推進而造成死鎖。交換兩個 V 操作的次序不會發(fā)生死鎖。6 設(shè)有三個進程A、 B、 C,其中 A 與 B 構(gòu)成一對生產(chǎn)者與消費者(A 為生產(chǎn)者, B 為消費者),共享一

10、個由n 個緩沖塊組成的緩沖池;B 與 C 也構(gòu)成一對生產(chǎn)者與消費者(此時B為生產(chǎn)者, C為消費者),共享另一個由m個緩沖塊組成的緩沖池。用P、V 操作描述它們之間的同步關(guān)系。答:varmutexA,emptyA,fullA,mutexC,emptyC,fullC : semaphere;i,j,a,b :integer;bufferA :array0.n-1ofitembufferC :array0.m-1ofitem;procedureproduceA :生產(chǎn)者進程 AbeginwhileturedobeginProduce next product;P(emptyA);P(mutexA);

11、bufferA(i) :=products;i:=(i+1) mod(n) ;V(mutexA);V(fullA)endendprocedure consumer_procedurerB: 消費者和生產(chǎn)者進程 B beginwhileturedobeginP(fullA);P(mutexA);Goods:=buffer(j);j:=(j+1)mod(n);V(mutexA);V(emptyA);Consume goods and Produce next product C;P(emptyC);P(mutexC);BufferC(a):=product C;a:=(a+1) mod(m);V(

12、mutexC);V(fullC)endend;procedureconsumerC ;消費者 C進程beginwhileturedobeginP(fullC);P(mutexC);Goods:=bufferC(b);b:=(b+1) mod(m);V(mutexC);V(emptyC);Consume product;endend;beginSeminitsal(mutexA.v,1;mutexC.v,1;emptyA.v,n;emptyC.v,m;fullA.V,0;fullC.V,0);i:=0;j:=0;a:=0;b:=0;cobeginproduce Aconsumer_procedu

13、rerB;consumerCcoendend.7 有一閱覽室, 共有 100 個座位。 讀者進入時必須先在一張登記表上登記,該表為每一座位列一表目,包括座號和讀者姓名。讀者離開時要消掉登記內(nèi)容。試用P、 V 操作描述讀者進程的同步結(jié)構(gòu)。答:varmutex: semaphere;full: semaphere;table:array0.n-1procedurereader;beginP(full);P(mutex);Register_name(table);V(mutex);信號量,用于互斥信號量,用于同步of item;登記表讀者進程Reading ;P(mutex);Delet_name(

14、table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100);初始化cobeginreader;reader;.coendend.8引入線程的目的是什么?答:引入線程的目的是提高程序執(zhí)行的并行度。9 引入管程的目的是什么?答:引入管程的目的把分散的臨界區(qū)集中起來管理,為每個可共享的資源設(shè)立一個專門的機構(gòu)來統(tǒng)一管理各進程對該共享資源的訪問。 這樣使互斥操作更安全, 既便于系統(tǒng)管理共享資源,又能保證互斥訪問。10 用管程實現(xiàn)讀者與寫者關(guān)系。管程部分描述如下:monitorrw;conditionwrt;var readcount

15、:integer;procedureentry read _start( );beginreadcount:=readcount+1;end;procedureentry read_finish( );beginreadcount:=readcount-1;ifreadcount=0 thensingal(wrt)end;procedureentry write( );beginifreadcount>0thenwait (wrt);perform writing;endbeginreadcount:= 0endend;主程序部分:procedure writter:beginrepea

16、trw.write( );untilfalse;endprocedure reader:beginrepeatrw.read_start( );perform reading;rw.read_finish( );untilfalse;endcobeginreader;writter;coend.11 何謂進程通信?答: 進程通信是指進程之間的信息交換。12 消息通信機制中應(yīng)設(shè)置哪些基本通信原語?答:應(yīng)設(shè)置 send(A)(發(fā)送消息)原語, A 是原語的參數(shù),表示發(fā)送區(qū)的起始地址。receive (B)(接受消息)原語,B 是接受進程提供的接收區(qū)起始地址。13 何謂死鎖?舉例說明之。答:兩個以上

17、的進程相互等待一個永遠(yuǎn)不可能發(fā)生的條件而無法向前推進,這種僵局稱為死鎖。例如:如圖所示的單行道上的交通阻塞。14. 什么是死鎖?產(chǎn)生死鎖的原因和必要條件是什么?解:所謂死鎖是指在一個進程集合中的所有進程都在等待只能由該集合中的其它一個進程才能引發(fā)的事件而無限期地僵持下去的局面。產(chǎn)生死鎖的原因可以歸結(jié)為兩點:1)競爭資源,2)各進程之間的推進順序不當(dāng)。產(chǎn)生死鎖的必要條件有四個: 1)互斥條件, 2)不剝奪條件, 3)請求和保持條件, 4)環(huán)路條件。15. 某系統(tǒng)中有 A 、B、 C 三類資源, A 資源的數(shù)量為 17,B 資源的數(shù)量為 5, C 資源的數(shù)量為 20。某時刻系統(tǒng)中有 5 個進程。在 T0

溫馨提示

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

評論

0/150

提交評論