第2章 2-1進程與PCB

2.1 進程的基本概念

1.關(guān)于程序執(zhí)行順序

1)引入前趨圖

????????描述進程執(zhí)行前后關(guān)系的圖

????????有向無循環(huán)圖(DAG)

????????????????Pi結(jié)點:描述一個程序段、進程茧泪、或一條語句。

????????????????有向邊“->”:結(jié)點之間的偏序或前序關(guān)系

????????????????Pi->Pk檀夹,則Pi是Pk的直接前趨蛋逾,Pk是Pi的直接后繼。



2)程序順序執(zhí)行時的特征


(1) 順序性

? ????????????????? 處理機的操作嚴格按程序規(guī)定順序執(zhí)行

(2) 封閉性

????????????????? ? 程序一旦開始執(zhí)行懊悯,其計算結(jié)果不受外界因素影響蜓谋。

(3) 可再現(xiàn)性

????????????????? ? 程序執(zhí)行只要初始條件一樣,不論如何停頓炭分,重復執(zhí)行多少次結(jié)果都一樣桃焕。

3)程序的并發(fā)執(zhí)行分析

若有N個類似前頁的程序并發(fā)執(zhí)行:

要符合前趨關(guān)系

????????????????Ii->Ci; Ci->Pi;

????????????????Ii->Ii+1;Ci->Ci+1;

????????????????Pi->Pi+1;

并發(fā)不是隨意的

????????????????如C1,C2無法交替執(zhí)行,只能順序執(zhí)行捧毛;但C2和P1則沒有嚴格時間關(guān)系


又如:四個程序段

????????????????S1:? a:=x+2?

????????????????S2:? b:=y+4?

????????????????S3:? c:=a+b

????????????????S4:? d:=c+b

S1观堂、S2間沒有嚴格的順序關(guān)系,CPU先調(diào)度哪個沒有影響岖妄。

但是型将,若對有嚴格順序關(guān)系的程序調(diào)度錯誤,如s1荐虐、s3七兜,執(zhí)行與結(jié)果必然會產(chǎn)生問題。


并發(fā)提高效率,但,并發(fā)也帶來問題

多個程序如果無序并發(fā)福扬,得到的只能是混亂的執(zhí)行結(jié)果腕铸,多道程序運行,走走停停的可能順序有很多種铛碑,符合前趨圖的關(guān)系才是合理并發(fā)狠裹。

4)并發(fā)程序執(zhí)行時的特征

間斷性(運行表現(xiàn))

? ? ???????????????? 多道 -> 程序并發(fā)執(zhí)行-> 要共享系統(tǒng)的資源 -> 形成相互制約的關(guān)系->? 相互制約導致并發(fā)程序具有“執(zhí)行——暫停——執(zhí)行”這種間斷性的活動規(guī)律汽烦。

失去封閉性

????????????????共享資源涛菠,資源狀態(tài)由多道程序改變,程序運行失去封閉性撇吞。即程序運行受其他程序的影響俗冻。

結(jié)果不可再現(xiàn)性

????????????????結(jié)果不確定,程序執(zhí)行將沒有任何意義牍颈。



2. 進程

OS利用“進程實體”控制程序執(zhí)行就產(chǎn)生了“進程”迄薄。

????????????????進程就是用于描述、控制程序在內(nèi)存中并發(fā)運行的一個東東煮岁。

1)進程的定義

進程是進程實體的運行過程讥蔽,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位涣易。

????????????????*可并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集合上的一次執(zhí)行過程。

????????????????*程序的一次執(zhí)行

????????????????*是一個程序與其數(shù)據(jù)一道通過處理機的執(zhí)行所發(fā)生的活動冶伞。

????????????????……

2)進程的特征

1.結(jié)構(gòu)性特征新症,進程的根本——PCB

2.動態(tài)性

????????????????進程實質(zhì)上是進程實體的一次有生命期的執(zhí)行過程。程序只是靜態(tài)的一組有序指令碰缔。

????????????????進程最基本特征

3.并發(fā)性

????????????????多個進程實體同存于內(nèi)存中账劲,在一段時間內(nèi)同時運行。

????????????????有PCB的程序才能并發(fā)金抡。

4.獨立性

5.異步性

區(qū)別進程與程序

