『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行
文章目錄
- 2.1 前趨圖和程序執(zhí)行
- 2.1.1 程序的順序執(zhí)行及其特征
- 1. 程序的順序執(zhí)行
- 2.程序順序執(zhí)行時的特征
- 2.1.2 前趨圖
- 2.1.3 程序的并發(fā)執(zhí)行及其特征
- 1. 程序的并發(fā)執(zhí)行
- 2. 程序并發(fā)執(zhí)行時的特征
- 3.程序并發(fā)執(zhí)行的描述
- 4.采用并發(fā)程序設(shè)計的目的
- 練習(xí)題
- 2.2 進程的描述
- 1. 進程( Process )的定義
- 2. 進程的特征
- 3. 進程與程序的區(qū)別
- 練習(xí)題
- 4、進程的基本狀態(tài)-三態(tài)模型
- 練習(xí)題
- 5、五態(tài)模型
- 6、七態(tài)模型
- 練習(xí)題
- 7、進程控制塊
- 練習(xí)題
- 練習(xí)題
- 練習(xí)題
- 2.3 進程控制
- 2.3.1 進程創(chuàng)建
- 1. 進程圖
- 2.引起創(chuàng)建進程的事件
- 練習(xí)題
- 3.進程的創(chuàng)建過程
- 2.3.2 進程終止
- 1. 引起進程終止的事件
- 2.3.3 進程的阻塞與喚醒
- 1. 引起進程阻塞的事件
- 2.進程阻塞過程
- 3.進程喚醒過程
- 2.3.4 進程掛起/激活
- 1.進程的掛起
- 2.進程激活
- 練習(xí)題
2.1 前趨圖和程序執(zhí)行
2.1.1 程序的順序執(zhí)行及其特征
1. 程序的順序執(zhí)行
一個程序由若干個程序段組成,而這些程序段的執(zhí)行必須是順序的,這種程序執(zhí)行的方式就稱為程序的順序執(zhí)行。
2.程序順序執(zhí)行時的特征
(1) 順序性
處理機的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。
(2) 封閉性
程序一旦開始執(zhí)行,其計算結(jié)果不受外界因素的影響。
(3) 可再現(xiàn)性
程序執(zhí)行的結(jié)果與它的執(zhí)行速度無關(guān)(即與時間無關(guān)),而只與初始條件有關(guān)
2.1.2 前趨圖
前驅(qū)圖是一個 DAG,其用于描述進程間執(zhí)行的先后次序,圖中的每個結(jié)點用于表示一個進程或一個程序段,結(jié)點間的有向邊表示兩個結(jié)點間存在的偏序關(guān)系(前趨關(guān)系)。進程間的前趨關(guān)系用 → 來表示,若進程 Pi 和 Pj 間存在前趨關(guān)系,可表示為 (Pi,Pj)∈→,即:Pi→Pj,表示 Pj 在執(zhí)行前
Pi 必須完成。
在前驅(qū)圖中,將沒有前驅(qū)的結(jié)點稱為初始結(jié)點,將沒有后繼的結(jié)點稱為終止結(jié)點,此外,每個結(jié)點還具有一個價值,用于表示該結(jié)點所含有的進程的執(zhí)行時間
- 結(jié)點 : 描述一個程序段或進程,或一條語句。
- 有向邊: 結(jié)點之間的前趨關(guān)系“->”
- Pi->Pj :Pi 必須在 Pj 開始之前完成,則 Pi是Pj的直接前趨,Pj是Pi的直接后繼
- 初始結(jié)點: 沒有前趨的結(jié)點
- 終止結(jié)點: 沒有后繼的結(jié)點
- 重量: 結(jié)點的程序量或執(zhí)行時間
前趨圖中絕對不能出現(xiàn)循環(huán)
2.1.3 程序的并發(fā)執(zhí)行及其特征
1. 程序的順序執(zhí)行
一個應(yīng)用程序由若干程序段組成,每一程序段完成特定的功能,他們在執(zhí)行時,都要按照某種先后次序執(zhí)行,僅當(dāng)前一程序段執(zhí)行完后,再運行后一程序段,這種執(zhí)行過程被稱為程序的順序執(zhí)行。程序順序執(zhí)行時,具有以下三個特征:
順序性:處理機的操作嚴(yán)格按程序規(guī)定順序執(zhí)行
封閉性:程序一旦開始執(zhí)行,其計算結(jié)果不受外界因素影響
可再現(xiàn)性:程序執(zhí)行只要初始條件一樣,不論如何停頓,重復(fù)執(zhí)行多少次結(jié)果都一樣
2. 程序的并發(fā)執(zhí)行
例:在系統(tǒng)中有n個作業(yè),每個作業(yè)都有三個處理步驟,輸入數(shù)據(jù)、處理、輸出,即Ii,Ci,Pi (i=1,2,3,…,n)。
這些作業(yè)在系統(tǒng)中執(zhí)行時是對時間的偏序,有些操作必須在其它操作之前執(zhí)行,這是有序的,但有些操作是可以同時執(zhí)行的。
3. 程序并發(fā)執(zhí)行時的特征
(1) 間斷性
在多道程序設(shè)計的環(huán)境下,程序是并發(fā)執(zhí)行的,由于它們共享系統(tǒng)資源,以及為完成同一項任務(wù)而相互合作,致使在這些并發(fā)執(zhí)行的程序之間形成了相互制約的關(guān)系。
相互制約導(dǎo)致并發(fā)程序具有“執(zhí)行-暫停-執(zhí)行”這種間斷性的活動規(guī)律。
(2) 失去封閉性
程序在并發(fā)執(zhí)行時,多道程序共享系統(tǒng)的資源,因而這些資源的狀態(tài)由多道程序來改變,程序運行失去封閉性。一程序的運行受到其他程序的影響。
(3) 不可再現(xiàn)性
程序在并發(fā)執(zhí)行時,失去封閉性導(dǎo)致其失去可再現(xiàn)性。
(4) 程序與計算不再一一對應(yīng)
程序并發(fā)執(zhí)行時失去程序的封閉性和可再現(xiàn)性的主要原因是什么?
解答: 并發(fā)運行的程序相互制約
4.程序并發(fā)執(zhí)行的描述
- 若干個程序段同時在系統(tǒng)中運行,這些程序的執(zhí)行在時間上是重迭的;
- 一個程序段的執(zhí)行尚未結(jié)束,另一個程序段的執(zhí)行已經(jīng)開始;
- 即使這種重迭是很小的,也稱這幾個程序段是并發(fā)執(zhí)行的。
描述
cobegin
S1;S2;S3;…;SN
coend;
其中Si(i=1,2,3,…,n)表示n個語句(程序段),這n個語句用cobegin和coend括起來表示這n個語句是可以并發(fā)執(zhí)行的。
co是concurrent的頭兩個字符。 這是Dijkstra提出的。
5.采用并發(fā)程序設(shè)計的目的
- 充分發(fā)揮硬件的并行性,消除處理器和I/O 設(shè)備的互等現(xiàn)象,提高系統(tǒng)效率。
- 并發(fā)程序設(shè)計是多道程序設(shè)計的基礎(chǔ),多道程序的實質(zhì)就是把并發(fā)程序設(shè)計引入到單處理器的系統(tǒng)中。
練習(xí)題
1.[2017考研真題 28]與單道系統(tǒng)相比,多道程序系統(tǒng)的優(yōu)點是(D)
Ⅰ.CPU利用率高
Ⅱ.系統(tǒng)開銷小
Ⅲ.系統(tǒng)吞吐率大
Ⅳ.I/O設(shè)備利用率高
A.僅 Ⅰ、Ⅲ
B.僅 Ⅰ、Ⅳ
C.僅 Ⅱ、Ⅳ
D.僅 Ⅰ、Ⅲ 、Ⅳ
2.2 進程的描述
在多道程序設(shè)計的環(huán)境下,為了描述程序在計算機系統(tǒng)內(nèi)的執(zhí)行情況,必須引人新的概念——進程。
1. 進程( Process )的定義
進程是一個可并發(fā)執(zhí)行的程序在其數(shù)據(jù)集上的一次運行過程,是操作系統(tǒng)進行資源分配的單位,進程表示資源的占用和所要做的工作。
各種不同的進程定義
- 行為的一個規(guī)則叫做程序,程序在處理機上執(zhí)行時所發(fā)生的活動稱為進程(Dijkstra)。
- 進程是這樣的計算部分,它是可以和其它計算并行的一個計算。(Donovan)
- 進程(有時稱為任務(wù))是一個程序與其數(shù)據(jù)一道通過處理機的執(zhí)行所發(fā)生的活動。(Alan.C. Shaw)
- 進程是執(zhí)行中的程序。(Ken Thompson and Dennis Ritchie )
進程的定義:可并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集合上的一次執(zhí)行過程。
進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。
2. 進程的特征
動態(tài)性、并發(fā)性、獨立性、異步性、結(jié)構(gòu)性
(1)動態(tài)性——進程是程序在處理機上的一次執(zhí)行過程。具有生命期。
(2)并發(fā)性——多個進程實體同存于內(nèi)存中,在一段時間內(nèi)同時運行。以提高資源利用率。
(3) 獨立性——進程實體是一個能獨立運行、獨立分配資源和獨立接受調(diào)度的基本單位,而程序則不是。
(4) 異步性——進程按各自獨立的、不可預(yù)知的速度向前推進。
(5) 結(jié)構(gòu)性——進程控制塊(PCB)+程序段+相關(guān)的數(shù)據(jù)段=進程實體。
3. 進程與程序的區(qū)別
- 進程是動態(tài)的,程序是靜態(tài)的
- 進程是暫時的,程序是永久的
- 進程與程序的組成不同:
程序是指令的有序集合;
進程包括程序、數(shù)據(jù)和進程控制塊(即進程狀態(tài)信息) - 進程與程序的對應(yīng)關(guān)系:
無一一對應(yīng)關(guān)系(一個進程可順序執(zhí)行多個程序;一個程序可由多個進程共用)
練習(xí)題
操作系統(tǒng)引入進程后,不能(C)
A.提高資源的利用率
B.正確描述程序的執(zhí)行情況
C.提高用戶編程能力
D.允許一個程序同時被多個用戶調(diào)用
進程的類型
(1)系統(tǒng)進程:執(zhí)行操作系統(tǒng)核心代碼的進程。系統(tǒng)進程起著資源管理和控制的作用。
(2)用戶進程:執(zhí)行用戶程序的進程。
(3)計算進程,I/O進程。
(4)前臺進程,后臺進程。
4、進程的基本狀態(tài)-三態(tài)模型
- 運行態(tài)(running):進程占有處理器正在運行。
- 就緒態(tài)(ready):進程具備運行條件,等待系統(tǒng)分配處理器以便運行。
- 等待態(tài)(wait):又稱為阻塞(blocked)態(tài)或睡眠(sleep)態(tài),進程不具備運行條件,正在等待某個事件的完成。
不同系統(tǒng)設(shè)置的進程狀態(tài)數(shù)目不同
三態(tài)轉(zhuǎn)換圖
正經(jīng)圖來了
引起進程狀態(tài)轉(zhuǎn)換的具體原因
- 運行態(tài)→等待態(tài):等待使用資源或某事件發(fā)生;
- 等待態(tài)→就緒態(tài):資源得到滿足或事件發(fā)生;
- 運行態(tài)→就緒態(tài):運行時間片到;出現(xiàn)有更高優(yōu)先權(quán)進程。
- 就緒態(tài)→運行態(tài):CPU空閑時選擇一個就緒進程。
練習(xí)題
1.[2015考研題 25] 下列選項中會導(dǎo)致進程從執(zhí)行態(tài)變?yōu)榫途w態(tài)的事件是(D)
A.執(zhí)行P(wait)操作
B.申請內(nèi)存失敗
C.啟動I/O 設(shè)備
D.被高優(yōu)先級進程搶占
2.[2014考研題 26] 一個進程的讀磁盤操作完成后,操作系統(tǒng)針對該進程必做的是(A)
A.修改進程狀態(tài)為就緒態(tài)
B.降低進程優(yōu)先級
C.給進程分配用戶內(nèi)存空間
D.增加進程時間片大小
5、五態(tài)模型
五態(tài)模型在三態(tài)模型的基礎(chǔ)上引進了新建態(tài)和終止態(tài)。
- 新建態(tài)—對應(yīng)進程剛被創(chuàng)建的狀態(tài)。為一個新進程創(chuàng)建必要的管理信息,它并沒有被提交,而是在等待操作系統(tǒng)完成創(chuàng)建進程的必要操作。
- 終止態(tài)—進程的終止?fàn)顟B(tài)。首先,等待操作系統(tǒng)進行善后,然后,退出主存。進入終止態(tài)的進程不再執(zhí)行,但依然臨時保留在系統(tǒng)中等待善后。一旦其他進程完成了對終止態(tài)進程的信息抽取之后,系統(tǒng)將刪除該進程。
進程狀態(tài)轉(zhuǎn)換的具體原因
- NULL→新建態(tài):創(chuàng)建一個子進程。
- 新建態(tài)→就緒態(tài):系統(tǒng)完成了進程創(chuàng)建操作,且當(dāng)前系統(tǒng)的性能和內(nèi)存的容量均允許。
- 運行態(tài)→終止態(tài):一個進程到達自然結(jié)束點,或出現(xiàn)了無法克服的錯誤,或被操作系統(tǒng)所終結(jié),或被其他有終止權(quán)的進程所終結(jié)。
- 終止態(tài)→NULL:完成善后操作。
- 就緒態(tài)→終止態(tài):某些操作系統(tǒng)允許父進程終結(jié)子進程。
- 等待態(tài)→終止態(tài):某些操作系統(tǒng)允許父進程終結(jié)子進程。
6、七態(tài)模型
(1)為什么要有“掛起”狀態(tài)?
由于進程的不斷創(chuàng)建,系統(tǒng)資源已不能滿足進程運行的要求,就必須把某些進程掛起(suspend),對換到磁盤鏡像區(qū)中,暫時不參與進程調(diào)度,起到平滑系統(tǒng)負載的目的。
(2)引起掛起狀態(tài)的原因
- 終端用戶的需要:終端用戶在自己程序運行中發(fā)現(xiàn)問題要求使正在執(zhí)行的進程暫停執(zhí)行而使進程處于掛起狀態(tài)。
- 父進程的需要:父進程為了考查和修改某個子進程,或者協(xié)調(diào)各子進程間的活動,需要將該子進程掛起。
- 操作系統(tǒng)的需要:操作系統(tǒng)為了檢查運行中的資源使用情況或進行記帳,而將某些進程掛起。
- 對換的需要:為了提高內(nèi)存的利用率,而將內(nèi)存中某些進程掛起,以調(diào)進其它程序運行。
- 負荷調(diào)節(jié)的需要:由于工作負荷較重,而將一些不重要的進程掛起,以保證系統(tǒng)能正常運行(實時操作系統(tǒng)) 。
(3)進程增加的兩個新狀態(tài)
- 掛起就緒態(tài)(ready suspend):表明進程具備運行條件但目前在輔助存儲器中,當(dāng)它被對換到主存才能被調(diào)度執(zhí)行。
- 掛起等待態(tài)(blocked suspend):表明進程正在等待某一個事件且在輔助存儲器中。
(4)引起進程狀態(tài)轉(zhuǎn)換的具體原因
- 等待態(tài)→掛起等待態(tài):系統(tǒng)根據(jù)當(dāng)前資源狀況和性能要求,決定將一個等待態(tài)進程對換出去成為掛起等待態(tài);
- 就緒態(tài)→掛起就緒態(tài):系統(tǒng)根據(jù)當(dāng)前資源狀況和性能要求,決定把就緒態(tài)進程對換出去成為掛起就緒態(tài)。
- 掛起等待態(tài)→掛起就緒態(tài):引起進程等待的事件發(fā)生之后,相應(yīng)的掛起等待態(tài)進程將轉(zhuǎn)換為掛起就緒態(tài)。
- 掛起等待態(tài)→等待態(tài):當(dāng)一個進程等待一個事件時,原則上不需要把它調(diào)入內(nèi)存。但是,當(dāng)其它進程退出后,主存已經(jīng)有了足夠的自由空間,而某個掛起等待態(tài)進程具有較高的優(yōu)先級并且操作系統(tǒng)已經(jīng)得知導(dǎo)致它阻塞的事件即將結(jié)束,便可能發(fā)生這一狀態(tài)變化。
- 掛起就緒態(tài)→就緒態(tài):內(nèi)存中沒有就緒態(tài)進程,或掛起就緒態(tài)進程具有比就緒態(tài)進程更高的優(yōu)先級,將把掛起就緒態(tài)進程轉(zhuǎn)換成就緒態(tài)。
- 運行態(tài)→掛起就緒態(tài):當(dāng)一個高優(yōu)先級等待進程的等待事件結(jié)束后,它將搶占CPU,而此時主存不夠,從而可能導(dǎo)致正在運行的進程轉(zhuǎn)化為掛起就緒態(tài)。運行態(tài)的進程也可以自己掛起自己。
- 新建態(tài)→掛起就緒態(tài):根據(jù)系統(tǒng)當(dāng)前資源狀況和性能要求,可以將新建進程對換出去成為掛起就緒態(tài)。
掛起的進程將不參與低級調(diào)度直到它們被對換進主存。
(5)掛起進程具有如下特征
- 該進程不能立即被執(zhí)行。
- 掛起進程可能會等待事件,但所等待事件是獨立于掛起條件的,事件結(jié)束并不能導(dǎo)致進程具備執(zhí)行條件。
- 進程進入掛起狀態(tài)是由于操作系統(tǒng)、父進程或進程本身阻止它的運行。
- 結(jié)束進程掛起狀態(tài)的命令只能通過操作系統(tǒng)或父進程發(fā)出。
練習(xí)題
針對分時系統(tǒng),進程的三種狀態(tài)之間有幾種可能的轉(zhuǎn)換關(guān)系?
在單處理機的分時系統(tǒng)中,分配給進程P的時間片用完后,系統(tǒng)進行切換,結(jié)果調(diào)度到的仍然是進程P。有可能出現(xiàn)上述情形嗎?如果可能請說明理由。
解答:
有可能出現(xiàn)上述情況。
- 例如,若在進程P時間片用完后,被迫回到就緒隊列時,就緒隊列為空,這樣進程P就是就緒隊列中惟一的一個進程,于是調(diào)度程序選中的進程必是進程P;
- 又如在按優(yōu)先級調(diào)度的系統(tǒng)中,就緒隊列按進程優(yōu)先級排列,在進程P時間片用完之后回到就緒隊列時,若其優(yōu)先級高于當(dāng)前就緒隊列中的其他進程程,則它將排在就緒隊列之首,從而再次被調(diào)度程序選中并投入運行。
7、進程控制塊
進程控制塊中的信息
1)進程標(biāo)識符信息 :每個進程都必須有一個唯一的標(biāo)識符
- 內(nèi)部標(biāo)識符:便于系統(tǒng)使用
- 外部標(biāo)識符:便于用戶使用
2)處理機狀態(tài)信息(現(xiàn)場信息)
處理機狀態(tài)信息主要由處理機的各種寄存器中的內(nèi)容組成。處理機運行時的信息存放在寄存器中,當(dāng)被中斷時這些信息要存放在PCB中。
- 通用寄存器
- 指令計數(shù)器
- 程序狀態(tài)字PSW
- 用戶棧指針
- 指向該進程頁表的指針
3)進程調(diào)度信息
- 進程優(yōu)先級
- 進程調(diào)度所需的其他信息(執(zhí)行時間等)
- 事件
- 進程狀態(tài)
4)進程控制信息
- 程序和數(shù)據(jù)的地址
- 進程同步和通信機制
- 資源清單(打開文件表等)
- 鏈接指針
練習(xí)題
1.“程序狀態(tài)字寄存器內(nèi)容”屬于進程控制塊的?
A、標(biāo)識信息
B、控制信息
C、現(xiàn)場信息
D、調(diào)度信息
2.進程控制塊中的現(xiàn)場信息是在(D)保存的。
A、創(chuàng)建進程時
B、處理器執(zhí)行指令時
C、中斷源申請中斷時
D、中斷處理程序處理中斷前
進程組織方式
1)線性方式:
2)索引方式
CPU模式和進程類型
進程的兩大類:
系統(tǒng)進程:運行在內(nèi)核模式,執(zhí)行操作系統(tǒng)代碼;
用戶進程:運行在用戶模式,執(zhí)行用戶程序代碼。
練習(xí)題
1.判斷:操作系統(tǒng)通過PCB來控制和管理進程,用戶進程也可以對PCB中的信息進行讀寫操作。
答案: 錯誤
2.在一個單處理機系統(tǒng)中,若有10個用戶進程,則處于“運行”、“阻塞”、“就緒”狀態(tài)的進程數(shù)量最小和最大值分別可能是多少?
答案:
運行態(tài):最少0個,最多1個;
阻塞態(tài):最少0個,最多10個;
就緒態(tài):最少0個,最多9個。
3.某系統(tǒng)的進程狀態(tài)變遷如圖所示(設(shè)該系統(tǒng)的進程調(diào)度方式為可剝奪方式)
1)說明進程發(fā)生變遷1、3、5的原因;
2)當(dāng)發(fā)生一個變遷時可能引起另一個變遷的發(fā)生,則這兩個變遷稱為因果變遷。下述因果變遷是否會發(fā)生,如果有可能的話,會在什么情況下發(fā)生? (a) 3→5 (b) 3→2 ? 2→1 (d) 4→1 (e) 4→5
3)根據(jù)狀態(tài)變遷圖說明該系統(tǒng)的調(diào)度策略和調(diào)度效果。
答案:
1)系統(tǒng)中當(dāng)前運行著的進程因中止、結(jié)束或等待某個I/O事件而退出運行,并且此時高優(yōu)先就緒隊列中沒有等待進程,發(fā)生變遷1;
當(dāng)運行著的進程發(fā)出I/O請求,需要等待I/O事件完成才能繼續(xù)進行,發(fā)生變遷3;
當(dāng)有高優(yōu)先級進程進入就緒隊列,并且運行著的進程是低優(yōu)先級進程時,高優(yōu)先級進程會搶占CPU,發(fā)生變遷5。
2)
(a) 3→5 是因果變遷;
(b) 3→2 不是;
? 2→1 是;
(d) 4→1 不是;
(e) 4→5 是。
3)此系統(tǒng)采用根據(jù)進程優(yōu)先級分別設(shè)置高優(yōu)先就緒隊列和低優(yōu)先就緒隊列:
高優(yōu)先進程運行100ms 后就降為低優(yōu)先就緒隊列,以使短進程優(yōu)先完成;
對低優(yōu)先就緒隊列中的進程采用時間片輪轉(zhuǎn)法(時間片程度為500ms),確保每個進程都有運行機會;
同時,對于進行了I/O操作的進程賦予一個高優(yōu)先級,保證對外界事件可以盡快響應(yīng)。
4.程序并發(fā)執(zhí)行時失去封閉性和可再現(xiàn)性的主要原因是:
答案: 運行程序的相互制約
5.處于等待狀態(tài)的進程也希望占有處理機
答案: 錯
6.簡述進程控制塊的作用。
答案:
- 進程控制塊是進程存在的唯一標(biāo)志;
- 是操作系統(tǒng)對進程進行控制和管理的依據(jù);
- 記錄進程的各種屬性,描述進程的動態(tài)變化過程;
- 與進程一一對應(yīng)。
練習(xí)題
1.系統(tǒng)中有N(N>2)個進程,并且當(dāng)前沒有執(zhí)行進程調(diào)度程序,則(D)不可能發(fā)生.
A.有一個運行進程,沒有就緒進程,還有N-1個進程處于等待狀態(tài)
B.有一個運行進程, N-1個就緒進程, 沒有進程處于等待狀態(tài)
C.有一個運行進程和一個就緒進程,還有N-2個進程處于等待狀態(tài)
D.沒有運行進程,但有兩個就緒進程,還有N-2個進程處于等待狀態(tài)
2.在進程管理中,當(dāng)?時,進程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。
A.進程被進程調(diào)度程序選中
B.等待某一事件
C.等待的事件發(fā)生
D. 時間片用完
3.分配到必要的資源并獲得處理機時的進程狀態(tài)是(B)。
A.就緒狀態(tài)
B.執(zhí)行狀態(tài)
C.阻塞狀態(tài)
D.撤消狀態(tài)
4.進程的三個基本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進程由就緒狀態(tài)變?yōu)檫\行狀態(tài)的條件是(D)。
A.時間片用完
B.等待某事件發(fā)生
C.等待的某事件已發(fā)生
D.被進程調(diào)度程序選中
5.進程的三個基本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進程由運行狀態(tài)變?yōu)樽枞麪顟B(tài)的條件是(B)。
A.時間片用完
B.等待某事件發(fā)生
C.等待的某事件已發(fā)生
D.被進程調(diào)度程序選中
6.下列的進程狀態(tài)變化中,?變化是不可能發(fā)生的。
A.運行→就緒
B.就緒→運行
C.等待→運行
D.等待→就緒
7.一個運行的進程用完了分配給它的時間片后,它的狀態(tài)變?yōu)?A)。
A.就緒
B.等待
C.運行
D.由用戶自己確定
8.操作系統(tǒng)通過(B)對進程進行管理。
A. JCB
B. PCB
C. DCT
D. CHCT
9.一個進程被喚醒意味著(D)。
A. 該進程重新占有了CPU
B. 它的優(yōu)先權(quán)變?yōu)樽畲?br /> C. 其PCB移至等待隊列隊首
D. 進程變?yōu)榫途w狀態(tài)
10.多道程序環(huán)境下,操作系統(tǒng)分配資源以?為基本單位。
A. 程序
B. 指令
C. 進程
D. 作業(yè)
2.3 進程控制
- 進程控制是進程管理中最基本的功能
用于創(chuàng)建和撤銷進程;
控制進程狀態(tài)的轉(zhuǎn)換; - 進程控制是操作系統(tǒng)的內(nèi)核通過原語來實現(xiàn)的
進程的創(chuàng)建與終止
進程的阻塞與喚醒
進程的掛起與激活
原語(primitive):由若干條指令構(gòu)成的“原子操作(atomic operation)”過程,作為一個整體而不可分割--要么全都完成,要么全都不做。許多系統(tǒng)調(diào)用就是原語。
特征:“不可中斷性”。
實現(xiàn)方法:屏蔽中斷。
2.3.1 進程創(chuàng)建
1. 進程圖
- 描述進程的家族關(guān)系的有向樹.
- 進程Pi創(chuàng)建了進程Pj,則Pi是Pj的父進程, Pj是Pi的子進程,用一條由進程Pi指向進程Pj的有向邊來描述。
- 創(chuàng)建父進程的進程為祖先進程,由此形成進程樹,樹根為進程家族的祖先。
計算機系統(tǒng)的啟動過程- BIOS啟動(POST加電自檢,讀取MBR)
- 系統(tǒng)引導(dǎo)(bootloder)
- 啟動內(nèi)核
- 初始化系統(tǒng)
2.引起創(chuàng)建進程的事件
- 用戶登錄
- 作業(yè)調(diào)度
- 提供服務(wù)
- 應(yīng)用請求
練習(xí)題
1.[2009年考研題 24]下列選項中,導(dǎo)致創(chuàng)建新進程的操作是(C)
I 用戶登陸成功
II 設(shè)備分配
III 啟動程序執(zhí)行
A、僅I和II
B、僅II和III
C、僅I和III
D、I、II、III
3.進程的創(chuàng)建過程
操作系統(tǒng)發(fā)現(xiàn)有創(chuàng)建新進程的事件后,調(diào)用進程創(chuàng)建原語(CreateProcess/Fork)創(chuàng)建新進程。
創(chuàng)建過程:
(1)申請空白PCB
(2)為新進程分配資源
(3)初始化PCB
(4)將新進程插入就緒隊列
父進程創(chuàng)建子進程與主程序調(diào)用子程序有何不同?
- 父進程創(chuàng)建子進程后,父進程與子進程同時執(zhí)行;
- 主程序調(diào)用子程序,主程序暫停在調(diào)用點,子程序開始執(zhí)行,直到子程序執(zhí)行完畢返回,主程序開始執(zhí)行。
2.3.2 進程終止
1. 引起進程終止的事件
越界錯誤、保護錯、非法指令、特權(quán)指令錯、運行超時
- 操作員或操作系統(tǒng)干預(yù)
- 父進程請求
- 父進程終止
進程的終止過程
(1) 根據(jù)被終止進程的標(biāo)識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程的狀態(tài)。
(2) 若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,置調(diào)度標(biāo)志為真,用于指示該進程被終止后應(yīng)重新進行進程調(diào)度。
(3) 若該進程有子孫進程,應(yīng)將其所有子孫進程予以終止,以防他們成為不可控的進程。
(4) 將被終止進程所擁有的全部資源,或歸還其父進程,或歸還系統(tǒng)。
(5) 將被終止進程的PCB從所在隊列或鏈表中移出,掛入空白PCB隊列。
2.3.3 進程的阻塞與喚醒
(block與wakeup原語)
1. 引起進程阻塞的事件
2.進程阻塞過程
- 調(diào)用阻塞原語阻塞自己,終止該進程的執(zhí)行,將PCB中的狀態(tài)改為阻塞,并加入到阻塞隊列中;
- 然后轉(zhuǎn)進程調(diào)度,將處理機分配給另一進程,并進行進程切換以及處理機狀態(tài)的保護與重新設(shè)置。
3.進程喚醒過程
- 阻塞進程等待的事件發(fā)生,有關(guān)進程調(diào)用喚醒原語把等待該事件的進程喚醒。
- 把阻塞進程從等待該事件的阻塞隊列中移出,將其PCB中的現(xiàn)行狀態(tài)改為就緒,將PCB插入到就緒隊列中。
- 阻塞原語與喚醒原語作用相反,成對使用
2.3.4 進程掛起/激活
(suspend/active)
1.進程的掛起
當(dāng)出現(xiàn)引起進程掛起的事件時,系統(tǒng)利用掛起原語將指定進程掛起。
- 檢查被掛起進程的狀態(tài);
- 若處于活動就緒,則改為靜止就緒;
- 若處于活動阻塞,則改為靜止阻塞;
- 將該進程PCB復(fù)制到內(nèi)存指定區(qū)域;
- 若掛起的進程正在執(zhí)行,則重新進行進程調(diào)度。
2.進程激活
- 當(dāng)發(fā)生激活進程的事件時,系統(tǒng)利用激活原語將指定進程激活。
- 激活原語先將進程從外存調(diào)入內(nèi)存,檢查該進程的狀態(tài);
若處于靜止就緒,則改為活動就緒;
若處于靜止阻塞,則改為活動阻塞;
若采用搶占調(diào)度策略,則新進程進入就緒隊列時,檢查是否要重新進行進程調(diào)度。
練習(xí)題
1.只作用于一個進程一次的原語是(A)
A.創(chuàng)立
B.解掛
C.阻塞
D.掛起
2.給出用于進程控制的四種常見的原語 創(chuàng)建原語 、 撤消原語 、 阻塞原語 、 喚醒原語 。
3.操作系統(tǒng)對進程的管理和控制主要是通過控制原語實現(xiàn)的。
錯誤: 對
4.原語的執(zhí)行是屏蔽中斷的。
錯誤: 對
總結(jié)
以上是生活随笔為你收集整理的『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海外服务器如何加速
- 下一篇: 『操作系统』 进程的描述与控制 Part