操作系統(tǒng)習(xí)題(FL)答案_第1頁(yè)
操作系統(tǒng)習(xí)題(FL)答案_第2頁(yè)
操作系統(tǒng)習(xí)題(FL)答案_第3頁(yè)
操作系統(tǒng)習(xí)題(FL)答案_第4頁(yè)
操作系統(tǒng)習(xí)題(FL)答案_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——操作系統(tǒng)習(xí)題(FL)答案

一、單項(xiàng)選擇題:

1.在進(jìn)程管理中,當(dāng)_C_時(shí),進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。A.進(jìn)程被進(jìn)程調(diào)度程序選中B.等待某一事件C.等待的事件發(fā)生D.時(shí)間片用完2.分派到必要的資源并獲得處理機(jī)時(shí)的進(jìn)程狀態(tài)是_B_。A.就緒狀態(tài)B.執(zhí)行狀態(tài)C.阻塞狀態(tài)D.撤消狀態(tài)3.P、V操作是_A_。

A.兩條低級(jí)進(jìn)程通信原語(yǔ)B.兩組不同的機(jī)器指令C.兩條系統(tǒng)調(diào)用命令D.兩條高級(jí)進(jìn)程通信原語(yǔ)

4.對(duì)進(jìn)程的管理和控制使用_B_。

A.指令B.原語(yǔ)C.信號(hào)量D.信箱通信5.進(jìn)程的并發(fā)執(zhí)行是指若干個(gè)進(jìn)程_B_。

A.同時(shí)執(zhí)行B.在執(zhí)行的時(shí)間上是重疊的

C.在執(zhí)行的時(shí)間上是不可重疊的D.共享系統(tǒng)資源

6.若P、V操作的信號(hào)量S初值為2,當(dāng)前值為–1,則標(biāo)志有_B_等待進(jìn)程。

A.0個(gè)B.1個(gè)C.2個(gè)D.3個(gè)

7.程序的順序執(zhí)行尋常在_①A_的工作環(huán)境中,具有_②C_特征;程序的并發(fā)執(zhí)行在_③B_的工作環(huán)境中,具有_④D_特征。A.單道程序B.多道程序C.程序的可再現(xiàn)性D.資源共享8.進(jìn)程的三個(gè)基本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進(jìn)程由就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)的條件是_①D_,由運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)的條件是_②B_。

A.時(shí)間片用完B.等待某事件發(fā)生

C.等待的某事件已發(fā)生D.被進(jìn)程調(diào)度的程序選中9.以下的進(jìn)程狀態(tài)變化中,_C_變化是不可能發(fā)生的。A.運(yùn)行→就緒B.運(yùn)行→等待C.等待→運(yùn)行D.等待→就緒

10.一個(gè)運(yùn)行的進(jìn)程用完了分派給它的時(shí)間片后,它的狀態(tài)變?yōu)椋逜_。

A.就緒B.等待

C.運(yùn)行D.由用戶(hù)自己確定11.用P、V操作管理臨界區(qū)時(shí),信號(hào)量的初值應(yīng)定為_C_。A.–1B.0

C.1D.任意值

12.用V操作喚醒一個(gè)等待進(jìn)程時(shí),被喚醒進(jìn)程的狀態(tài)變?yōu)椋連_。A.等待B.就緒C.運(yùn)行D.完成

13.進(jìn)程間的同步是指進(jìn)程間在規(guī)律上的相互_B_關(guān)系。A.聯(lián)接B.制約C.繼續(xù)D.調(diào)用

14._D_是一種只能進(jìn)行P操作和V操作的特別變量。A.調(diào)度B.進(jìn)程C.同步D.信號(hào)量

15._B_是解決進(jìn)程間同步和互斥的一對(duì)低級(jí)通信原語(yǔ)。A.lock和unlockB.P和V

C.W和SD.Send和Receive16.下面對(duì)進(jìn)程的描述中,錯(cuò)誤的是_D_。

A.進(jìn)程是動(dòng)態(tài)的概念B.進(jìn)程執(zhí)行需要處理機(jī)C.進(jìn)程是有生命期的D.進(jìn)程是指令的集合17.下面的表達(dá)中正確的是_D_。

A.操作系統(tǒng)的一個(gè)重要概念是進(jìn)程,因此不同進(jìn)程所執(zhí)行的代碼有一定不同。

B.為了避免發(fā)生進(jìn)程死鎖,各進(jìn)程只能逐個(gè)申請(qǐng)資源。C.操作系統(tǒng)用PCB管理進(jìn)程,用戶(hù)進(jìn)程可以從PCB中讀出與本身運(yùn)行狀況有關(guān)的信息。

D.進(jìn)程同步是指某些進(jìn)程之間在規(guī)律上的相互制約關(guān)系。

