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的地址芥喇。用專門的單元記錄各索引表的首地址西采。