1. 程式人生 > >作業系統——程序的狀態及轉換

作業系統——程序的狀態及轉換

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,便可立即執行,程序這時的狀態就稱為就緒狀態。在一個系統中處於就緒狀態的程序可能有多個,通常將他們排成一個佇列,稱為就緒佇列。 ②執行狀態