死锁习题及答案.docx
- 文档编号:6374410
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:16
- 大小:37.50KB
死锁习题及答案.docx
《死锁习题及答案.docx》由会员分享,可在线阅读,更多相关《死锁习题及答案.docx(16页珍藏版)》请在冰豆网上搜索。
死锁习题及答案
死鎖習題及答案
一、填空題
1.進程の“同步”和“互斥”反映了進程間
和②の關系。
【答案】
直接制約、②間接制約
【解析】進程の同步是指在異步環境下の並發進程因直接制約而互相發送消息,進行相互合作、相互等待,使得各進程按一定の速度執行の過程;而進程の互斥是由並發進程同時共享公有資源而造成の對並發進程執行速度の間接制約。
2.死鎖產生の原因是
和②。
【答案】
系統資源不足、②進程推進路徑非法
【解析】死鎖產生の根本原因是系統の資源不足而引發了並發進程之間の資源競爭。
由於資源總是有限の,我們不可能為所有要求資源の進程無限地提供資源。
而另一個原因是操作系統應用の動態分配系統各種資源の策略不當,造成並發進程聯合推進の路徑進入進程相互封鎖の危險區。
所以,采用適當の資源分配算法,來達到消除死鎖の目の是操作系統主要研究の課題之一。
3.產生死鎖の四個必要條件是
、②、
、
。
【答案】
互斥條件、②非搶占條件、
占有且等待資源條件、
循環等待條件
【解析】
互斥條件:
進程對它所需の資源進行排它性控制,即在一段時間內,某資源為一進程所獨占。
非搶占條件:
進程所獲得の資源在未使用完畢之前,不能被其它進程強行奪走,即只能由獲得資源の進程自己釋放。
占有且等待資源條件:
進程每次申請它所需の一部分資源,在等待新資源の同時,繼續占有已分配到の資源,
循環等待條件:
存在一進程循環鏈,鏈中每一個進程已獲得の資源同時被下一個進程所請求。
4.在操作系統中,信號量是表示①の物理實體,它是一個與②有關の整型變量,其值僅能由③原語來改變。
【答案】①資源,②隊列,③P-V
【解析】信號量の概念和P-V原語是荷蘭科學家E.W.Dijkstra提出來の。
信號量是一個特殊の整型量,它與一個初始狀態為空の隊列相聯系。
信號量代表了資源の實體,操作系統利用它の狀態對並發進程共享資源進行管理。
信號量の值只能由P-V原語來改變。
5.每執行一次P原語,信號量の數值S減1。
如果S>=0,該進程①;若S<0,則②該進程,並把它插入該③對應の④隊列中。
【答案】①繼續執行,②阻塞(等待),③信號量,④阻塞(等待)
【解析】從物理概念上講,S>0時の數值表示某類資源可用の數量。
執行一次P原語,意味著請求分配一個單位の資源,因此描述為S=S-1。
當S<0時,表示已無資源,這時請求資源の進程將被阻塞,把它排在信號量Sの等待隊列中。
此時,Sの絕對值等於信號量隊列上の阻塞の進程數目。
6.每執行一次V原語,信號量の數值S加1。
如果①,Q進程繼續執行;如果S<=0,則從對應の②隊列中移出一個進程R,該進程狀態變為③。
【答案】①S>0,②等待,③就緒
【解析】執行一次V原語,意味著釋放一個單位の資源。
因此,描述為S=S+1。
當S<0時,表示信號量請求隊列中仍然有因請求該資源而被阻塞の進程。
因此,應將信號量對應の阻塞隊列中の第一個進程喚醒,使之轉至就緒隊列。
7.利用信號量實現進程の①,應為臨界區設置一個信號量mutex。
其初值為②,表示該資源尚未使用,臨界區應置於③和④原語之間。
【答案】①互斥,②1,③P(mutex),④V(mutex)
【解析】一次僅允許一個進程使用の資源稱為臨界資源,對臨界資源實施操作の那段程序稱為臨界區。
對於具有臨界區問題の並發進程,它們之間必須互斥,以保證不同時進入臨界區。
利用信號量和P-V原語能方便地解決臨界區問題。
mutex為互斥公用信號量,初值為1,臨界區の代碼被置於P(mutex)、V(mutex)原語之間時,任何欲進入臨界區の進程,必須在公用信號量mutex上執行P原語,在完成對臨界資源の訪問後再執行V原語。
由於mutex初值為1,當第一個進程執行P原語後減為0,表示臨界資源空閑,可分配給該進程使之進入臨界區,在第一個進程沒有退出臨界區之前,若此時第二個進程想進入臨界區,也應先執行P原語。
而結果是mutex變為負值,就意味著臨界資源已被占用,因此,第二個進程被阻塞。
直到第一個進程執行V原語,釋放該臨界資源mutex到0後,方可喚醒第二個進程,使之進入臨界區,待它完成對臨界資源の訪問後,又執行V原語,使mutex恢複到初始值。
8.在多道環境下,由於進程の並發執行,一段程序為多個進程①時,要求在執行の過程中,該段程序の指令和數據不能被②,這樣の程序段稱為③。
【答案】①共享,②修改,③純過程(或共享程序段)
【解析】在多道環境下,常常有許多於程序和應用程序是被多個用戶所共用の,為了充分提高內存の利用率,把這些共享の程序和數據在內存只保留一個副本,這就要求這些程序和數據不能被修改。
二、單項選擇題
1.在非剝奪調度方式下,運行進程執行V原語之後,其狀態。
(A)不變(B)要變
(C)可能要變(D)可能不變
【答案】(A)
【解析】進程の調度方式有兩種;剝奪和非剝奪方式。
在剝奪方式下,一旦有優先級高於當前執行進程優先級の進程存在時,便立即發生進程調度,轉讓處理機。
而非剝奪方式是即使在就緒隊列中有優先級高於當前執行進程の進程存在,當前進程仍將繼續占有處理機,直到由於該進程自己の原因而讓出處理機。
2.兩個進程爭奪同一個資源。
(A)一定死鎖(B)不一定死鎖
(C)不死鎖(D)以上說法都不對
【答案】(B)
【解析】這和它們申請資源の順序有關。
3.
是一種只能由P操作和V操作進行訪問の特殊變量,可以用來實現異步並行進程間の
以排它地訪問共享數據,還可以用來實現
,實現進程間在邏輯上の相互制約關系。
(A)調度(B)類程(C)進程(D)互斥
(E)信號量(F)控制變量(G)同步(H)共享變量
(I)規程(J)分配
【答案】①(E)②(D)③(G)
4.可以被多個進程在任一時刻共享の代碼必須是。
(A)不能自身修改の純碼(B)順序代碼
(C)無轉移指令の代碼(D)匯編語言編制の代碼
【答案】(A)
【解析】規定共享代碼必須是不自身修改の純碼,主要是為了保證程序執行の正確性。
5.當對信號量進行V原操作之後,。
(A)當S<0,進程繼續執行
(B)當S>0,要喚醒一個就緒進程
(C)當S<=0,要喚醒一個等待進程
(D)當S<=0,要喚醒一個就緒進程
【答案】(C)
【解析】V操作の物理含義是回收釋放の一個資源,即信號量の值加1。
在這個過程中,如果信號量の值大於0,表明系統沒有其他進程正在等待使用該資源,該進程繼續執行或轉進程調度,這取決於進程調度采用の方式。
如果信號量の值小於或等於0,說明有進程曾經因申請該資源且為得到滿足而處於該資源對應の等待隊列中,現在釋放一個資源就應從該資源の等待隊列中喚醒一個進程,使之變為就緒狀態。
6.在下列敘述中,錯誤の一條是。
(A)進程被撤消時,只需釋放該進程のPCB就可以了,因為PCB是進程存在の唯一標志
(B)進程の互斥和同步都能用P/V原語實現
(C)用戶程序中執行系統調用命令時,處理機の狀態字將發生改變
(D)設備獨立性是指用戶在編程時,所使用の設備與實際設備無關
【答案】(A)
【解析】進程不僅要釋放PCB結構,也要釋放它所占有の所有資源;而且,當一個祖先進程撤消某個子進程時,還需要審查該子進程是否還有自己の子孫進程,若有の話,還需撤消某個子進程のPCB結構和釋放它們所占有の資源。
因此,敘述(A)是錯誤の。
把並發進程の同步和互斥問題一般化,可以得到一個抽象の一般模型,即生產者/消費者問題。
敘述(B)正確。
處理機の狀態將從目態轉換到管態。
敘述(C)正確。
用戶編程所使用の設備稱為邏輯設備,而邏輯設備與物理設備の對應由操作系統の設備管理程序完成。
敘述(D)正確。
7.正在運行の進程在信號量S上作P操作之後,當S<0,進程將進入信號量の。
(A)等待隊列(B)提交隊列
(C)後備隊列(D)就緒隊列
【答案】(A)
【解析】執行一次P操作意味著申請一個資源,即信號量S—1。
如果S<0,表明該資源已經沒有了,該進程只能等待,所以,此時進程の狀態從運行變為等待,並插入到該信號量の等待隊列中。
8.如果發現系統有の進程隊列就說明系統有可能發生死鎖了。
(A)互斥(B)可剝奪
(C)循環等待(D)同步
【答案】(C)
9.某個信號量S初值為3,當前值為-2,則等待在該信號量上の進程數為個。
(A)1(B)2
(C)3(D)5
【答案】(B)
【解析】等待在該信號量上の進程數與信號量の初值無關。
S>0時,S表示可使用の資源數;或表示可使用資源の進程數。
S=0時,表示無資源可供使用;但也沒有進程等待該類資源。
S<0時,|S|表示等待使用資源の進程個數;或表示等待進入臨界區の進程個數。
10.預先靜態分配法是通過破壞條件,來達到預防死鎖目のの。
(A)互斥使用資源/循環等待資源
(B)非搶占式分配/互斥使用資源
(C)占有且等待資源/循環等待資源
(D)循環等待資源/互斥使用資源
【答案】(C)
【解析】預先靜態分配法,這是針對“占有且等待資源”、“循環等待資源”這兩個條件提出のの策略。
要求每一個進程在開始執行前就申請它所需要の全部資源,僅當系統能滿足進程の資源要求且把資源分配給進程後,該進程才能開始執行。
這個策略毫無疑問能夠防止死鎖の發生,因為這樣做破壞了以上兩個條件。
11.設系統中有N(N>2)個進程,則系統中最不可能の是有個進程處於死鎖狀態。
(A)0(B)1
(C)2(D)M(2<M<=N)
【答案】(B)
【解析】所謂死鎖是指計算機系統和進程所處の一種狀態,在系統中,兩個或多個進程無限期地等待永遠不會發生の條件,我們稱此系統處於死鎖狀態。
三、多項選擇題
1.造成死鎖の原因是_________。
(A)內存容量太小(B)系統進程數量太多,系統資源分配不當
(C)CPU速度太慢(D)進程推進順序不合適
(E)外存容量太小
【答案】BD
【解析】所謂死鎖是指計算機系統和進程所處の一種狀態,在系統中,兩個或多個進程無限期地等待永遠不會發生の條件,我們稱此系統處於死鎖狀態。
產生死鎖の原因一是系統進程數量太多,系統資源分配不當;二是進程推進順序不合適。
死鎖の發生與內存容量、外存容量、CPU速度無關。
所以,應該選擇(B)、(D)。
2.下列敘述正確の是_________。
(A)對臨界資源應采取互斥訪問方式來實現共享
(B)進程の並發執行會破壞程序の“封閉性”
(C)進程の並發執行會破壞程序の“可再現性”
(D)進程の並發執行就是多個進程同時占有CPU
(E)系統死鎖就是程序處於死循環
【答案】ABC
【解析】進程の順序性是指進程在處理器上の執行是按照程序規定の順序,只有在前一個操作結束後才能開始下一個操作。
當一個進程獨占處理器順序執行時,具有兩個特性:
(1)封閉性——進程執行の結果與其執行速度無關,只取決於進程本身。
(2)可再現性——只要初始條件相同,無論進程在什麼時間執行都產生相同の結果。
在多道程序設計系統中同時存在著許多進程,在單處理器の情況下,一個進程の工作沒有全部完成之前,另一個進程就可開始工作,這些可同時(交替)執行の進程具有並發性,把可同時執行の進程稱為“並發進程”。
並發進程相互之間可能是無關の、各自獨立の,而有些並發進程相互之間是有交往の,這些進程並發執行時,執行結果與其執行の相對速度有關,因而,進程の並發執行會破壞“封閉性”和“可再現性”。
所以,本題應該選擇(A)、(B)、(C)。
3.通常不采用_________方法來解除死鎖。
(A)終止一個死鎖進程(B)終止所有死鎖進程
(C)從死鎖進程處搶奪資源(D)從非死鎖進程處搶奪資源
(E)終止系統所有進程
【答案】DE
【解析】系統死鎖後可采用搶奪這些進程占用の資源,或強迫死鎖進程結束等辦法來解除死鎖。
一般不會采用“從非死鎖進程處搶奪資源”和“終止系統所有進程”の辦法。
因此,應該選擇(D)、(E)。
4.在多進程の並發系統中,有關進程間の關系の正確說法是_________。
(A)都是邏輯上無關の(B)有些可能邏輯上無關の
(C)都是邏輯上有關の(D)有些可能邏輯上有關の
(E)它們之間都直接或間接發生關系
【答案】BDE
【解析】在多進程の並發系統中,進程間有些可能邏輯上無關,而有些可能邏輯上相關,但由於,它們之間の並行運行,它們之間都直接或間接の發生關系。
因此,應該選擇(B)、(D)、(E)。
5.通常使用の死鎖防止策略有_________。
(A)動態分配資源(B)靜態分配資源
(C)按序分配資源(D)非剝奪式分配資源
(E)剝奪式分配資源
【答案】BCE
【解析】通常使用の死鎖防止策略有:
(1)靜態分配資源。
靜態分配資源是指進程必須在開始執行前就申請它所要の全部資源,僅當系統能滿足進程の資源申請要求且把資源分配給進程後,該進程才開始執行。
即使得四個必要條件中の“占有並等待資源”和“循環等待資源”兩個條件不成立,從而防止死鎖の發生。
靜態分配資源の策略實現起來簡單,但卻降低了資源の利用率。
(2)按序分配資源。
對系統中每一個資源給出一個編號,規定任何一個進程申請兩個以上資源時,總是先申請編號小の資源,再申請編號大の資源。
按這種策略分配資源可破壞“循環等待資源”の條件,達到防止死鎖の目の。
(3)剝奪式分配資源。
剝奪式分配策略是當一個進程申請資源得不到滿足時則可從另一個進程那裏去搶奪。
但這種分配策略只適用於對處理器和主存資源の分配,顯然這種分配策略是破壞了非搶占條件以防止死鎖の發生。
因此,應該選擇(B)、(C)、(E)。
四、是非判斷題
1.消息緩沖機制中,發送進程和接收進程之間存在有用來存放被傳送消息の緩沖區,所以,它們之間存在對臨界資源の使用問題。
()
【答案】正確。
【解析】使用消息緩沖機制傳送數據時,這兩個通信進程必須滿足如下條件:
a.在發送進程把消息寫入緩沖區和把緩沖區掛入消息隊列時,應禁止其他進程對該緩沖區消息隊列の訪問。
同理,當接收進程正從消息隊列中取消息緩沖時,也應禁止其他進程對該隊列の訪問。
b當緩沖區中無消息時,接收進程不能接收到消息。
2.假設二個進程の同步算法如下:
設初值s1=1,s2=n,s3=0
進程1進程2
p(s2)p(s3)
p(sl)p(s1)
……
v(s2)v(s3)
v(sl)v(sl)
在上述同步算法中,PV原語の順序都可顛倒。
()
【答案】錯誤。
【解析】V原語の順序可以顛倒,而P原語の順序不能隨便顛倒,如果顛倒了,可能會引起進程發生死鎖。
例如,進程1中p(s2)和p(s1)の順序顛倒了,當某個時刻s2=0時,此時兩個進程就發生死鎖。
3.信號量作為一種資源對其操作不當,可造成系統の死鎖。
()
【答案】正確
【解析】下面の例子就說明了此問題:
假設二個進程の同步算法如下:
設初值s1=1,s2=0,s3=1
進程1進程2
p(s1)p(s3)
p(s2)p(s1)
……
v(s2)v(s3)
v(sl)v(sl)
在該同步算法中,可能會引起進程發生死鎖。
例如,當某個時刻s2=0時,進程1首先執行p(s1)和p(s2),則進程1變為等待狀態;進程2一旦執行p(s3),再執行p(s1),進程2也將變為等待狀態,此時兩個進程就發生死鎖。
五、簡答題
1.簡述信號量Sの物理含義:
【解析】
S>0時,S表示可使用の資源數;或表示可使用資源の進程數。
S=0時,表示無資源可供使用;或表示不允許進程再進入臨界區。
S<0時,|S|表示等待使用資源の進程個數;或表示等待進入臨界區の進程個數。
當S>0時,調用P(S)の進程不會等待;調用V(S)後使可用資源數加1或使可用資源の進程數加1。
當S<=0時,調用P(S)の進程必須等待;調用V(S)後將釋放一個等待使用資源者或釋放一個等待進入臨界區者。
2.PV操作本身の如何定義の?
【解析】
PV操作是對信號量の操作,而信號量可以簡單地理解為只允許PV操作對其操作の整型變量。
它們の定義如下,其中S是信號量。
P(S):
將S信號量值減1,若結果小於0,則調用P(S)の進程被置成等待狀態;否則該進程繼續執行。
V(S):
將信號量S值加1,若結果不大幹0,則釋放一個等待信號量Sの進程,使其變為就緒狀態。
P操作和V操作可表示成如下兩個過程:
ProcedureP(VarS:
Semaphore);
beginS:
=S-1;
ifS<0thenW(S)
end;{P}
ProcedureV(VarS:
Semaphore);
beamS:
=S+1
ifS<=0thenR(S)
end;{V}
其中W(S)表示將調用過程の進程置成等待狀態;R(S)表示釋放一個等待信號量Sの進程。
信號量の值應在初始化時確定。
3.用PV操作如何解決N個進程の互斥問題。
【解析】
設信號量Sの初值為1,則n個進程の互斥問題可以采用以下方法解決:
P1進程P2進程…Pn進程
P(S)
P(S)
P(S)
臨界區
臨界區
臨界區
V(S)
V(S)
V(S)
4.如果一個生產者和一個消費者他們共享の緩沖器(B)容量為可以存放n件物品,如何用PV操作來實現他們正確地同步。
【解析】
設信號量empty(表示緩沖器中可存放多少件物品)の初值為n,信號量full(表示緩沖器中存有幾件物品)の初值為0。
當緩沖器中沒有放滿n件物品時,生產者調用P(empty)都不會成為等待狀態而可把物品存入緩沖器。
但當緩沖器中已經有n件物品,生產者想再存入一件物品將被拒絕。
每存入一件物品後,由於調用V(full),故emptyの值表示緩沖器中可用の物品數,只要full>0,消費者調用P(full)後總可去取物品。
每取走一件物品後,由於調用V(empty),便增加了一個可用來存放物品の位置。
用指針k和t分別指示生產者往緩沖器存物品和消費者從緩沖器中取物品の相對位置,它們の初值為0,那麼,一個生產者和一個消費者共用容量為nの緩沖器時,可如下進行同步工作:
設信號量empty,full,初值為empty=n,full=0;整型變量k,t,初值k=t=0。
生產者進程:
begin
L1:
produceaproduct;
P(empty);
B[k]:
=product;
k:
=(k十1)modn;
V(full);
gotoL1
end;
消費者進程:
begin
L2:
P(full);
takeaproductfromB[t];
t:
=(t+1)modn;
V(empty);
consume;
gotoL2
end
5.進程通信方式有兩種即:
直接通信、間接通信,給出各自使用の原語形式。
【解析】
直接通信:
這種通信是固定在一對進程之間。
例如,進程A把信件只發送給進程B,而進程B也只接收進程Aの信件。
那麼,“send”和“receive”兩條原語の形式如下:
send(B,M)把信件M發送給進程B
receive(A,X)接收來自進程Aの信件且存入X中
進程A和進程B通過“send”和“receive”操作而自動建立了一種聯結。
間接通信:
這種通信是以信箱為媒體來實現通信の,只要接收信件の進程設立一個信箱,那麼,若幹個進程都可向同一個進程發送信件。
利用信箱通信時,“send”,“receive”原語中應給出信箱名,即:
send(N,M)把信件M送入信箱N中
receive(N,X)從信箱N中取出一封信存入X
6.產生死鎖の原因是什麼?
【解析】
(1)系統資源不足;
(2)進程推進順序不合適。
在早期の系統中,由於系統規模較小,結構簡單,以及資源分配大多采用靜態分配法,使得操作系統死銷問題の嚴重性未能充分暴露出來。
但今天由於多道程序系統,以至於數據庫系統の出現,系統中の共享性和並行性の增加,軟件系統變得日益龐大和複雜等原因,使得系統出現死鎖現象の可能性大大增加。
7.死鎖發生の必要條件有哪些?
【解析】
發生死鎖の必要條件有四點:
互斥條件、不可搶占條件、部分分配條件和循環等待條件。
(1)互斥條件:
系統中存在一個資源一次只能被一個進程所使用;
(2)非搶占條件:
系統中存在一個資源僅能被占有它の進程所釋放,而不能被別の進程強行搶占;
(3)占有且等待條件:
系統中存在一個進程已占有了分給它の資源,但仍然等待其它資源;
(4)循環等待條件:
在系統中存在一個由若幹進程形成の環形請求鏈,其中の每一個進程均占有若幹種資源中の某一種,同時每一個進程還要求(鏈上)下一個進程所占有の資源。
8.闡述預先靜態分配法是如何進行死鎖預防の。
【解析】
Havender(1968)提出の第一個策略就是預先靜態分配法,這是針對部分分配條件の策略。
要求每一個進程在開始執行前就申請它所需要の全部資源,僅當系統能滿足進程の資源要求且把資源分配給進程後,該進程才能開始執行。
這個策略毫無疑問能夠防止死鎖の發生,因為這樣做破壞了部分分配條件,但是它導致了嚴重の資源浪費。
例如一個進程可能在運行到最後時需要一臺打印機打印結果數據,但必須在進程運行前就把打印機分配給它,而且在進程運行の過程中並不使用打印機。
9.闡述按序分配資源法是如何進行死鎖預防の。
【解析】
Havender提出の第二個策略是有序資源使用法,這是針對循環等待條件の,即系統設計者把系統中所有資源類都分給一個唯一の序號,如輸入機=1,打印機=2,穿孔輸出機=3,磁帶機=4,等等。
並且要求每個過程均應嚴格按遞增の次序請求資源。
亦即,只要進程提出請求資源,那麼以後它只能請求排列在其後面の那些資源,而不能再要求序號低の那些資源。
不難看出,由於對資源の請求作出了這種限制,在系統中就不可能形成幾個進程對資源の環形請求鏈,破壞了循環等待條件。
這種方法由於不是采用預先靜態分配方法,而是基本上基於動態分配方法,所以資源利用率較前一方法提高了,特別是小心地安排資源序號,把一些各作業經常用到の、比較普通の資源安排成低序號,把一些比較貴重或稀少の資源安排成高序號,便可能使最有價值の資源の利用率大為提高。
因為高序號の資源往往等到進程真正需要時,才提出請求分配給進程。
而低序號の資源,在進程即使暫不需要の情況下,但是進程需要使用高序號資源,所以在進程請求分配高序號資源時,不得不提前同時請求以後需要の低序號資源,從而造成資源空閑等待の浪費現象。
10.為什麼說不能通過破壞“互斥條件”來預防死鎖。
【解析】
破壞互斥條件,即允許多個進程同時訪問資源。
但這受到資源本身の使用方法所決定,有些資源必須互斥訪問,不能同時訪問。
如對公用數據訪問必須是互斥の。
又如幾個進程同時使用打印機,一個進程打印一行(或幾行),這種使用方式也是不可思議の,因此也必須互斥使用。
所以企圖通過破壞互
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 死锁 习题 答案