18.進(jìn)程控制就是對(duì)系統(tǒng)中的進(jìn)程實(shí)施有效的管理,通過(guò)使用_C_、進(jìn)程撤消、進(jìn)程阻塞、進(jìn)程喚醒等進(jìn)程呢感控制原語(yǔ)實(shí)現(xiàn)。A.進(jìn)程運(yùn)行B.進(jìn)程管理C.進(jìn)程創(chuàng)立D.進(jìn)程同步19.信箱通信是一種_B_通信方式。

A.直接通信B.間接通信C.低級(jí)通信D.信號(hào)量20.操作系統(tǒng)通過(guò)_B_對(duì)進(jìn)程進(jìn)行管理。

A.進(jìn)程B.進(jìn)程控制塊

C.進(jìn)程啟動(dòng)程序D.進(jìn)程控制區(qū)21.操作系統(tǒng)通過(guò)_B_對(duì)進(jìn)程進(jìn)行管理。

A.JCBB.PCBC.DCTD.CHCT22.在操作系統(tǒng)中,解決進(jìn)程間的_①D_和_②B_問(wèn)題的一種方法是使用_③F_。

A.調(diào)度B.互斥C.通訊D.同步E.分派F.信號(hào)量23.某胸的進(jìn)程狀態(tài)如圖2.5所示,a是_①B_狀態(tài),b是_②D_狀態(tài),c是_③C_狀態(tài)。1表示_④B_,2表示_⑤A_,3表示發(fā)生了等待事件,4表示等待事件終止。以下?tīng)顩r中,當(dāng)發(fā)生前者的狀態(tài)轉(zhuǎn)換時(shí),_⑥A_會(huì)導(dǎo)致發(fā)生后者的狀態(tài)轉(zhuǎn)換。①②③:A.掛起B(yǎng).運(yùn)行C.等待D.就緒E.睡眠

④⑤:A.落選B.選中C.等待⑥:A.2→1B.4→2

a23

1cb4圖2.5某系統(tǒng)進(jìn)程狀態(tài)圖

24.用P、V操作可以解決_A_互斥問(wèn)題。

A.一切B.某些C.正確D.錯(cuò)誤25.尋常,用戶(hù)進(jìn)程被建立后,_B_。

A.便一直存在于系統(tǒng)中,直到被操作人員撤消。B.隨著作業(yè)運(yùn)行正?;虿徽=K止而撤消。C.隨著時(shí)間片輪轉(zhuǎn)而撤消與建立。

D.隨著進(jìn)程的阻塞或喚醒而撤消與建立。

26.在操作系統(tǒng)中,進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序在某個(gè)數(shù)據(jù)集上的一次_B_

A.等待活動(dòng)B.運(yùn)行活動(dòng)C.單獨(dú)操作D.關(guān)聯(lián)操作

27.一個(gè)進(jìn)程被喚醒意味著_D_。

A.該進(jìn)程重新占有了CPUB.它的優(yōu)先權(quán)變?yōu)樽畲驝.其PCB移至等待隊(duì)列隊(duì)首D.進(jìn)程變?yōu)榫途w態(tài)28.下面所述步驟中,_A_不是創(chuàng)立進(jìn)程所必需的。

A.由調(diào)度程序?yàn)檫M(jìn)程分派CPUB.建立一個(gè)進(jìn)程控制塊

C.為進(jìn)程分派內(nèi)存D.將進(jìn)程控制塊鏈入就緒隊(duì)列29.多道程序環(huán)境下,操作系統(tǒng)分派資源以_C_為基本單位。A.程序B.指令C.進(jìn)程D.作業(yè)30.對(duì)于兩個(gè)并發(fā)進(jìn)程,設(shè)互斥信號(hào)量為mutex,若mutex=0,則_B_。A.表示沒(méi)有進(jìn)程進(jìn)入臨界區(qū)B.表示有一個(gè)進(jìn)程進(jìn)入臨界區(qū)

C.表示有一個(gè)進(jìn)程進(jìn)入臨界區(qū),另一個(gè)進(jìn)程等待進(jìn)入D.表示有兩個(gè)進(jìn)程進(jìn)入臨界區(qū)

31.兩個(gè)進(jìn)程合作完成一個(gè)任務(wù)。在并發(fā)執(zhí)行中,一個(gè)進(jìn)程要等待其合作伙伴發(fā)來(lái)消息,或者建立某個(gè)條件后再向前執(zhí)行,這種制約性合作關(guān)系被稱(chēng)為進(jìn)程的_A_。

A.同步B.互斥C.調(diào)度D.執(zhí)行

32.為了進(jìn)行進(jìn)程協(xié)調(diào),進(jìn)程之間應(yīng)當(dāng)具有一定的聯(lián)系,這種聯(lián)系尋常采用進(jìn)程間交換數(shù)據(jù)的方式進(jìn)行,這種方式稱(chēng)為_D_。A.進(jìn)程互斥B.進(jìn)程同步C.進(jìn)程制約D.京城通信

二、填空題:

