免费看欧美黑人毛片-免费看毛片网站-免费看毛片的网站-免费看久久-中文字幕日韩欧美-中文字幕日韩精品一区

您現在的位置:首頁 > IT認證 > 軟件水平 >

軟考軟件設計師重點難點:死鎖


2012年軟考軟件設計師重點難點:死鎖

  死鎖(Deadlock)是指多個進程在運行的過程中因爭奪資源而造成的一種僵局。當進程處于這種僵持狀態時,若無外力作用,它們都將無法再向前推進。在軟件設計師的考試當中,這個知識點的考查是以選擇題的形式出現的,考點主要有:死鎖的必要條件、解決死鎖的方法,最難高難度會考到“銀行家算法”。本文將介紹死鎖的相關知識,但不會具體講解“銀行家算法”,該算法將在本系列的下一篇文章中詳細說明。

  1、死鎖發生的必要條件

  死鎖的發生必須具備四個必要條件,這四個條件相互聯系、缺一不可。

  (1)互斥條件:指進程對所分配到的資源進行排他性使用,即在一段時間內某資源只由一個進程占用。如果此時還有其他進程請求該資源,則請求者只能等待,直至占有該資源的進程用完并釋放。

  (2)請求和保持條件:指進程已經保持了至少一個資源,但又提出了新的資源請求,而該資源又已被其他進程占有,此時請求進程阻塞,但又對自己已獲得的其他資源保持不放。

  (3)不剝奪條件:指進程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。

  (4)環路等待條件:指在發生死鎖時,必然存在一個進程--資源的環形鏈,即進程集合{P0,P1,P2…Pn}中的P0正在等待一個P1占用的資源,P1正在等待P2占用的資源,……Pn正在等待已被P0占用的資源。

  2、解決死鎖的策略

  解決死鎖的策略通常有三種:死鎖預防、死鎖避免以及死鎖解除。前兩種方法是“事前措施”,而死鎖解除是“事后解決方案”。

  (1)死鎖預防:“解鈴還需系鈴人”,隨便破壞導致死鎖這任意一個必要條件就可以預防死鎖。例如,要求用戶申請資源時一起申請所需要的全部資源,這就破壞了保持和等待條件;將資源分層,得到上一層資源后,才能夠申請下一層資源,它破壞了環路等待條件。預防通常會降低系統的效率。

  (2)死鎖避免:避免是指進程在每次申請資源時判斷這些操作是否安全,典型算法是“銀行家算法”(本系列文章的下一篇將詳細講解該問題)。但這種算法會增加系統的開銷。

  (3)死鎖解除:該方法的思路很簡單,通過死鎖檢測判斷系統是否處于死鎖狀態,若死鎖,則由系統強制剝奪部分進程的資源,將資源強行分配給別的進程。

  3、判斷系統是否可能進入死鎖狀態

  從上面的死鎖解決方案來看,無論哪一種方式都不可避免的要增加系統的負擔。而同時一個系統是否有可進入死鎖狀態受系統資源數量,需要使用該資源的進程數量等因素影響。若系統本不可能引起死鎖,而我們采用了死鎖解決方案,是很不合理的。所以,考試中常考到這樣的題型:給出系統的資源數,以及需要使用該資源的進程數量等參數,讓考生判斷系統有無可能產生死鎖。下面我們以例題的方式來說明如何解決這類問題。

  例題1:

  系統有3個進程:A、B、C。這3個進程都需要5個系統資源。如果系統有多少個資源,則不可能發生死鎖。

  解答:

  在分析這個問題時,我們可以取一些簡單的數據代入試題進行驗證、分析,以得到相應的規律。

  如:

  (1)當系統資源數量為9時,若給A與B分別分配了4個資源,C分配了1個資源,則系統中的每個進程都存在資源不足的情況,而都不放手自己擁有的資源。不能正常運行完畢,發生死鎖。

  (2)當系統資源數量為12時,若給A、B、C各分配4個資源,則死鎖。

  (3)當系統資源數量為13時,無論如何分配,總有至少1個進程能得到5個資源,得到5個資源的進程可以正常運行完畢,而后將自己占用的資源分配給其它進程,所以這樣能使所有進程運行完畢。

  從上面的嘗試,我們可以總結出一個規律:先給所有進程分配他們所需要的資源數減1個資源,然后系統如果能再剩余1個資源,則系統不會發生死鎖。這樣解答本題變得非常容易。

  (5-1)*3+1=13。

  例題2:

  一臺計算機有10臺磁帶機被m個進程競爭,每個進程最多需要三臺磁帶機,那么m至多為 時,系統沒有死鎖的危險。

  A.3 B.4 C.5 D.6

  解答

  首先從m=6開始考察,首先每個進程分配1臺,剩下的4臺只能分配給4個進程,還有2個進程沒有分配,如果已經分配了2臺的4個進程需要3臺的話,則系統就會死鎖。同樣,如果m=5,也會發生這種情況。當m=4時,每個進程可以分得2臺,還有2個進程可分得3臺,則可正常運行,運行完畢后可釋放資源,從而不會死鎖。在解這道題時有些學員提出“如果按照答案m=4,則這4個進程都是需要3臺磁帶機的話,共需要12臺磁帶機,這樣還不會死鎖?”。這種想法是錯誤的,因為并不是同時把所有進程都分配給足夠的資源才能完成這些進程,可以是一個進程先執行完,釋放完資源再執行另一個進程。

  例如:4個進程中,每個進程分配2臺磁帶機,用去了8臺。剩下2臺,仍然可以滿足兩個進程,直到他們完成,釋放他們暫用的磁帶機

相關文章

無相關信息
更新時間2022-09-16 10:00:13【至頂部↑】
聯系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網站糾錯二維碼手機版

電話:
付款方式   |   給我留言   |   我要糾錯   |   聯系我們




主站蜘蛛池模板: 黄网站免费在线播放| 黄色免费视频| baoru| 小小少年电影完整版| 2024年怀男怀女表图| 《韩国小姐》| 鬼迷心窍1994| 林正英僵尸大全免费看| 爱情与灵药 电影| 杨子姗演过的电影电视剧| 望夫崖| 监狱女孩电影| 爱欲1990未删减版播放| 孽扣| 13名妓| 陈颖芝电影全集| 中国安全生产报| 猫小帅三十六计| 远古的传说| 浙江卫视今天节目单| 大学英语精读4课后答案| yumiko| 范海辛电影原声在线观看免费| 迷宫法国电影| 端午给老板祝福简短句| 俺去也电影网| 成龙电影全部电影作品大全| 我和我的父辈 电影| ()目()身的词语| 柚子猫卡夫卡的心理暗示在线观看 | 大学英语综合教程1答案| 影楼ps后期修片的软件| 初中生物会考真题试卷| 性欧美女同| 富二代| 欧美日韩欧美日韩| 自拍成人| 复制情人之意识转移| 视频三级| 诈欺游戏电影| ms培养基配方表|