qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          輕松學(xué)——操作系統(tǒng)

            進(jìn)程

            1、進(jìn)程的狀態(tài):

            這里邊我們主要是要講的內(nèi)容就是這兩個(gè)圖:我們通過(guò)這兩個(gè)圖來(lái)介紹一些相關(guān)的知識(shí)點(diǎn):

            三態(tài)圖:

            我們還是來(lái)看圖進(jìn)行分析:

            我們就這個(gè)圖進(jìn)行分析各個(gè)關(guān)鍵部分:這些關(guān)鍵在于理解,很Easy的,或者你把這個(gè)圖畫出來(lái)也就馬上明白了。

            就緒:就是“萬(wàn)事俱備只欠東風(fēng)”,就差CPU的調(diào)度了,只要CPU一調(diào)度便可運(yùn)行。

            運(yùn)行:就是在就緒狀態(tài)的基礎(chǔ)上得到了CPU的調(diào)度。

            等待(阻塞):還沒(méi)具備運(yùn)行條件,等待時(shí)機(jī)的狀態(tài),我們從這個(gè)圖也能看的出來(lái),等待狀態(tài)不能直接運(yùn)行,必須要經(jīng)過(guò)就緒這個(gè)狀態(tài)的,所以等待狀態(tài)除了等待CPU調(diào)度之外,還缺少某些運(yùn)行所需的條件。

            五態(tài)圖:

             我們把幾個(gè)關(guān)鍵的概括一下:其實(shí)這個(gè)圖跟咱們上面那個(gè)三態(tài)圖是吻合的,只是把三態(tài)圖分的更細(xì)了點(diǎn)我覺(jué)得;所以分析五態(tài)圖咱們只需要把三態(tài)圖掌握好就行, 就這么easy;我們?cè)倏纯磶讉€(gè)關(guān)鍵的:主要是三態(tài)圖的一個(gè)動(dòng)態(tài)的一個(gè)表示過(guò)程,所以這些概念的東西,結(jié)合前面的三態(tài)圖理解就非常容易了:

            就緒——>運(yùn)行:就是三態(tài)圖中的,條件被CPU選中了。

            運(yùn)行——>就緒:運(yùn)行超時(shí)或者是條件被更高優(yōu)先級(jí)進(jìn)程剝奪。

            運(yùn)行——>等待:條件還沒(méi)具備運(yùn)行條件,等待某一事件的發(fā)生。

            等待——>就緒:條件是等待的事件已發(fā)生,具備了運(yùn)行條件。

            在這里邊,還非常要主要這些箭頭的指向。

            2、進(jìn)程死鎖:

            死鎖是進(jìn)程管理設(shè)計(jì)不當(dāng)造成的;進(jìn)程死鎖是一個(gè)進(jìn)程在等待一個(gè)不可能發(fā)生的事;系統(tǒng)死鎖是一個(gè)或多個(gè)進(jìn)程產(chǎn)生死鎖。

            其實(shí)對(duì)于這方面的知識(shí),跟咱們生活是很有聯(lián)系的。比如我們使用過(guò)打印機(jī)都知道。所以把生活的場(chǎng)景投進(jìn)去理解,就很簡(jiǎn)單了。

            死鎖產(chǎn)生的必要條件:

            互斥條件:即一個(gè)資源每次只能被一個(gè)進(jìn)程使用。

            保持和等待條件:有一個(gè)進(jìn)程已獲得了一些資源,但因請(qǐng)求其他資源被阻塞時(shí),對(duì)已獲得的資源保持不放。

            不剝奪條件:有些系統(tǒng)資源是不可剝奪的,當(dāng)某個(gè)進(jìn)程已獲得這種資源后,系統(tǒng)不能強(qiáng)行收回,只能由進(jìn)程使用完時(shí)自己釋放。

            環(huán)路等待條件:若干個(gè)進(jìn)程形成環(huán)形鏈,每個(gè)都占用對(duì)方要申請(qǐng)的下一個(gè)資源。

            解決死鎖的策略

            死鎖預(yù)防:我們要求用戶申請(qǐng)資源時(shí)一起申請(qǐng)所需的全部資源,這就破壞了保持和等待條件:將資源分層,得到上一層資源后,才能申請(qǐng)下一層資源,它破壞了環(huán)路等待條件。預(yù)防通常會(huì)降低系統(tǒng)的效率。

            死鎖避免:避免是指進(jìn)程在每次申請(qǐng)資源時(shí)判斷這些操作是否安全,典型算法是”銀行家算法“。但這種算法會(huì)增加系統(tǒng)的開銷。

            死鎖檢測(cè):前兩者是事前措施,而死鎖的檢測(cè)則是判斷系統(tǒng)是否處于死鎖狀態(tài),如果是,則執(zhí)行死鎖解除策略。

            死鎖解除:這是與死鎖檢測(cè)結(jié)合使用的,它使用的方式就是剝奪。即將資源強(qiáng)行分配給別的進(jìn)程。

            接下來(lái),我們來(lái)實(shí)戰(zhàn)一下:

            銀行家算法:

            找了這么一個(gè)例子跟大家分析分析我的理解過(guò)程:

            首先求剩下的資源數(shù):

            R1=9-(1+2+2++1)=2

            R2=8-(2+1+1+2+1)=1

            R3=5-(1+1+3)=0

            我們從這個(gè)表中很容易的分析出:還需資源數(shù)=最大需求量-已分配資源數(shù)

            那么需要一個(gè)系統(tǒng)是安全的,那么這個(gè)進(jìn)程就不能產(chǎn)生死鎖?,F(xiàn)在就一目了然了都:

            從我們剩下的資源數(shù)和還需要的資源數(shù),我們剩下的R1=2、R2=1、R3=0這個(gè)只能符合P2進(jìn)程的0、1、0;

            那么我們給P1運(yùn)行完成之后,我們的資源要釋放,所以我們資源=現(xiàn)有資源+已經(jīng)分配的:

            那么我們現(xiàn)在就有了R1、R2、R3的資源分別為:4、2、1;我們?cè)儆^察一下看哪個(gè)進(jìn)程需要資源符合我們的釋放的資源的:

            那只能是P4了,因?yàn)樾枰馁Y源為:0、0、1;而我們現(xiàn)在有的資源為:4、2、1,完全能滿足這個(gè)進(jìn)程P4的要求;我們看圖:

            那么這兩個(gè)進(jìn)程就完成了,接下來(lái)我們還繼續(xù)對(duì)比著來(lái)看:

            我們剩下的資源5、4、1。這時(shí)候我們發(fā)現(xiàn)了P5和P1都能滿足他們所需的資源:所以P5和P1就可以隨心所欲了,那我們不如就從需要資源小的開始分配試試;

            這時(shí)候我們發(fā)現(xiàn)我們剩余的資源又能滿足到P3和P1進(jìn)程了。所以我們的答案就不止一種了:

            我們要是先分配P1,再分配P5,再到P3.結(jié)果就是:

            雖然進(jìn)程的這個(gè)順序有很多種,在都滿足不造成死鎖的情況下,是否有最優(yōu)的排序呢?我覺(jué)得應(yīng)該是有的,就是在不發(fā)生死鎖的情況下,我們應(yīng)該是優(yōu)先給予需要資源少的進(jìn)程。

          posted on 2012-04-17 13:33 順其自然EVO 閱讀(211) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2012年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 房产| 万山特区| 绥德县| 武强县| 克山县| 潼关县| 临颍县| 宜兰县| 大宁县| 常州市| 界首市| 贞丰县| 漾濞| 芮城县| 大宁县| 广昌县| 临朐县| 文昌市| 武夷山市| 舞钢市| 广德县| 龙山县| 庐江县| 天气| 社会| 民县| 萝北县| 蒙山县| 芜湖市| 迭部县| 丰城市| 万源市| 吐鲁番市| 永城市| 凤山县| 甘洛县| 宕昌县| 西乌珠穆沁旗| 共和县| 读书| 曲麻莱县|