1.進(jìn)程的基本特征有_動(dòng)態(tài)_、_并發(fā)_、獨(dú)立、異步及結(jié)構(gòu)特征。2.信號(hào)量的物理意義是當(dāng)信號(hào)量值大于零時(shí)表示_可用資源的樹(shù)目_;當(dāng)信號(hào)量值小于零時(shí),其絕對(duì)值為_因請(qǐng)求該資源而被阻塞的進(jìn)程數(shù)目_。

3.臨界資源的概念是_一次僅允許一個(gè)進(jìn)程訪(fǎng)問(wèn)的資源_,而臨界區(qū)是指_進(jìn)程中訪(fǎng)問(wèn)臨界資源的那段程序代碼_。

4.進(jìn)程在運(yùn)行過(guò)程中有三種基本狀態(tài),它們是_運(yùn)行_、_就緒_、_等待_。

5.進(jìn)程主要由_程序段_、_數(shù)據(jù)段_、PCB三部分內(nèi)容組成,其中_PCB_是進(jìn)程存在的惟一標(biāo)志。而_程序段_部分也可以為其他進(jìn)程共享。

6.系統(tǒng)中各進(jìn)程之間規(guī)律上的相互制約關(guān)系稱(chēng)為_進(jìn)程同步_。

7.若一個(gè)進(jìn)程已進(jìn)入臨界區(qū),其他欲進(jìn)入臨界區(qū)的進(jìn)程必需_等待_。8.將進(jìn)程的_PCB_鏈接在一起就形成了進(jìn)程隊(duì)列。

9.用P、V操作管理臨界區(qū)時(shí),任何一個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前應(yīng)調(diào)用_P_操作,退出臨界區(qū)時(shí)應(yīng)調(diào)用_V_操作。

10.用信箱實(shí)現(xiàn)通信時(shí),應(yīng)_發(fā)送_和_接收_兩條基本原語(yǔ)。11.在多道程序系統(tǒng)中,進(jìn)程之間存在著不同制約關(guān)系可以劃分為兩類(lèi):_同步_與_互斥_。_同步_指進(jìn)程間具有的一定規(guī)律關(guān)系;_互斥_是指進(jìn)程間在使用共享資源方面的約束關(guān)系。

12.對(duì)于信號(hào)量可以做_P_操作和_V_操作,_P_操作用于阻塞進(jìn)程,_V_操作用于釋放進(jìn)程。程序中的_P_和_V_操作應(yīng)提防使用,以保證其使用的正確性,否則執(zhí)行時(shí)可能發(fā)生死鎖。

13.程序順序執(zhí)行時(shí)有順序性、_封閉性_和可再現(xiàn)性的特點(diǎn)。

14.m個(gè)進(jìn)程共享同一臨界資源,若使用信號(hào)量機(jī)制實(shí)現(xiàn)對(duì)臨界資源的互斥訪(fǎng)問(wèn),則信號(hào)量值的變化范圍是_1至(m-1)_。

15.設(shè)系統(tǒng)中有n(n﹥2)個(gè)進(jìn)程,且當(dāng)前不在執(zhí)行進(jìn)程調(diào)度程序,試考慮下述四種狀況:

①?zèng)]有運(yùn)行進(jìn)程,有2個(gè)就緒進(jìn)程,n個(gè)進(jìn)程處于等待狀態(tài)。②有1個(gè)運(yùn)行進(jìn)程,沒(méi)有就緒進(jìn)程,n-1進(jìn)程處于等待狀態(tài)。③有1個(gè)運(yùn)行進(jìn)程,有1個(gè)就緒進(jìn)程,n-2進(jìn)程處于等待狀態(tài)。④有1個(gè)運(yùn)行進(jìn)程,有n-1個(gè)運(yùn)行進(jìn)程,沒(méi)有進(jìn)程處于等待狀態(tài)。上述狀況中,不可能發(fā)生的狀況是_①_。

16.進(jìn)程是一個(gè)_動(dòng)_態(tài)概念,而程序是一個(gè)_靜_態(tài)概念。

17.在一個(gè)單處理機(jī)系統(tǒng)中,若有5個(gè)用戶(hù)進(jìn)程,且假設(shè)當(dāng)前時(shí)刻為用戶(hù)態(tài),則處于就緒狀態(tài)的用戶(hù)進(jìn)程最多有_4_個(gè),最少有_0_個(gè)。18.操作系統(tǒng)中,對(duì)信號(hào)量S的P原語(yǔ)操作定義中,使進(jìn)程進(jìn)入相應(yīng)等待隊(duì)列等待的條件是_s1.表達(dá)進(jìn)程和程序的主要區(qū)別。

2.在測(cè)量控制系統(tǒng)中,數(shù)據(jù)采集任務(wù)把所采集的數(shù)據(jù)送入一單緩沖區(qū);計(jì)算任務(wù)從該單緩沖區(qū)中去出數(shù)據(jù)進(jìn)行計(jì)算。試寫(xiě)出利用信號(hào)量機(jī)制實(shí)現(xiàn)兩者共享單緩沖區(qū)的同步算法。3.已知一個(gè)求值公式(A2+3B)/(B+5A),若A、B已賦值,試畫(huà)出該公式求值過(guò)程的前驅(qū)圖。

