第二章 進(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ī)∧锢卡片機(jī)把一疊卡片逐一輸入到緩沖區(qū)B1中,加工處理后再搬到緩沖區(qū)B2中壮锻,并在打印機(jī)上打印琐旁,問:
①系統(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)行打印。
〈犹佟③用P催跪、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)算*