作業系統之程序

2021-06-05 20:52:13 字數 2743 閱讀 6824

程序

這裡邊我們主要是要講的內容就是這兩個圖:我們通過這兩個圖來介紹一些相關的知識點:

我們還是來看圖進行分析:

我們就這個圖進行分析各個關鍵部分:這些關鍵在於理解,很easy的,或者你把這個圖畫出來也就馬上明白了。

就緒:就是「萬事俱備只欠東風」,就差cpu的排程了,只要cpu一排程便可執行。

執行:就是在就緒狀態的基礎上得到了cpu的排程。

等待(阻塞):還沒具備執行條件,等待時機的狀態,我們從這個圖也能看的出來,等待狀態不能直接執行,必須要經過就緒這個狀態的,所以等待狀態除了等待cpu排程之外,還缺少某些執行所需的條件。

我們把幾個關鍵的概括一下:其實這個圖跟咱們上面那個三態圖是吻合的,只是把三態圖分的更細了點我覺得;所以分析五態圖咱們只需要把三態圖掌握好就行,就這麼easy;我們再看看幾個關鍵的:主要是三態圖的乙個動態的乙個表示過程,所以這些概念的東西,結合前面的三態圖理解就非常容易了:

就緒——>執行:就是三態圖中的,條件被cpu選中了。

執行——>就緒:執行超時或者是條件被更高優先順序程序剝奪。

執行——>等待:條件還沒具備執行條件,等待某一事件的發生。

等待——>就緒:條件是等待的事件已發生,具備了執行條件。

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

死鎖是程序管理設計不當造成的;程序死鎖是乙個程序在等待乙個不可能發生的事;系統死鎖是乙個或多個程序產生死鎖。

其實對於這方面的知識,跟咱們生活是很有聯絡的。比如我們使用過印表機都知道。所以把生活的場景投進去理解,就很簡單了。

死鎖產生的必要條件

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

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

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

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

解決死鎖的策略

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

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

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

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

接下來,我們來實戰一下:

銀行家演算法:

找了這麼乙個例子跟大家分析分析我的理解過程:

首先求剩下的資源數:

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.結果就是:

雖然程序的這個順序有很多種,在都滿足不造成死鎖的情況下,是否有最優的排序呢?我覺得應該是有的,就是在不發生死鎖的情況下,我們應該是優先給予需要資源少的程序。

作業系統之 程序

程序是程式的一次執行,由於需要對程序進行分離儲存出現記憶體管理,由於需要讓程序有條不紊往前推進而導致程序排程的出現。每個程序有自己的程式計數器,記錄下一條指令所在位置。程序的狀態有執行,阻塞,就緒。並不唯一是這三種狀態,windows有7種狀態。1.發明程序的根本動機是什麼?它與程式是什麼關係?程序...

作業系統之程序

程序是系統進行資源分配和排程的基本單位 程序作為程式獨立執行的載體保障程式正常執行 程序的存在使得作業系統資源的利用率大幅提公升 程序實體 識別符號 唯一表示程序 程序狀態 程式計數器 即將執行的位址 程序指標 程式 程序資料相關指標 上下文資料 io狀態資訊 被程序io操作所占用的檔案列表 記賬資...

作業系統之程序排程

世界上很多問題都是跟資源分配和任務排程有關,而學會了作業系統的程序排程演算法,我覺得也會給你在做事的時候帶來一些啟發吧。在現代的作業系統中,有很多程序在記憶體中。有的正在執行,有的正等待某個事件的發生 比如等待使用者敲擊鍵盤 那麼作業系統作為乙個大佬,就必須管理這些程序,讓它們按照規則來,不能亂了套...