4.圖2.7給出了四個(gè)進(jìn)程合作完成某一任務(wù)的前趨圖,試說(shuō)明這四個(gè)進(jìn)程間的同步關(guān)系,并用P、V操作描述它。

S1

S2S3

S4

圖2.7四個(gè)合作進(jìn)程的前趨圖

5.某系統(tǒng)的今年成狀態(tài)轉(zhuǎn)換圖如圖2.8所示,請(qǐng)說(shuō)明:(1)引起各種狀態(tài)轉(zhuǎn)換的典型事件有哪些?

(2)當(dāng)我們觀(guān)測(cè)系統(tǒng)中某些進(jìn)程時(shí),能夠看到某一進(jìn)程產(chǎn)生的一次狀態(tài)轉(zhuǎn)換能引起另一進(jìn)程作一次狀態(tài)轉(zhuǎn)換。在什么狀況下,當(dāng)一個(gè)進(jìn)程發(fā)生轉(zhuǎn)換3時(shí)能馬上引起另一進(jìn)程發(fā)生轉(zhuǎn)換1?(3)試說(shuō)明是否會(huì)發(fā)生下述因果轉(zhuǎn)換:

2→1;3→2;4→1

執(zhí)行23

16.在單處理機(jī)的分時(shí)系統(tǒng)中,分派給進(jìn)程P的時(shí)間片用完后,系統(tǒng)進(jìn)行就緒阻塞切換,結(jié)果調(diào)度到的依舊是進(jìn)程P。有可能出現(xiàn)上述情形嗎?假使可能4請(qǐng)說(shuō)明理由。圖2.8某系統(tǒng)進(jìn)程狀態(tài)圖

7.桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果,也可向盤(pán)中放橘子,兒子專(zhuān)等吃盤(pán)中的橘子,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。規(guī)定當(dāng)盤(pán)空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用P、V原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。

8.哲學(xué)家甲請(qǐng)哲學(xué)家乙、丙、丁到某處探討問(wèn)題,約定全體到齊后開(kāi)始探討;在探討的間隙四位哲學(xué)家進(jìn)餐,每人進(jìn)餐時(shí)都需使用刀、叉各一把,餐桌上的布置如圖2.9所示,請(qǐng)用信號(hào)量及P、V操作說(shuō)明這四位哲學(xué)家的同步、互斥過(guò)程。

9.某數(shù)據(jù)庫(kù)有一個(gè)寫(xiě)進(jìn)程,多個(gè)讀進(jìn)程,它們之間讀、寫(xiě)操作的互斥要求是:寫(xiě)進(jìn)程正在寫(xiě)該數(shù)據(jù)庫(kù)時(shí)不能有其他進(jìn)程讀該數(shù)據(jù)庫(kù),也不能有其他進(jìn)程寫(xiě)該數(shù)據(jù)庫(kù);讀進(jìn)程之間不互斥,可以同時(shí)讀該數(shù)據(jù)庫(kù)。請(qǐng)用信號(hào)量及P、V操作描述這一組進(jìn)程的工作過(guò)程。10.設(shè)在公共汽車(chē)上,司機(jī)和售票員的活動(dòng)分別是:司機(jī)的活動(dòng):?jiǎn)?dòng)車(chē)輛;

正常行車(chē);到站停車(chē);

售票員的活動(dòng):關(guān)車(chē)門(mén);

售票;開(kāi)車(chē)門(mén);

在汽車(chē)不斷地到站、停車(chē)、行駛過(guò)程中,這兩個(gè)活動(dòng)有什么同步關(guān)系?用信號(hào)量和P、V操作實(shí)現(xiàn)它們的同步。

11.設(shè)有一個(gè)發(fā)送者進(jìn)程和一個(gè)接受者進(jìn)程,其流程土如圖2.10所示。S是用于實(shí)現(xiàn)進(jìn)程同步的信號(hào)量,mutex是用于實(shí)現(xiàn)進(jìn)程互斥的信號(hào)量。試問(wèn)流程圖中的A、B、C、D四框中應(yīng)填寫(xiě)什么?假定緩沖區(qū)無(wú)限多個(gè),s和mutex的初值應(yīng)為多少?發(fā)送者進(jìn)程:申請(qǐng)緩沖區(qū)

B把信息寫(xiě)入緩沖區(qū)

V(s)

A

將緩沖區(qū)放到消息鏈尾

接收者進(jìn)程::

C

D

從消息鏈?zhǔn)兹∫粋€(gè)緩沖區(qū)

V(mutex)

從緩沖區(qū)中取出信息

釋放緩沖區(qū)

12.下述程序是解決兩個(gè)進(jìn)程互斥訪(fǎng)問(wèn)臨界區(qū)溫暖體的一種方法,試從“互斥〞、“有空讓進(jìn)〞、“有限等待〞等三個(gè)方面探討它是否正確。intc1=0;intc2=0;main(){

cobegin

p1();

p2();/*進(jìn)程p1、p2并發(fā)執(zhí)行*/coend}

