第二章 進(jìn)程管理
單項(xiàng)選擇題
1、順序程序和并發(fā)程序的執(zhí)行相比,( ?C ?)。
A.基本相同?????????????????? B.有點(diǎn)不同
C.并發(fā)程序執(zhí)行總體上執(zhí)行時(shí)間快
D.順序程序執(zhí)行總體上執(zhí)行時(shí)間快
2、在單一處理機(jī)上,將執(zhí)行時(shí)間有重疊的幾個(gè)程序稱為( C ?)。
A.順序程序?????? B.多道程序??????? C.并發(fā)程序??????????? D.并行程序
3、進(jìn)程和程序的本質(zhì)區(qū)別是( D ? )。
A.存儲(chǔ)在內(nèi)存和外存?????????????????? B.順序和非順序執(zhí)行機(jī)器指令
C.分時(shí)使用和獨(dú)占使用計(jì)算機(jī)資源?????? D.動(dòng)態(tài)和靜態(tài)特征
4、在下列特性中,不是進(jìn)程的特性的是( ?C ?)。
A. 異步性?????? B.并發(fā)性??????? C.靜態(tài)性??????? D.動(dòng)態(tài)性
5、各進(jìn)程向前推進(jìn)的速度是不可預(yù)知,體現(xiàn)出“走走停停”的特征,稱為進(jìn)程的( D ? )。
? A.動(dòng)態(tài)性???? B.并發(fā)性???? C.調(diào)度性???? D.異步性
6、在單處理機(jī)系統(tǒng)中,處于運(yùn)行狀態(tài)的進(jìn)程( A ?)。
A.只有一個(gè)?????????????????? B.可以有多個(gè)
C.不能被掛起???????????????? D.必須在執(zhí)行完后才能被撤下
7、下列進(jìn)程狀態(tài)的轉(zhuǎn)換中,不正確的是( ?C ? )。
A. 就緒->運(yùn)行???????????????????? B.運(yùn)行->就緒
C. 就緒->阻塞????????????????????D.阻塞->就緒
8、已經(jīng)獲得除( ?C ?)以外的所有運(yùn)行所需資源的進(jìn)程處于就緒狀態(tài)。
A.存儲(chǔ)器???????? B.打印機(jī)???????? C. CPU???????????? D.磁盤空間
9、一個(gè)進(jìn)程被喚醒意味著( ?B ?)。
A.該進(jìn)程重新占有了CPU?????? B.進(jìn)程狀態(tài)變?yōu)榫途w
C.它的優(yōu)先權(quán)變?yōu)樽畲????????? D.其PCB移至就緒隊(duì)列的隊(duì)首
10、進(jìn)程從運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)的原因是( A ?)。
A.輸入或輸出事件發(fā)生???????? ?B.時(shí)間片到
C.輸入或輸出事件完成????????? D.某個(gè)進(jìn)程被喚醒
11、為了描述進(jìn)程的動(dòng)態(tài)變化過程,采用了一個(gè)與進(jìn)程相聯(lián)系的( ?C ?),根據(jù)它而感知進(jìn)程的存在。
A.進(jìn)程狀態(tài)字????????????? B.進(jìn)程優(yōu)先數(shù)
C.進(jìn)程控制塊????????????? D.進(jìn)程起始地址
12、操作系統(tǒng)中有一組常稱為特殊系統(tǒng)調(diào)用的程序,它不能被系統(tǒng)中斷,在操作系統(tǒng)中稱為( B ? ?)。
A.初始化程序????? B.原語????????? C.子程序?????????? D.控制模塊
13、進(jìn)程間的基本關(guān)系為( B ? )。
A.相互獨(dú)立與相互制約????????? B.同步與互斥
C.并行執(zhí)行與資源共享????????? D.信息傳遞與信息緩沖
14、兩個(gè)進(jìn)程合作完成一個(gè)任務(wù),在并發(fā)執(zhí)行中,一個(gè)進(jìn)程要等待其合作伙伴發(fā)來信息,或者建立某個(gè)條件后再向前執(zhí)行,這種關(guān)系是進(jìn)程間的( A ? )關(guān)系。
A.同步??????????? B.互斥??????????? C.競(jìng)爭(zhēng)?????????????? D.合作
15、在一段時(shí)間內(nèi),只允許一個(gè)進(jìn)程訪問的資源稱為( C ?)。
A. 共享資源?????? B.臨界區(qū)??????? C.臨界資源??????????? D.共享區(qū)
16、在操作系統(tǒng)中,對(duì)信號(hào)量S的P原語操作定義中,使進(jìn)程進(jìn)入相應(yīng)阻塞隊(duì)列等待的條件是( ?C ? )。
?? A. S>0?????????????B. S=0??????????? C. S<0???????????????? D. S!=0
17、信號(hào)量S的初值為8,在S上執(zhí)行了10次P操作,6次V操作后,S的值為( ?D ?)。
??? A.10???????? B.8????????? C.6???????? D.4
18、在進(jìn)程通信中,使用信箱方式交換信息的是( B ?)。
??? A.低級(jí)通信??????? B.高級(jí)通信??????? C.共享存儲(chǔ)器通信??????? D.管道通信
二、判斷題(正確寫T,錯(cuò)誤的寫F并改正)
1、進(jìn)程之間的同步,主要源于進(jìn)程之間的資源競(jìng)爭(zhēng),是指對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上的協(xié)調(diào)。( ? F ?)
改正為:進(jìn)程之間的互斥,主要源于進(jìn)程之間的資源競(jìng)爭(zhēng),是指對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上的協(xié)調(diào)。
2、信號(hào)量機(jī)制是一種有效的實(shí)現(xiàn)進(jìn)程同步與互斥的工具。信號(hào)量只能由PV操作來改變。( ? T ?)
3、V操作是對(duì)信號(hào)量執(zhí)行加1操作,意味著釋放一個(gè)單位資源,加1后如果信號(hào)量的值小于等于零,則從等待隊(duì)列中喚醒一個(gè)進(jìn)程,現(xiàn)進(jìn)程變?yōu)榈却隣顟B(tài),否則現(xiàn)進(jìn)程繼續(xù)進(jìn)行。( ?F ? )
改正為:V操作是對(duì)信號(hào)量執(zhí)行加1操作,意味著釋放一個(gè)單位資源,加1后如果信號(hào)量的值小于等于零,則從等待隊(duì)列中喚醒一個(gè)進(jìn)程,并將它變?yōu)?i>就緒狀態(tài),而現(xiàn)進(jìn)程繼續(xù)進(jìn)行。
4、進(jìn)程執(zhí)行的相對(duì)速度不能由進(jìn)程自己來控制。( ?T ?)
5、利用信號(hào)量的PV操作可以交換大量信息。( ?F ? )
改正為:利用信號(hào)量的PV操作只能交換少量的信息
6、并發(fā)進(jìn)程在訪問共享資源時(shí),不可能出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤。( ? F ?)
改正為:可能出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤
三、填空題
1、每執(zhí)行一次P操作,信號(hào)量的數(shù)值S減1。若S>0,則該進(jìn)程___繼續(xù)執(zhí)行___;若S<0,則該進(jìn)程__等待__。
2、進(jìn)程存在的標(biāo)志是__進(jìn)程控制塊__。
3、進(jìn)程被創(chuàng)建后,最初處于__就緒__狀態(tài),然后經(jīng)__進(jìn)程高度程序__選中后進(jìn)入 ? 執(zhí)行 ? ?狀態(tài)。
4、進(jìn)程的同步和互斥反映了進(jìn)程間__直接制約__和__間接制約__的關(guān)系。
5、 操作系統(tǒng)中信號(hào)量的值與__相應(yīng)資源__的使用情況有關(guān),它的值僅能由P、V操作來改變。
6、進(jìn)程至少有三種基本狀態(tài):就緒、阻塞?和?執(zhí)行。
7、每執(zhí)行一次V操作,信號(hào)量的數(shù)值S加1。若__S>0__,則該進(jìn)程繼續(xù)執(zhí)行;否則,從對(duì)應(yīng)的_等待_隊(duì)列中移出一個(gè)進(jìn)程并將_就緒_狀態(tài)賦予該進(jìn)程。
四、簡(jiǎn)答題
1、在操作系統(tǒng)中為什么要引入進(jìn)程的概念?它與程序的區(qū)別和聯(lián)系是怎樣的?
答:在操作系統(tǒng)中,由于多道程序并發(fā)執(zhí)行時(shí)共享系統(tǒng)資源,共同決定這些資源的狀態(tài),因此系統(tǒng)中各程序在執(zhí)行過程中就出現(xiàn)了相互制約的新關(guān)系,程序的執(zhí)行出現(xiàn)“走走停停”的新狀態(tài)。這些都是在程序的動(dòng)態(tài)過程中發(fā)生的。用程序這個(gè)靜態(tài)概念已不能如實(shí)反映程序并發(fā)執(zhí)行過程中的這些特征。為此,人們引入“進(jìn)程”這一概念來描述程序動(dòng)態(tài)執(zhí)行過程的性質(zhì)。
進(jìn)程與程序的主要區(qū)別是:
1)進(jìn)程是動(dòng)態(tài)的;程序是靜態(tài)的。
2)進(jìn)程有獨(dú)立性,能并發(fā)執(zhí)行;程序不能并發(fā)執(zhí)行。
3)二者無一一對(duì)應(yīng)關(guān)系。
4)進(jìn)程異步運(yùn)行,會(huì)相互制約;程序不具備此特征。?
但進(jìn)程與程序又有密切的聯(lián)系:進(jìn)程不能脫離具體程序而虛設(shè),程序規(guī)定了相應(yīng)進(jìn)程所要完成的動(dòng)作。
2、什么是進(jìn)程的互斥與同步?
進(jìn)程的互斥:是指在邏輯上本來完全獨(dú)立的若干進(jìn)程,由于競(jìng)爭(zhēng)同一個(gè)資源而產(chǎn)生的相互制約關(guān)系。
進(jìn)程的同步:是進(jìn)程間共同完成一項(xiàng)任務(wù)時(shí)直接發(fā)生相互作用的關(guān)系,也就是說,這些具有伙伴關(guān)系的進(jìn)程在執(zhí)行時(shí)間次序上必須遵循確定的規(guī)律。
3、一個(gè)進(jìn)程進(jìn)入臨界區(qū)的調(diào)度原則是什么?
①如果有若干進(jìn)程要求進(jìn)入空閑的臨界區(qū),一次僅允許一個(gè)進(jìn)程進(jìn)入。
②任何時(shí)候,處于臨界區(qū)內(nèi)的進(jìn)程不可多于一個(gè)。如已有進(jìn)程進(jìn)入自己的臨界區(qū),則其它所有試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待。
③進(jìn)入臨界區(qū)的進(jìn)程要在有限時(shí)間內(nèi)退出,以便其它進(jìn)程能及時(shí)進(jìn)入自己的臨界區(qū)。
④如果進(jìn)程不能進(jìn)入自己的臨界區(qū),則應(yīng)讓出CPU,避免進(jìn)程出現(xiàn)“忙等”現(xiàn)象。
4、在操作系統(tǒng)中,P操作和V操作各自的動(dòng)作是如何定義的?
?P操作順序執(zhí)行下述兩個(gè)動(dòng)作:
①信號(hào)量的值減1,即S=S-1;
②如果S≥0,則該進(jìn)程繼續(xù)執(zhí)行;如果S<0,則把該進(jìn)程的狀態(tài)置為阻塞態(tài),把相應(yīng)的PCB連入該信號(hào)量隊(duì)列的末尾,并放棄處理機(jī),進(jìn)行等待(直至其它進(jìn)程在S上執(zhí)行V操作,把它釋放出來為止)。
V操作順序執(zhí)行下述兩個(gè)動(dòng)作:
①S值加1,即S=S+1;
②如果S>0,則該進(jìn)程繼續(xù)運(yùn)行;如果S≤0,則釋放信號(hào)量隊(duì)列上的第一個(gè)PCB(即信號(hào)量指針項(xiàng)所指向的PCB)所對(duì)應(yīng)的進(jìn)程(把阻塞態(tài)改為就緒態(tài)),執(zhí)行V操作的進(jìn)程繼續(xù)運(yùn)行。
5、作業(yè)調(diào)度和進(jìn)程調(diào)度各自的主要功能是什么?
作業(yè)調(diào)度的主要功能是:
1) ?記錄系統(tǒng)中各個(gè)作業(yè)的情況;
2) ?按照某種調(diào)度算法從后備作業(yè)隊(duì)列中挑選作業(yè);
3) ?為選中的作業(yè)分配內(nèi)存和外設(shè)等資源;
4) ?為選中的作業(yè)建立相應(yīng)的進(jìn)程;
5) ?作業(yè)結(jié)束后進(jìn)行善后處理工作。
進(jìn)程調(diào)度的主要功能是:
1) ?保存當(dāng)前運(yùn)行進(jìn)程的現(xiàn)場(chǎng);
2) ?從就緒隊(duì)列中挑選一個(gè)合適進(jìn)程;
3) ?為選中的進(jìn)程恢復(fù)現(xiàn)場(chǎng)。
五、應(yīng)用題
1、四個(gè)進(jìn)程A、B、C、D都要讀一個(gè)共享文件F,系統(tǒng)允許多個(gè)進(jìn)程同時(shí)讀文件F。但限制是進(jìn)程A和進(jìn)程C不能同時(shí)讀文件F,進(jìn)程B和進(jìn)程D也不能同時(shí)讀文件F。為了使這四個(gè)進(jìn)程并發(fā)執(zhí)行時(shí)能按系統(tǒng)要求使用文件,現(xiàn)用PV操作進(jìn)行管理,請(qǐng)回答下面的問題:
(1)如何定義信號(hào)量及初值;
解:定義二個(gè)信號(hào)量S1、S2,初值均為1,即:S1=1,S2=1
(2)在下列的程序中填上適當(dāng)?shù)腜、V操作,以保證它們能正確并發(fā)工作:
???? 進(jìn)程A???????? ???進(jìn)程B????????? ????進(jìn)程C ? ? ? ? ? ? 進(jìn)程D
????? …???????????????? …?????????????????? …????????????????? …
????? [1];?????????????? [3];??????????????? [5];??????????????? [7];
????? read F; ? ? ?read F; ? ? ? ? read F; ? ? ? ?read F;
????? [2];?????????????? [4];??????? ????????[6];??????????????? [8];
????? …???????????????? …?????????????????? …????????????????? …
解:從[1]到[8]分別為:P(S1), V(S1), P(S2), V(S2), P(S1) ,V(S1) ,P(S2) ,V(S2)
2、設(shè)有一臺(tái)計(jì)算機(jī),有兩條I/O通道,分別接一臺(tái)卡片輸入機(jī)和一臺(tái)打印機(jī)??ㄆ瑱C(jī)把一疊卡片逐一輸入到緩沖區(qū)B1中,加工處理后再搬到緩沖區(qū)B2中,并在打印機(jī)上打印,問:
?、傧到y(tǒng)要設(shè)幾個(gè)進(jìn)程來完成這個(gè)任務(wù)?各自的工作是什么?
解:系統(tǒng)可設(shè)三個(gè)進(jìn)程來完成這個(gè)任務(wù):R進(jìn)程負(fù)責(zé)從卡片輸入機(jī)上讀入卡片信息,輸入到緩沖區(qū)B1中;C進(jìn)程負(fù)責(zé)從緩沖區(qū)B1中取出信息,進(jìn)行加工處理,之后將結(jié)果送到緩沖區(qū)B2中;P進(jìn)程負(fù)責(zé)從緩沖區(qū)B2中取出信息,并在打印機(jī)上印出。
?、谶@些進(jìn)程間有什么樣的相互制約關(guān)系?
解:R進(jìn)程受C進(jìn)程影響,B1放滿信息后R進(jìn)程要等待——等C進(jìn)程將其中信息全部取走,才能繼續(xù)讀入信息;C進(jìn)程受R進(jìn)程和P進(jìn)程的約束:B1中信息放滿后C進(jìn)程才可從中取出它們,且B2被取空后C進(jìn)程才可將加工結(jié)果送入其中;P進(jìn)程受C進(jìn)程的約束:B2中信息放滿后P進(jìn)程才可從中取出它們,進(jìn)行打印。
?、塾肞、V操作寫出這些進(jìn)程的同步算法。
解:信號(hào)量含義及初值:
? ? ? ? ? ? ? B1full-—— 緩沖區(qū)B1滿,初值為0;
? ? ? ? ? ? ? B1empty——緩沖區(qū)B1空,初值為0;
? ? ? ? ? ? ? B2full-—— 緩沖區(qū)B2滿,初值為0;
? ? ? ? ? ? ? B2empty——緩沖區(qū)B2空,初值為0;