動與靜:

????????????????進程是動態(tài)的瀑焦,程序是靜態(tài)的:程序是有序代碼的集合;進程是程序的執(zhí)行梗肝。

永久與暫時:

????????????????進程是暫時的榛瓮,程序是永久的:進程是一個狀態(tài)變化的過程,程序可長久保存巫击。

結(jié)構(gòu):

????????????????進程的組成包括程序禀晓、數(shù)據(jù)和進程控制塊(進程各種控制信息)。

進程與程序的對應關(guān)系:

????????????????都可1對n坝锰。通過多次執(zhí)行粹懒,一個程序可對應多個進程;通過調(diào)用關(guān)系顷级,一個進程可包括多個程序凫乖。

3)進程的基本狀態(tài)

進程執(zhí)行時的間斷性,決定了其具有多種狀態(tài)弓颈。把握各進程所屬的狀態(tài)對進程控制至關(guān)重要帽芽。與進程執(zhí)行相關(guān)的各種共享資源有:

CPU、存儲器翔冀、I/O設備导街、時間片

注意體會這些資源在進程狀態(tài)變化中對進程運行的影響。

進程的三種基本狀態(tài)

(1)就緒狀態(tài)(Ready)

? ? ????????????? 進程獲得除CPU之外的所有必需資源纤子,一旦得到CPU控制權(quán)搬瑰,可立即運行。

(2)運行狀態(tài)(Running)

? ? ????????????? 進程已獲得所有運行必需的資源控硼,正在處理機上執(zhí)行跌捆。

(3)阻塞狀態(tài)(Blocked)

? ? ????????????? 正在執(zhí)行的進程由于發(fā)生某事件(請求I/O、申請緩沖象颖、時間片到)而暫時無法執(zhí)行時,便放棄CPU后暫停



各種狀態(tài)下的進程隊列

????????????????單處理機系統(tǒng)姆钉,執(zhí)行態(tài)的進程只有一個说订;

????????????????就緒態(tài)抄瓦、阻塞態(tài)的進程可有多個。一般講它們分別排稱一個隊列陶冷,稱就緒隊列钙姊、阻塞隊列。

????????????????阻塞隊列有的會根據(jù)不同原因再排成多個隊列埂伦。

不少系統(tǒng)除上述三種狀態(tài)煞额,還有其他一些細節(jié)狀態(tài):掛起、新建沾谜、終止狀態(tài)等膊毁。

* 掛起狀態(tài) *

????????????????就緒的、但不會被調(diào)度執(zhí)行

產(chǎn)生原因

????????????????用戶自己請求暫停

????????????????父進程檢查基跑、協(xié)調(diào)子進程時掛起子進程

????????????????調(diào)節(jié)負荷的需要婚温,負載過重,為保證實時任務的控制媳否,掛起一些不重要的進程

????????????????操作系統(tǒng)的檢查和記錄需要掛起進程栅螟。


*Linux的進程狀態(tài)

創(chuàng)建狀態(tài):

????????????????Pcb已建立,但資源分配還未完成

終止狀態(tài):

????????????????不可再執(zhí)行篱竭,歸還資源力图,保留一份狀態(tài)碼好計時統(tǒng)計數(shù)據(jù)。

????????????????增加了操作系統(tǒng)管理進程的靈活性掺逼。如os可根據(jù)性能和內(nèi)存容量限制吃媒,推遲創(chuàng)建態(tài)轉(zhuǎn)入就緒態(tài)


3. 進程控制塊PCB

進程實體:代碼段+數(shù)據(jù)段+PCB

????????????????進程控制塊定義Process Control Block

????????????????????????????????存放進程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進程控制塊。

OS對進程進行控制和管理圍繞PCB進行

分析OS調(diào)度某進程的過程

????????????????查該進程的PCB坪圾,獲取其狀態(tài)晓折、優(yōu)先級

????????????????根據(jù)PCB保存的處理機狀態(tài)信息,恢復現(xiàn)場

????????????????根據(jù)PCB中程序和數(shù)據(jù)的內(nèi)存始址兽泄,找到其程序和數(shù)據(jù)

????????????????執(zhí)行中的同步信號等也要查閱PCB漓概,暫停時進程執(zhí)行的處理機環(huán)境保存回PCB。