p1()/*第一個(gè)進(jìn)程p1*/{

while(1){

othersection1;/*其他部分*/doc1=1–c2;while(c2==0);

criticalsection;/*臨界區(qū)*/c1=1;}}

p2()/*其次個(gè)進(jìn)程p2*/{

while(1){

othersection2;/*其他部分*/do

c2=1–c1;while(c1==0);

criticalsection;/*臨界區(qū)*/c2=1;}}

13.①寫(xiě)出P、V操作的定義。

②有三個(gè)進(jìn)程PA、PB和PC合作解決文件打印問(wèn)題:PA將文件記錄從磁盤(pán)讀入主存的緩沖區(qū)1,每執(zhí)行一次讀一個(gè)記錄;PB將緩沖區(qū)1的內(nèi)容復(fù)制到緩沖區(qū)2,每執(zhí)行一次復(fù)制一個(gè)記錄;PC將緩沖區(qū)2的內(nèi)容打印出來(lái),每執(zhí)行一次打印一個(gè)記錄。緩沖區(qū)的大小等于一個(gè)記錄大小。請(qǐng)用P、V操作來(lái)保證文件的正確打印。

14.設(shè)有八個(gè)程序prog1、prog2、…、prog8。它們?cè)诓l(fā)系統(tǒng)中執(zhí)行時(shí)

有如圖2.13所示的制約關(guān)系,試用P、V操作實(shí)現(xiàn)這些程序見(jiàn)的同步。prog1prog2prog3prog5

prog4

prog6prog7prog8

圖2.13進(jìn)程并發(fā)執(zhí)行的制約關(guān)系

15.有一個(gè)倉(cāng)庫(kù),可以存放A和B兩種產(chǎn)品,但要求:(1)每次只能存入一種產(chǎn)品(A或B);(2)-N﹤A產(chǎn)品數(shù)量–B產(chǎn)品數(shù)量﹤M。

其中,N和M只正整數(shù)。試用P、V操作描述產(chǎn)品A與產(chǎn)品B的入庫(kù)過(guò)程。

16.進(jìn)程A1、A2、…、An1通過(guò)m個(gè)緩沖區(qū)向進(jìn)程B1、B2、…、Bn2不斷地發(fā)送消息。發(fā)送和接收工作遵循如下規(guī)則:

①每個(gè)發(fā)送進(jìn)程一次發(fā)送一個(gè)消息,寫(xiě)入一個(gè)緩沖區(qū),緩沖區(qū)大小等于消息長(zhǎng)度;

②對(duì)每一個(gè)消息,B1、B2、…、Bn2都須各接收一次,讀入各自的數(shù)據(jù)區(qū)內(nèi);

③m個(gè)緩沖區(qū)都滿(mǎn)時(shí),發(fā)送進(jìn)程等待;沒(méi)有可讀的消息時(shí),接收進(jìn)程等待。

試用P、V操作組織正確的發(fā)送和接收工作。

解析題:

1.(1)程序是指令的有序集合,其本身沒(méi)有任何運(yùn)行的含義,它是一個(gè)靜態(tài)的概念。而進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過(guò)程,它是一個(gè)動(dòng)態(tài)的概念。

(2)程序的存在是永久的,而進(jìn)程則是有生命期的,它因創(chuàng)立而產(chǎn)生,因調(diào)度而執(zhí)行,因得不到資源而暫停,因撤消而滅亡。

(3)程序僅是指令的有序集合。而進(jìn)程則由程序、數(shù)據(jù)和進(jìn)程控制塊組成。

(4)進(jìn)程與程序之間不是一一對(duì)應(yīng)的,即同一程序同時(shí)運(yùn)行于若干不同的數(shù)據(jù)集合上,它將屬于若干個(gè)不同的進(jìn)程,而一個(gè)進(jìn)程可以執(zhí)行多個(gè)程序。

2.在此題中,應(yīng)設(shè)置兩個(gè)信號(hào)量Sf、Se,信號(hào)量Sf表示緩沖區(qū)中是否有可供打印計(jì)算結(jié)果,其初值為0;信號(hào)量Se用于表示緩沖區(qū)有無(wú)空位置存放新的信息,其初值為1。此題的同步描述如下:intSe=1;intSf=0;{

cobeginget();

compute();coend}

get(){

while(采集工作未完成){

采集一個(gè)數(shù)據(jù);P(Se);

將數(shù)據(jù)送入緩沖區(qū)中;V(Sf);}}

compute(){

while(計(jì)算工作未完成){

P(Sf);

從緩沖區(qū)中取出數(shù)據(jù);V(Se);

進(jìn)行數(shù)據(jù)計(jì)算;}}

3.

