作業系統 - 程序

在學習程序過程中,需要了解程序的基本概念及狀態變化,程序死鎖,程序同步,訊號量,前驅圖,PV原理等基本概念;

作業系統 - 程序

程序的三態圖

從程序三態圖可以看出:

就緒狀態是程序已經得到執行所需的資源,只等待CPU的排程便可執行;

執行狀態是程序已得到執行所需的資源,並且得到了CPU的排程;

等待狀態是不具備執行條件,等待時機的狀態,等待狀態也稱堵塞狀態,等待是等待資源;

作業系統 - 程序

程序五態圖

程序五態圖其實就是程序三態圖的進階,多了掛起和啟用;

程序管理是操作的核心,但操作不當就會出現死鎖問題。如果一個程序在等待一個不可能發生的事,則程序出現死鎖,程序的死鎖就會造成系統死鎖;所以進資源分配很關鍵,這裡需要明白銀行家演算法;

發生死鎖的必要條件:

互斥條件即一個資源每次只能被一個程序使用,在作業系統中是真實存在的;

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

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

環路等待條件即若干個程序形成環鏈,每個都佔用對方要申請的下一個資源;

前驅圖是一個有向無迴圈圖,記為DAG,用於描述執行緒之間執行的前後關係,圖中每個節點可用於描述一個程式段或程序,節點間的有向邊則用於表示兩個節點間存在的偏序或前驅關係。如果Pi必須在Pj之前完成可寫成Pi->Pj,稱Pi是Pj的直接前驅,Pj是Pi的直接後繼,沒有前驅的稱為初始節點,沒有後繼的稱終止節點。

PV操作:

臨界資源:諸程序間需要互斥方式對其進行共享的資源;

臨界區:每個程序中訪問臨界資源的那段程式碼稱為臨界區;

訊號量是一種特殊的變數

P操作:down()、wait()操作,S=S-1,S<0程序暫停執行,放入訊號量的等待佇列;

V操作:up()、signal()操作,S=S+1,S<=0喚醒等待佇列中的一個程序;