* Pcb的重要性

進程控制塊是進程存在的唯一標志:

????????????????進程創(chuàng)建時病梢,PCB建立并伴隨進程運行的全過程胃珍,直到進程撤消而撤消。PCB就象我們的戶口蜓陌。

????????????????進程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu)

1)進程控制塊中的信息(pcb內(nèi))


(1)進程標識符信息

????????每個進程都必須有一個唯一的標識符

????????????????內(nèi)部標示符:唯一的數(shù)字序號觅彰,方便系統(tǒng)使用

????????????????外部標示符:方便用戶使用,用戶進程訪問某進程時使用

(2)處理機狀態(tài)信息

????????主要由處理機的各種寄存器中的內(nèi)容組成钮热,被中斷時這些信息要存放到PCB填抬。

????????????????通用寄存器:用戶程序訪問的,暫存信息

????????????????指令計數(shù)器:下一條指令地址

????????????????程序狀態(tài)字PSW:一些狀態(tài)信息

????????????????用戶棧指針:每個用戶進程都有的存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址的一組系統(tǒng)棧隧期。

(3)進程調(diào)度信息

????????????????進程狀態(tài)

????????????????進程優(yōu)先級

????????????????進程調(diào)度所需的其他信息:調(diào)度算法相關(guān)信息

????????????????事件:狀態(tài)轉(zhuǎn)換有關(guān)的事件

(4)進程控制信息

????????程序和數(shù)據(jù)的地址(單個進程)

????????????????數(shù)據(jù)所在的內(nèi)外存地址

????????進程同步和通信機制(多進程間)

????????????????同步和通信機制的信號量飒责、消息隊列指針等

????????資源清單

????????鏈接指針(PCB的組織)

????????????????本PCB所在隊列的下一個進程PCB首地址赘娄。

2)PCB信息的存放

????????系統(tǒng)運行中有若干個程序的PCB,它們常駐內(nèi)存的PCB區(qū)宏蛉。

????????采用的數(shù)據(jù)結(jié)構(gòu):PCB結(jié)構(gòu)體遣臼,PCB鏈表或隊列

3)PCB的組織方式(重點)

系統(tǒng)中存在數(shù)十個PCB,如何有效的管理它們拾并。

鏈接方式

????????????????同一狀態(tài)的PCB揍堰,依靠鏈接指針鏈接成隊列。就緒隊列嗅义;若干個阻塞隊列屏歹;空白隊列(PCB區(qū)的空PCB塊)


索引方式

????????????????同狀態(tài)的PCB同樣集中記錄,但以索引表的方式記錄PCB的地址芥喇。用專門的單元記錄各索引表的首地址西采。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市继控,隨后出現(xiàn)的幾起案子械馆,更是在濱河造成了極大的恐慌,老刑警劉巖武通,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霹崎,死亡現(xiàn)場離奇詭異,居然都是意外死亡冶忱,警方通過查閱死者的電腦和手機尾菇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囚枪,“玉大人派诬,你說我怎么就攤上這事×凑樱” “怎么了默赂?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長括勺。 經(jīng)常有香客問我缆八,道長,這世上最難降的妖魔是什么疾捍? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任奈辰,我火速辦了婚禮,結(jié)果婚禮上乱豆,老公的妹妹穿的比我還像新娘奖恰。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布房官。 她就那樣靜靜地躺著趾徽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翰守。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天疲酌,我揣著相機與錄音蜡峰,去河邊找鬼。 笑死朗恳,一個胖子當著我的面吹牛湿颅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粥诫,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼油航,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了怀浆?” 一聲冷哼從身側(cè)響起谊囚,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稳捆,失蹤者是張志新(化名)和其女友劉穎募壕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂培,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡沙合,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年奠伪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片首懈。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡绊率,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出究履,到底是詐尸還是另有隱情滤否,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布挎袜,位于F島的核電站顽聂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盯仪。R本人自食惡果不足惜紊搪,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望全景。 院中可真熱鬧耀石,春花似錦、人聲如沸爸黄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至梆奈,卻和暖如春野崇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亩钟。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工乓梨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人清酥。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓扶镀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焰轻。 傳聞我的和親對象是個殘疾皇子臭觉,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355