4.圖2.7說(shuō)明任務(wù)啟動(dòng)后S1先執(zhí)行。當(dāng)S1終止后,S2、S3可以開(kāi)始執(zhí)行。S2、S3完成后,S4才能開(kāi)始執(zhí)行。為了確保這一執(zhí)行順序,設(shè)三個(gè)同步信號(hào)量b2、b3、b4分別表示進(jìn)程S2、S3、S4是否可以開(kāi)始執(zhí)行,其初值均為0。這四個(gè)進(jìn)程的同步描述如下:

intb2=0;/*表示進(jìn)程S2是否可以開(kāi)始執(zhí)行*/intb3=0;/*表示進(jìn)程S3是否可以開(kāi)始執(zhí)行*/intb4=0;/*表示進(jìn)程S4是否可以開(kāi)始執(zhí)行*/main(){

cobeginS1();

S2();S3();S4();coend}

S1(){

v(b2);v(b3);}

S2(){

p(b2);

v(b4);}

S3(){……p(b3);

v(b4);

}

S4(){

p(b4);

v(b4);/*因在S2及S3完成時(shí)對(duì)b4做了v操作,因此此

處需兩個(gè)p操作*/

}

5.(1)在此題所給的進(jìn)程狀態(tài)轉(zhuǎn)換圖中,存在四種狀態(tài)轉(zhuǎn)換。當(dāng)進(jìn)程調(diào)度程序從就緒隊(duì)列中選取一個(gè)進(jìn)程投入運(yùn)行時(shí)間引起轉(zhuǎn)換1;正在執(zhí)行的進(jìn)程如因時(shí)間片用完而被暫停執(zhí)行就會(huì)引起轉(zhuǎn)換2;正在執(zhí)行的進(jìn)程因等待的事件尚未發(fā)生而無(wú)法執(zhí)行(如進(jìn)程請(qǐng)求完成I/O)則會(huì)引起轉(zhuǎn)換3;當(dāng)進(jìn)程等待的事件發(fā)生時(shí)(如I/O完成)則會(huì)引起轉(zhuǎn)換4。(2)假使就緒隊(duì)列非空,則一個(gè)進(jìn)程的轉(zhuǎn)換3會(huì)馬上引起另一個(gè)進(jìn)程的轉(zhuǎn)換1。這是由于一個(gè)進(jìn)程發(fā)生轉(zhuǎn)換3意味著正在執(zhí)行的進(jìn)程由執(zhí)行狀態(tài)變?yōu)樽枞麪顟B(tài),這時(shí),處理機(jī)空閑,進(jìn)程調(diào)度程序必然會(huì)從就緒隊(duì)列中選取一個(gè)進(jìn)程并將它投入運(yùn)行,因此只要就緒隊(duì)列非空,一個(gè)進(jìn)程的轉(zhuǎn)換3能馬上引起另一個(gè)進(jìn)程的轉(zhuǎn)換1。

(3)所謂因果轉(zhuǎn)換指的是有兩個(gè)轉(zhuǎn)換,一個(gè)轉(zhuǎn)換的發(fā)生會(huì)引起另一個(gè)轉(zhuǎn)換的發(fā)生,前一個(gè)轉(zhuǎn)換稱(chēng)為因,后一個(gè)轉(zhuǎn)換稱(chēng)為果,這兩個(gè)轉(zhuǎn)換稱(chēng)為因果轉(zhuǎn)換。當(dāng)然這種因果關(guān)系并不是什么時(shí)候都能發(fā)生,而是在一定條件下才會(huì)發(fā)生。

2→1:當(dāng)某進(jìn)程發(fā)生轉(zhuǎn)換2時(shí),就必然引起另一進(jìn)程的轉(zhuǎn)換1。由于當(dāng)發(fā)生轉(zhuǎn)換2時(shí),正在執(zhí)行的進(jìn)程從執(zhí)行狀態(tài)變?yōu)榫途w狀態(tài),進(jìn)程調(diào)度常年工序必然會(huì)從就緒隊(duì)列中選取一個(gè)進(jìn)程投入運(yùn)行,即發(fā)生轉(zhuǎn)換1。

3→2:某個(gè)進(jìn)程的轉(zhuǎn)換3決不可能引起另一進(jìn)程發(fā)生轉(zhuǎn)換2。這是由于當(dāng)前執(zhí)行進(jìn)程從執(zhí)行狀態(tài)變?yōu)樽枞麪顟B(tài),不可能又從執(zhí)行狀態(tài)變?yōu)榫途w狀態(tài)。

4→1:當(dāng)處理機(jī)空閑且就緒隊(duì)列為空時(shí),某一進(jìn)程的轉(zhuǎn)換4就會(huì)引起該進(jìn)程的轉(zhuǎn)換1。由于此時(shí)處理機(jī)空閑,一旦某個(gè)進(jìn)程發(fā)生轉(zhuǎn)換4,

……就意味著有一個(gè)進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),因而調(diào)度程序就會(huì)將就緒隊(duì)列中的此進(jìn)程投入運(yùn)行。