3、某分時(shí)系統(tǒng)的進(jìn)程出現(xiàn)如下圖所示的狀態(tài)變化。

試問:(1)你認(rèn)為該系統(tǒng)采用的是哪一種進(jìn)程調(diào)度算法?
解:該分時(shí)系統(tǒng)采用的進(jìn)程調(diào)度算法是時(shí)間片輪轉(zhuǎn)法。
(2)寫出圖中所示的每一個(gè)狀態(tài)變化的原因(從①到⑥)。
解:狀態(tài)變化的原因如下:
??? ①進(jìn)程被選中,變成運(yùn)行態(tài);
??? ②時(shí)間片到,運(yùn)行的進(jìn)程排入就緒隊(duì)列尾部;
??? ③運(yùn)行的進(jìn)程啟動(dòng)打印機(jī),等待打??;
??? ④打印工作結(jié)束,阻塞的進(jìn)程排入就緒隊(duì)列尾部;
??? ⑤等待磁盤讀文件工作;
????⑥磁盤傳輸信息結(jié)束,阻塞的進(jìn)程排入就緒隊(duì)列尾部。
4、生產(chǎn)者-消費(fèi)者問題表述如下:一組生產(chǎn)者進(jìn)程和一組消費(fèi)者進(jìn)程通過緩沖區(qū)發(fā)生聯(lián)系。生產(chǎn)者進(jìn)程將生產(chǎn)的產(chǎn)品送入緩沖區(qū),消費(fèi)者進(jìn)程則從中取出產(chǎn)品。假定環(huán)形緩沖池中共有N個(gè)緩沖區(qū),編號(hào)為0~N-1。
???為了描述生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程,設(shè)指針in和out分別指向生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程當(dāng)前所用的緩沖區(qū)(buffer),初值均為0。
(1)應(yīng)設(shè)置三個(gè)信號(hào)量實(shí)現(xiàn)兩類進(jìn)程的同步,分別是full、empty和mutex。請(qǐng)說出它們的含義及初值。
解:full表示放有產(chǎn)品的緩沖區(qū)數(shù),初值為0;
????????empty表示可供使用的緩沖區(qū)數(shù),初值為N;
????????mutex為互斥信號(hào)量,初值為1,表示互斥進(jìn)入臨界區(qū)。
(2)下面是生產(chǎn)者進(jìn)程的算法描述,請(qǐng)?zhí)顚懴鄳?yīng)的P、V操作語句。
???? ???while(TRUE){
? ??????P(empty)?;
? ??????P(mutex);
??????? 產(chǎn)品送往buffer(in);
??????? in=(in+1)mod N; /*mod為取模運(yùn)算*/
? ???????V(mutex)?;
? ???????V(full);
(3)指出生產(chǎn)者進(jìn)程算法中的臨界區(qū)是哪一段程序?
????????生產(chǎn)者進(jìn)程算法中的臨界區(qū)是如下程序段:
????????????????產(chǎn)品送往buffer(in);
????????????????in=(in+1) modN;? /*mod為取模運(yùn)算*