程序的基本狀態及轉換和阻塞及掛起的理解

2021-08-20 22:32:55 字數 1256 閱讀 6303

掛起是一種主動行為,是把乙個程序從記憶體轉到外存,而阻塞則是一種被動行為(並不絕對,看個人理解),是在等待事件或資源時任務的表現。對於掛起,其程序所有資源都轉入外存;而阻塞,其程序所有資源依然儲存在記憶體中

對應掛起的行為是啟用,即當沒有活動就緒程序時或靜止就緒佇列裡面有程序優先順序高於活動就緒裡面所有程序,還有就是當乙個程序釋放足夠記憶體時,系統會把乙個高優先順序阻塞啟用。而阻塞卻沒有對應的主動行為來解除,需要其他程序或系統喚醒。

乙個比喻:只有乙個鍋,當食材已經準備充分的菜就可以下鍋,這就是執行態;而其他準備好的菜就順序放在一旁,等待下鍋,這就是就緒態;還有的菜準備還不是很充分,例如該切片的菜還沒有切片,還有一些佐料還沒有從冰箱裡拿出,這就是i/o操作等待,類似阻塞態;而還有一種情況就是廚房的面積太小了,桌子上放不下那麼多的準備下鍋的菜,於是先將那些還沒有準備好的菜放入冰箱,如果還是放不了那麼多菜,就把那些已經準備好的但沒有下鍋的菜放入冰箱,以免變質,這就是掛起態;當桌子上有位置了,就把菜從冰箱拿出來,這便是啟用操作。做好的菜就可以端出廚房,這便是退出態。(ps:這裡我假設冰箱空間很大,也存在那種炒到一半的菜放到一邊的情況,即從執行態到就緒態或阻塞態的情況,這種情況可以類似川菜中先將肉處理一下(去腥等等),然後又從鍋裡撈出來,用豆瓣和其他佐料來進行醃製(這裡如果佐料沒有在桌子上就類似進入阻塞態,而如果有就相當於進入就緒態,但是鍋裡已經被占用了,需要等待一會兒)至於優先順序的高低,也可模擬有些菜是為了其他菜做鋪墊(舉個例子:在川菜裡面,回鍋肉和炒白菜,一般家庭會優先做回鍋肉,因為當做回鍋肉時,會炒出許多豬油,而這些有可以用來炒白菜,這樣的炒白菜不僅好吃,而且也節約了許多油。))

程序的基本狀態及轉換

程序的基本狀態 1 就緒狀態 當程序已分配到除cpu以外的所有必要資源後,只要在獲得cpu,便可立即執行,程序這時的狀態就稱為就緒狀態。在乙個系統中處於就緒狀態的程序可能有多個,通常將他們排成乙個佇列,稱為就緒佇列。2 執行狀態 程序已獲得cpu,其程式正在執行。在單處理機系統中,只有乙個程序處於執...

程序狀態及轉換

對程序可以執行有很多種狀態,可以建立和銷毀,也可以更改優先權,程序狀態是程序某時某刻所處的模式或條件。程序的狀態也決定了將來的事件以及可能進入的狀態。其中 準備執行的程序處於就緒狀態。如果某個程序因為等待某個資源或者事件的傳送而不能執行,則進入阻塞狀態。就緒和阻塞狀態是最常見的程序狀態之一。只有位於...

程序的狀態及轉換

目錄 引起程序狀態轉換的具體原因如下 執行態 阻塞態 等待使用資源 如等待外設傳輸 等待人工干預。阻塞態 就緒態 資源得到滿足 如外設傳輸結束 人工干預完成。執行態 就緒態 執行時間片到 出現有更高優先權程序。就緒態 執行態 cpu 空閒時選擇乙個就緒程序。五態模型在三態模型的基礎上增加了建立態 n...