6.有可能出現(xiàn)上述狀況。例如:若在進(jìn)程P時(shí)間片用完后,被迫回到就緒隊(duì)列時(shí),就緒隊(duì)列為空,這樣進(jìn)程P就是就緒隊(duì)列中惟一的一個(gè)進(jìn)程,于是調(diào)度程序選種的進(jìn)程必然是進(jìn)程P;又如在按有限級(jí)調(diào)度的系統(tǒng)中,就緒隊(duì)列按進(jìn)程優(yōu)先級(jí)排列,在進(jìn)程P時(shí)間片用完之后回到就緒隊(duì)列時(shí),若其優(yōu)先級(jí)高于當(dāng)前就緒隊(duì)列中的其他進(jìn)程,則它將排在就緒隊(duì)列之首,從而再次被調(diào)度程序選中并投入運(yùn)行。

7.在此題中,應(yīng)設(shè)置三個(gè)信號(hào)量S、So、Sa,信號(hào)量S表示盤(pán)子是否為空,其初值為1;信號(hào)量So表示盤(pán)子中是否有橘子,其初值為0;信號(hào)量Sa表示盤(pán)子中是否有蘋(píng)果,其初值為0。同步描述如下:intS=1;intSa=0;intSo=0;main(){

cobegin

father();

son();

daughter();coend}

father(){

while(1){

P(Se);

將水果放入盤(pán)中;

if(放入的是橘子)v(So);elsev(Sa);}}

son(){

while(1){

P(So);

從盤(pán)中取出橘子;v(S);吃橘子;}

}

daughter(){

while(1){

P(Sa);

從盤(pán)中取出蘋(píng)果;v(S);吃蘋(píng)果;}}

8.在此題中,應(yīng)設(shè)置四個(gè)信號(hào)量fork1、fork2、knife1、knife2,其初值均為1,分別表示資源叉1、叉2、刀1、刀2是否可用。同步描述如下:

intfork1=1;intfork2=1;intknife1=1;

intknife2=1;main(){

cobegin

Pa();

Pb();Pc();Pd();coend}

Pa()

{

while(1){

P(knife1);P(fork1);進(jìn)餐;

v(knife1);

v(fork1);探討問(wèn)題;}

}

Pb(){

while(1){

P(knife2);P(fork1);進(jìn)餐;

v(knife2);

v(fork1);探討問(wèn)題;}}

Pc(){

while(1){

P(knife2);P(fork2);進(jìn)餐;

v(knife2);

v(fork2);探討問(wèn)題;}}

Pd()

{

while(1){

P(knife1);P(fork2);進(jìn)餐;

v(knife1);

v(fork2);探討問(wèn)題;}

}

9.在此題中,允許讀進(jìn)程同時(shí)讀數(shù)據(jù)庫(kù),但寫(xiě)進(jìn)程正在寫(xiě)數(shù)據(jù)庫(kù)時(shí)不允許其他進(jìn)程讀數(shù)據(jù)庫(kù),也不允許其他進(jìn)程寫(xiě)該數(shù)據(jù)庫(kù)。為了解決讀、寫(xiě)進(jìn)程之間的同步,一貫設(shè)置兩個(gè)信號(hào)量和一個(gè)共享變量:讀互斥信號(hào)量rmutex,用于使讀進(jìn)程互斥地訪(fǎng)問(wèn)共享變量count,其初值為1;寫(xiě)互斥信號(hào)量wmutex,用于實(shí)現(xiàn)寫(xiě)進(jìn)程與讀進(jìn)程興旺互斥及寫(xiě)進(jìn)程與寫(xiě)進(jìn)程的互斥,其初值為1;共享變量count,用于記錄當(dāng)前正在讀數(shù)據(jù)庫(kù)的讀進(jìn)程數(shù)目,初值為0。其工作過(guò)程如下:intrmutex=1;intwmutex=1;intcount=0;main(){

cobegin

reader();

writer();coend}

reader(){

while(1){

P(rmutex);

if(count==0)p(wmutex);/*當(dāng)?shù)谝粋€(gè)讀進(jìn)程讀數(shù)據(jù)庫(kù)時(shí),阻止進(jìn)程寫(xiě)*/

count++;v(rmutex);讀數(shù)據(jù)庫(kù);p(rmutex);

count----;

if(count==0)v(wmutex);/*當(dāng)最終一個(gè)讀進(jìn)程讀完數(shù)據(jù)

庫(kù)時(shí),允許寫(xiě)進(jìn)程寫(xiě)*/

v(rmutex);}}

writer(){

while(1){

P(wmutex);寫(xiě)數(shù)據(jù)庫(kù);v(wmutex);}}

10.在此題中,應(yīng)設(shè)置兩個(gè)信號(hào)量:S1、S2,S1表示是否允許司機(jī)啟動(dòng)汽車(chē),其初值為0;S2表示是否允許售票員開(kāi)門(mén),其初值為0。用P、V原語(yǔ)描述如下:intS1=0;intS2=0;main(){

cobegin

driver();

busman();coend}

driver(){

while(1){

P(S1);啟動(dòng)車(chē)輛;正常行車(chē);到站停車(chē);v(S2);}

}

