作業系統——程序的狀態及轉換
1. 為什麼要分開就緒和阻塞狀態
答:因為就緒態只需要等待處理機,而阻塞態可能在等待輸入輸出,即使分配給處理機也是徒勞,所以兩狀態圖不妥。對於排程程序,只需要等待就緒佇列裡的程序,因為阻塞狀態可以轉換到就緒佇列裡去。
2. 程序五狀態
1) 新狀態:程序已經建立,但未被OS接納為可執行程序。(還沒有申請到相應的資源)。
2) 就緒態:程序做好了準備,準備執行(只等待處理機)。
3) 執行狀態:該程序正在執行(單處理機,某一時刻僅一個程序佔用處理機)。
4) 阻塞狀態:等待某事件發生才能執行,如等待I/O完成。
5) 終止狀態.
3. 問題:多個程序競爭記憶體資源
l 記憶體資源緊張
l 無就緒佇列,處理機空閒:I/O速度比處理機速度慢的多,可能出現全部程序阻塞等待I/O。
解決方法
l 交換技術:換出一部分暫時不能執行的程序(阻塞程序)到外存(只換出程式和資料,PCB不換出去),以騰出記憶體空間,可以呼叫新程序來執行。
l 虛擬儲存技術:每個程序只能裝入一部分程式和資料
4. 掛起:程序被交換到外存,狀態變為掛起狀態
4.1 程序掛起的原因(p91)
l 程序全部阻塞,處理機空閒。
l 系統負荷過重,記憶體空間緊張。(讓其他程序先執行完)
l 作業系統的需要。作業系統可能需要掛起後臺程序或一些服務程序,或者某些可能導致故障的程序。
l 終端使用者請求。
l 父程序的需求。
4.2 掛起程序的特徵
l 不能立即執行
l 可能是等待某事件發生,若是,則阻塞條件獨立於掛起條件,即使阻塞事件發生,該程序也不能執行。
n 阻塞和掛起沒有聯絡。
n 如果A程序現在要求輸入資料,此時A程序屬於阻塞狀態,在選擇掛起程序的時候,可能先選擇阻塞程序(A程序),此時A程序掛起,正在輸入資料,輸入到記憶體緩衝區內。當資料輸完了,向處理機發送命令資料已經輸入完成,阻塞事件解除,但實際上還是掛起,所以仍是掛起態。
l 使之掛起的程序為:自身、父程序、OS。
l 只有掛起它的程序才能使之由掛起狀態轉換為其他狀態。
4.3 阻塞與掛起
l 程序是否等待時間:阻塞與否。
l 程序是否被換出記憶體:掛起與否。
4.4 四種狀態組合
l 就緒:程序在記憶體,準備執行。
l 阻塞:程序在記憶體,等待事件。
l 就緒/掛起:程序在外存,只要調入記憶體即可執行。
l 阻塞/掛起:程序在外存,等待事件。
4.5 處理機可排程執行的程序有兩種
l 新建立的程序
l 或換入一個以前掛起的程序
通常為避免增加系統負載,系統會換入一個以前掛起的程序執行。
4.6 具有掛起狀態的程序狀態轉換
l 阻塞 → 阻塞/掛起:OS通常將阻塞程序換出,以騰出記憶體空間
l 阻塞/掛起→ 就緒/掛起:當阻塞/掛起程序等待的事件發生時,可以將其轉換為就緒/掛起。
l 就緒/掛起→ 就緒:OS需要調入一個程序執行。
l 就緒 → 就緒/掛起:一般,OS掛起阻塞程序。但是有時也會掛起就緒程序,釋放足夠的記憶體空間。
l 新 → 就緒/掛起(新→ 就緒):新程序建立後,可以插入到就緒佇列或就緒,掛起佇列,若無足夠的記憶體分配給新程序,則需要新→ 就緒/掛起。
相關推薦
作業系統——程序的狀態及轉換
1. 為什麼要分開就緒和阻塞狀態 答:因為就緒態只需要等待處理機,而阻塞態可能在等待輸入輸出,即使分配給處理機也是徒勞,所以兩狀態圖不妥。對於排程程序,只需要等待就緒佇列裡的程序,因為阻塞狀態可以轉換到就緒佇列裡去。 2. 程序五狀態 1)
程序的基本狀態及轉換和阻塞及掛起的理解【轉】
就緒狀態 :一個程序獲得了除處理機外的一切所需資源,一旦得到處理機即可執行,則稱此程序處於就緒狀態。 執行狀態:當一個程序在處理機上執行時,則稱該程序處於執行狀態。 阻塞狀態:一個程序正在等待某一事件發生(例如請求I/O而等待I/O完成等)而暫時仃止執行,這時即使把處理機分配給程序也無法執行,故
程序和執行緒的狀態及轉換
執行緒從建立、執行到結束總是處於下面五個狀態之一:新建狀態、就緒狀態、執行狀態、阻塞狀態及死亡狀態。 1.新建狀態(New): 當用new操作符建立一個執行緒時, 例如new Thread(r),執行緒還沒有開始執行,此時執行緒處在新建狀態。 當一
程序的三種基本狀態及轉換
.程序的三種基本狀態 程序在執行中不斷地改變其執行狀態。通常,一個執行程序必須具有以下三種基本狀態。 就緒(Ready)狀態 當程序已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。 執行(Running)狀
java線程狀態及轉換
無限 其他 bsp until med ron alt width 理解 java線程有6種狀態: 新建線程new,啟動線程runnable,阻塞block,限時等待timed_waiting,等待線程waiting,終止線程terminated 1.限時等待timed w
進程的基本狀態及轉換
inf 等待 多個進程 img 暫時 分享圖片 ron http 轉換 一、進程的基本狀態 操作系統引入進程的目的:使多個程序能並發執行,以提高資源利用率和系統吞吐量 1、就緒狀態(Ready):這是指進程已經處於準備好運行的狀態。即進程已經獲得除CPU意外所有必需的資源,
Linux核心模組程式設計(列出系統中所有核心執行緒的程式名、PID 號、程序狀態及程序優先順序、父程序的PID)
(1) 設計一個模組,要求列出系統中所有核心執行緒的程式名、PID 號、程序狀態及程序優先順序、父程序的PID。 1.首先,我們開始編寫模組程式碼,這是Linux核心程式設計的核心程式碼,程式碼如下: #include <linux/init.h&
挑戰408——作業系統(4)——程序狀態轉換
前面我們提到了程序的引入背景,現在就深入瞭解一下。 程序與程式 為了從變化的角度,動態地研究可以併發執行的程式,真實反映系統的獨立性併發性和動態性,作業系統中不得不引入“程序”這一概念。 程序(process),即執行著的程式。直觀翻譯其英文,就是過程的意思。它表示程式的執行過程
Ubuntu作業系統學習筆記2(vi文字編輯器、程序的基本狀態及其轉換)
文字編輯器是對純文字檔案進行編輯、檢視、修改等操作的應用程式。vi編輯器具有文字編輯的所有功能,並且執行速度快,具有強大的編輯功能,廣泛的適用性和靈活性。 一、vi文字編輯器 1、vi編輯器的啟動與退出 (1)啟動 格式:vi [檔名] 檔名有以下情況: 未指定檔
程序狀態的概念及狀態轉換圖
一、程序狀態 1.建立狀態 程序由建立而產生。建立程序是一個非常複雜的過程,一般需要通過多個步驟才能完成:如首先由程序申請一個空白的程序控制塊(PCB),並向PCB中填寫用於控制和管理程序的資訊;然
實驗一: 程序狀態轉換及PCB的模擬
實驗目的1)加深對程序概念的理解。2)深入瞭解程序控制塊和程序狀態之間的轉換。3)掌握程序排程演算法。實驗預備知識1)程序的狀態2)程序的結構——PCB程序都是由一系列操作(動作)所組成,通過這些操作來完成其任務。因此,不同的程序,其內部操作也不相同。在作業系統中,描述一個程
每天3分鐘作業系統修煉祕籍(24):程序狀態以及狀態轉換
點我檢視祕籍連載 程序狀態以及狀態轉換 程序並非總是處於執行中,例如CPU沒執行在它身上時它就是非執行的。程序在建立之後會改變狀態,不同的狀態之間可以實現狀態切換,可以通過ps或top等命令捕獲程序的狀態。包含以下幾種狀態: 建立態(new):程序正在被建立中,過程非常短暫,使用者無法捕捉 執行態(run
作業系統(6)程序---程序概念:程序控制、程序狀態、三狀態模型、掛起模型;執行緒概念:使用者執行緒、核心執行緒、輕權執行緒
文章目錄 1:程序相關概念 1. 程序的概念 2. 程序控制塊 3. 程序狀態 4. 三狀態程序模型(就緒、執行、阻塞/等待) 5. 掛起程序模型 2:程序控制
作業系統——程序(1)什麼是程序和對程序狀態的理解
在作業系統中滿足的大多數需求都涉及程序,在有了應用程式、系統軟體和資源的概念,就需要一種有序的方式管理應用程式的執行,從而能夠讓資源對多個應用程式是可用的、能夠讓所有程式得以執行、充分利用所有裝置。 程序如此重要那麼程序是什麼?首先程序是一個正在計算機上執行的程式例項,即程式是靜態
Java程式設計體驗:執行緒的7種狀態及相互轉換(圖)
先從圖片開始 小小的作下解釋: 1、執行緒的實現有兩種方式,一是繼承Thread類,二是實現Runnable介面,但不管怎樣,當我們new了這個物件後,執行緒就進入了初始狀態; 2、當該物件呼叫了start()方法,就進入可執行狀態; 3、進入可執行狀態後,當該物件
Java執行緒的5種狀態及狀態之間轉換
Thread.sleep(long millis),一定是當前執行緒呼叫此方法,當前執行緒進入阻塞,但不釋放物件鎖,millis後執行緒自動甦醒進入可執行狀態。作用:給其它執行緒執行機會的最佳方式。Thread.yield(),一定是當前執行緒呼叫此方法,當前執行緒放棄獲取的cpu時間片,由執行狀態變會可執行
作業系統處理機管理功能(2)之程序通訊及排程
1.程序通訊 當有一組相互合作的程序去完成一個共同的任務時,他們之間往往需要交換資訊。例如,有輸入程序、計算程序、列印程序三個相互合作的程序,輸入程序負責將所輸入的資料傳 送給計算程序、計算程序利用輸入資料進行計算,並把計算結果傳給列印程序;最後又列印程序把計算結果給打印出
計算機作業系統讀書筆記___程序狀態的討論
推薦閱讀程序的引入。馬克思指出原因與結果是唯物辯證法的一對基本範疇。 為什麼會有這些狀態而不是其他狀態?換句話說,作業系統設計者提出這些狀態的用意是什麼?一句話:把CPU(處理機資源)的每一滴潛能都壓榨乾淨。I/O裝置可以閒置,記憶體在系統中程序比較少的時候也會閒置
Linux中程序的狀態與轉換
程序在其生命週期內,由於系統中各程序之間的相互制約關係及系統的執行環境的變化,使得程序的狀態也在不斷的發生變化,即一個程序會經歷若干種不同的狀態。 通常程序有以下五種狀態,前三種是程序的基本狀態。 1)執行狀態 程序正在處理機上執行。在單處理機環境下,每一時刻最多隻有一個程序處於
程序的三種基本狀態及其轉換
程序的基本狀態: ①就緒(Ready)狀態 當程序已分配到除CPU以外的所有必要資源後,只要再獲得CPU,便可立即執行,程序這時的狀態就稱為就緒狀態。在一個系統中處於就緒狀態的程序可能有多個,通常將他們排成一個佇列,稱為就緒佇列。 ②執行狀態