程序進度


作業系統中,程序涉及根據特定條件(例如CPU、輸入/輸出裝置和使用者)從一種狀態轉換到另一種狀態。作業系統中有一些可用狀態,例如新建、等待、就緒、執行、掛起就緒或掛起等待。可以透過這些程序狀態來檢視進度以達到目標。程序的進度是解決臨界區問題的一種解決方案。當系統中允許多個程序時,臨界區會影響程序的進度。

作業系統中程序的進度

在作業系統中,程序是指中央處理器執行的工作,而程序的進度則處理程序向終止點的移動。

程序狀態

程序中可用的不同狀態是

新建狀態

在此狀態下,程序已被建立,但尚未由作業系統分配到主記憶體。

就緒狀態

程序已建立並被接納到主記憶體中,並將等待CPU執行。就緒狀態的程序由CPU儲存在佇列中。

執行狀態

CPU選擇的程序根據其指令執行。每個CPU一次只能有一個程序處於執行狀態。

等待狀態

它也稱為阻塞狀態,並且該狀態正在等待某些事件發生。等待狀態不需要CPU並停留在主記憶體中。

終止狀態

它也稱為完成狀態,這意味著程序已成功執行。然後,作業系統將從主記憶體中刪除此完成狀態。

當程序從主記憶體切換到輔助記憶體時,作業系統中還會出現兩種附加程序狀態,即:

掛起就緒狀態

處於就緒狀態的程序已換出到主記憶體。

掛起等待狀態

它也稱為掛起阻塞狀態,並且該程序先前處於等待狀態,但後來從主記憶體中換出。

程序進度對作業系統的影響

程序進度的影響可能是積極的,也可能是消極的,這取決於具體情況:

效率

跟蹤程序以提高效率,並提高程序質量。例如,技術進步可以提高商品和服務的生產。

程序規則

它改進了規則並增強了程序的公平性。

挑戰

程序進度的積極影響是它創造了新的機會,同時也帶來了在建立新程序時的負面影響。

臨界區

臨界區透過限制對共享資源的並行訪問來影響程序的進度。此部分使用一段程式碼,其中程序訪問或修改共享資源,該資源只能使用一次。

如果同步機制設計不當,可能會導致死鎖、飢餓和優先順序反轉等問題,這些問題可能會阻止程序前進,阻止其進入或退出臨界區。它透過需要適當的同步來避免衝突並確保競爭程序之間的公平性來影響程序的進度。

程序進度中的同步問題

當所有程序都需要協調共享資源以確保程序的正確性和一致性時,這些問題就會出現在程序的進度中。

死鎖

一個死鎖是所有多執行緒中的一個問題,其中許多程序共享相同的資源。程序的進度意味著,如果一個程序不使用資源,則它不應阻止任何其他程序使用它,並且下次可以使用資源的程序的決定不應無限期推遲。因此,它減少了整個過程中的死鎖。

飢餓

當程序由於排程過程中的錯誤而延遲進入或退出臨界區時,就會出現飢餓問題。問題發生後,它必須等待無限的時間才能獲得資源以執行。

優先順序反轉

低優先順序程序阻止高優先順序程序訪問高優先順序程序所需資源的情況。優先順序順序的反轉會透過不必要地延遲高優先順序程序來阻止程序前進。

競爭條件

一種情況,其中計算的結果取決於訪問或更改共享資源的多個程序執行的相對時間或順序。由於併發訪問或更改共享資源,競爭條件會透過產生不準確或不一致的結果來阻止程序前進。

結論

程序的進度涉及許多影響,例如互斥屬性、優先順序程序和安全威脅(例如競爭條件漏洞)。程序是透過系統生命週期的多個狀態執行的。當程序在臨界區執行時,它應該提供有限的時間來選擇程序,如果在該時間內未選擇它,則會導致死鎖。

更新於:2024年11月12日

瀏覽量 399

啟動你的職業生涯

完成課程獲得認證

開始
廣告