busman(){

while(1){

關(guān)車(chē)門(mén);v(S1);售票;

p(S2);開(kāi)車(chē)門(mén);上下乘客;}}

11.由上述分析可知,A、B、C、D四框應(yīng)分別填入:A框P(mutex)B框V(mutex)C框P(s)

D框P(mutex)

開(kāi)始時(shí),消息鏈上沒(méi)有可供接收的信息,所以s的初值為0;互斥信號(hào)量mutex的初值為1。12.13.

①P、V操作是兩條原語(yǔ),它們的定義如下:P操作:P操作記為P(S),其中S為一信號(hào)量,它執(zhí)行時(shí)主要完成下述動(dòng)作:

S=S–1

若S≧0,則進(jìn)程繼續(xù)運(yùn)行。

若S﹤0,則該進(jìn)程被阻塞,并將它插入該信號(hào)量的等待隊(duì)列中。V操作:V操作記為V(S),其中S為一信號(hào)量,它執(zhí)行時(shí)主要完成下述動(dòng)作:S=S+1

若S﹥0,則進(jìn)程繼續(xù)執(zhí)行。若S≦0,則從信號(hào)量等待隊(duì)列中移出隊(duì)首進(jìn)程,使其變?yōu)榫途w狀態(tài)。②在此題中,進(jìn)程PA、PB、PC之間的關(guān)系為:PA與PB共用一個(gè)單緩沖區(qū),而PB又與PC共用一個(gè)單緩沖區(qū),其合作方式可用圖2.12表示。當(dāng)緩沖區(qū)1為空時(shí),進(jìn)程PA可將一個(gè)記錄讀入其中;若緩沖區(qū)1中有數(shù)據(jù)且緩沖區(qū)2為空,則進(jìn)程PB可將記錄從緩沖區(qū)1復(fù)制到緩沖區(qū)2中;若緩沖區(qū)2中有數(shù)據(jù),則進(jìn)程PC可以打印記錄。在其他條件下,相應(yīng)進(jìn)程必需等待。事實(shí)上,這是一個(gè)生產(chǎn)者—消費(fèi)者問(wèn)題。

為遵循這一同步規(guī)則。應(yīng)設(shè)置四個(gè)信號(hào)量empty1、empty2、full1、full2,信號(hào)量empty1及empty2分別表示緩沖區(qū)1及緩沖區(qū)2是否為空,其初值為1;信號(hào)量full1及full2分別表示緩沖區(qū)1及緩沖區(qū)2是否有記錄可供處理,其初值為0。其同步描述如下:intempty1=1;intempty2=1;intfull1=0;

intfull2=0;main(){

cobegin

PA();

PB();PC();coend}

PA(){

while(1){

從磁盤(pán)讀一個(gè)記錄;

P(empty1);

將記錄存入緩沖區(qū)1;

v(full1);}

}

PB(){

while(1){

P(full1);

從緩沖區(qū)1中取出記錄;

v(empty1);P(empty2);

將記錄存入緩沖區(qū)2;v(full2);}}

PC(){

while(1){

P(full2));

從緩沖區(qū)2中取出記錄;

v(empty2);打印記錄;}}14.

intf1=0;

intf2=0;intf3=0;intf4=0;intf5=0;

intf6=0;intf7=0;

main(){

cobegin

prog1();

prog2();prog3();prog4();prog5(prog6(prog7(coend}

prog1(){

…v(f1);v(f1);v(f1);}

prog2(){

…v(f2);v(f2);v(f2);}

prog3(){

p(f1);p(f2);

…v(f3);}

prog4(){

p(f1););););p(f2);

v(f4);

}

prog5(){

p(f1);p(f2);

v(f5);}

prog6(){

p(f3);

v(f6);}

prog7(){

p(f5);

v(f7);}

prog8(){

p(f4);p(f6);p(f7);}

15.在此題中,我們可以設(shè)置兩個(gè)信號(hào)量來(lái)控制A、B產(chǎn)品的存放數(shù)量,sa表示當(dāng)前允許A產(chǎn)品比B產(chǎn)品多入庫(kù)的數(shù)量,即在當(dāng)前庫(kù)存量和B產(chǎn)品不入庫(kù)的狀況下,還可以允許sa個(gè)A產(chǎn)品入庫(kù);sb表示當(dāng)前允許B產(chǎn)品比A產(chǎn)品多入庫(kù)的數(shù)量,即在當(dāng)前庫(kù)存量和A產(chǎn)品不入庫(kù)的狀況下,還可以允許sb個(gè)B產(chǎn)品入庫(kù)。初始時(shí),sa為M–1,sb為N

……………–1。當(dāng)往庫(kù)中存放一個(gè)A產(chǎn)品時(shí),則允許存入B產(chǎn)品的數(shù)量也增加1;當(dāng)往庫(kù)中存放一個(gè)B產(chǎn)品時(shí),則允許存入A產(chǎn)品的數(shù)量也增加1。產(chǎn)品

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論