天天看點

軟考之路--用文字記錄這個美麗的程序

        程序,百度百科對她這樣進行闡述,程序是一個具有一定獨立功能的程式關于某個資料集合的一次運作活動。它是作業系統動态執行的基本單元,在傳統的作業系統中,程序既是基本的配置設定單元,也是基本的執行單元。,在小編的了解世界中,程序就是一段程式的執行過程,就好比中午要去食堂吃飯,從十一教走到中快食堂的路上的這個過程,就是程序,純屬小編的個人傻傻的了解,有不同想法的小夥伴歡迎讨論交流,這篇博文,小編主要來講解一下程序的相關知識,如下圖所示,小編會根據下圖的架構,進行一一講解,用文字記錄這個美麗的程序......

軟考之路--用文字記錄這個美麗的程式

       第一個:狀态

       程序的狀态,這裡,我們主要講解的内容就是兩張圖,一張三态圖,一張五态圖,小編通過這兩個圖來介紹一些相關的知識點:

        三态圖

軟考之路--用文字記錄這個美麗的程式

        我們就這個圖來分析一下各個關鍵部分:

        就緒狀态:就是“萬事俱備隻欠東風”的狀态,程序已得到運作所需資源,隻等待cpu的排程便可運作。

        運作狀态:程序已得到運作所需資源,并且得到了cpu的排程。

        等待狀态:不具備運作條件,等待時機的狀态,也叫阻塞狀态。

        運作狀态PS等待狀态:就緒狀态,是等待cpu的排程,隻欠cpu的排程。而等待狀态是,除cpu以外的其他資源,比如列印機。可能一個程序,這個程序的作用是做統計報表,她同時要進行列印,當使用者點選列印,程序需要判斷,這個列印機是否空閑,如果這個列印機空閑,資源充足,隻需要cpu的排程,即可工作,如果處于忙的狀态,那麼就需要等待,等待是等待列印機資源,等到列印機空閑,以及系統把列印機配置設定給a程序的時候,我們就可以進入就緒态了,就隻等待cpu的排程了,等待态,等待cpu以外的資源,就緒态,隻等待cpu資源。

         五态圖:

軟考之路--用文字記錄這個美麗的程式

        第二個:程序死鎖

        死鎖是程序管理設計不當造成的;程序死鎖是一個程序在等待一個不可能發生的事;系統死鎖是一個或多個程序産生死鎖。其實對于這方面的知識,跟我們的生活特别貼近。比如現階段,要自考了,好多小夥伴去列印自考題,列印機就是一個很好的例子。是以把生活的場景投進去了解,就很簡單了。

       死鎖産生的條件:

       互斥條件:即一個資源每次隻能被一個程序使用。

       保持和等待條件:有一個程序已獲得了一些資源,但因請求其他資源被阻塞時,對已獲得的資源保持不放。

       不剝奪條件:有些系統資源是不可剝奪的,當某個程序已獲得這種資源後,系統不能強行收回,隻能由程序使用完時自己釋放。

       環路等待條件:若幹個程序形成環形鍊,每個都占用對方要申請的下一個資源。

       解決死鎖的政策:

       死鎖預防:我們要求使用者申請資源時一起申請所需的全部資源,這就破壞了保持和等待條件:将資源分層,得到上一層資源後,才能申請下一層資源,它破壞了環路等待條件。預防通常會降低系統的效率。

       死鎖避免:避免是指程序在每次申請資源時判斷這些操作是否安全,典型算法是”銀行家算法“。但這種算法會增加系統的開銷。

       死鎖檢測:前兩者是事前措施,而死鎖的檢測則是判斷系統是否處于死鎖狀态,如果是,則執行死鎖解除政策。

       死鎖解除:這是與死鎖檢測結合使用的,它使用的方式就是剝奪。即将資源強行配置設定給别的程序。

       第三個:牛刀小試

       總結了這麼多的理論知識,接下來,我們在實戰中演練一下,銀行家算法例子,聽着高大上有麼有`(*∩_∩*)′,題目描述:假設系統中有三類互斥資源R1,R2,R3,可用資源數分别是9,8,5,在T0時刻系統中有P1,P2,P3,P4和P5五個程序,這些程序對資源的最大需求量和已配置設定資源數如下所示,如果程序按(  )序列執行,那麼系統狀态是安全的?

軟考之路--用文字記錄這個美麗的程式

       接下來,小編跟大家分析一下,小編的了解,我們首先求剩下的資源數:

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

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

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

       我們從這個表中很容易的分析出    還需資源數=最大需求量-已配置設定資源數

軟考之路--用文字記錄這個美麗的程式

        那麼需要一個系統是安全的,那麼這個程序就不能産生死鎖。現在從我們剩下的資源數和還需要的資源數,我們剩下的R1=2、R2=1、R3=0這個隻能符合P2程序的0、1、0;那麼我們給P1運作完成之後,我們的資源要釋放,是以我們資源=現有資源+已經配置設定的:

軟考之路--用文字記錄這個美麗的程式

        那麼我們現在就有了R1、R2、R3的資源分别為:4、2、1;我們再觀察一下看哪個程序需要資源符合我們的釋放的資源的。那隻能是P4了,因為需要的資源為:0、0、1;而我們現在有的資源為:4、2、1,完全能滿足這個程序P4的要求,我們看圖:

軟考之路--用文字記錄這個美麗的程式

       那麼這兩個程序就完成了,接下來我們還繼續對比着來看:我們剩下的資源5、4、1。這時候我們發現了P5和P1都能滿足他們所需的資源:是以P5和P1就可以随心所欲了,那我們不如就從需要資源小的開始配置設定試試;

軟考之路--用文字記錄這個美麗的程式

      這時候我們發現我們剩餘的資源又能滿足到P3和P1程序了。是以我們的答案就不止一種了:

軟考之路--用文字記錄這個美麗的程式

      我們要是先配置設定P1,再配置設定P5,再到P3結果就是:

軟考之路--用文字記錄這個美麗的程式

      從上面的分析過程,我們可以看出來程序的這個順序有很多種,小編就在想,在都滿足不造成死鎖的情況下,是否有最優的排序呢,小編覺得,應該有,或許就是在不發生死鎖的情況下,我們應該是選擇給予需要資源少的程序有不同意見的小夥伴歡迎讨論交流`(*∩_∩*)′。

繼續閱讀