PCB進(jìn)程控制塊
獨立運行基本單位的標(biāo)志:創(chuàng)建進(jìn)程時創(chuàng)建PCB,進(jìn)程結(jié)束時回PCB,進(jìn)程隨之消亡。系統(tǒng)是通過PCB,感知進(jìn)程的存在。PCB已成為,進(jìn)程存在于系統(tǒng)中的唯一標(biāo)志。
實現(xiàn)間斷性運行方式:進(jìn)程暫停運行時,必須保留,運行時的CPU等相關(guān)信息。進(jìn)程被再次運行時,需恢復(fù)CPU等相關(guān)信息。
提供進(jìn)程管理需要的信息:當(dāng)進(jìn)程開始運行時,根據(jù)該進(jìn)程PCB中,記錄的程序和數(shù)據(jù),在內(nèi)存或外存中起始地址指針,找到相應(yīng)的程序和數(shù)據(jù)。
提供進(jìn)程調(diào)度需要的信息:只有處于就緒狀態(tài)的進(jìn)程,才能被調(diào)度。而進(jìn)程的狀態(tài)就記錄在PCB中、以及優(yōu)先級、等待時間、已執(zhí)行時間等其他信息。
實現(xiàn)與其他進(jìn)程的同步與通信:進(jìn)程同步機制,用于實現(xiàn)多進(jìn)程協(xié)調(diào)運行。在PCB中,具有實現(xiàn)進(jìn)程通信的區(qū)域或通信隊列指針等。
PCB進(jìn)程控制塊中的信息:PCB中的信息大致上可分為4類,分別是:進(jìn)程標(biāo)識符、CPU狀態(tài)、調(diào)度信息、控制信息。
進(jìn)程標(biāo)識符:分外部標(biāo)識符和內(nèi)部標(biāo)識符,外部標(biāo)識符即進(jìn)程名稱,可由父進(jìn)程指定,通常包括字符和數(shù)字的組成。內(nèi)部標(biāo)識符,由操作系統(tǒng)提供的,具有唯一性的進(jìn)程ID。
CPU狀態(tài):主要由各種寄存器中內(nèi)容組成,如通用寄存器、指令計數(shù)器(下一條指令的地址)、程序狀態(tài)(狀態(tài)信息、條件碼、執(zhí)行方式、屏蔽中斷等標(biāo)志)和棧指針(指向用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址的系統(tǒng)棧的棧頂)構(gòu)成。
調(diào)度信息:包含進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級、其他信息、事件(阻塞原因)。
進(jìn)程狀態(tài),是進(jìn)程調(diào)度和對換時的依據(jù),優(yōu)先級高的進(jìn)程,應(yīng)優(yōu)先獲得CPU執(zhí)行。
控制進(jìn)程所必須的信息,包括程序和數(shù)據(jù)的存儲地址,以便調(diào)度該進(jìn)程執(zhí)行時,能從PCB中找到其程序和數(shù)據(jù),進(jìn)程同步和通信機制,如消息隊列、信號量等。
進(jìn)程的創(chuàng)建和終止過程
創(chuàng)建進(jìn)程過程:向操作系統(tǒng)申請空白PCB及進(jìn)程ID、分配運行所需的資源、初始化PCB、等待插入進(jìn)程調(diào)度就緒隊列。
相關(guān)資源或從操作系統(tǒng)或從父進(jìn)程獲得,資源需求需提前告知,操作系統(tǒng)或父進(jìn)程好為其分配資源。
PCB至少有2種信息需要初始化
1.標(biāo)識信息,即將本進(jìn)程ID和父進(jìn)程ID填入PCB控制塊中
2.狀態(tài)信息,指令計數(shù)器指向程序的入口地址、棧指針指向棧頂控制信息。
進(jìn)程的終止分為:讀取進(jìn)程狀態(tài)、終止進(jìn)程、終止子孫進(jìn)程、釋放資源、移出PCB隊列。
操作系統(tǒng)通過進(jìn)程ID從PCB集合中檢索出該進(jìn)程的PCB,從中讀出該進(jìn)程的狀態(tài)。
如果該進(jìn)程狀態(tài)為執(zhí)行態(tài),則終止進(jìn)程的執(zhí)行,并重置調(diào)度標(biāo)志位真。
如果該進(jìn)程擁有子孫進(jìn)程,則一并將所有子孫進(jìn)程終止,防止子孫進(jìn)程成為僵尸進(jìn)程等不可控的進(jìn)程。
接著釋放資源,將資源歸還給操作系統(tǒng)或父進(jìn)程。最后就是移出PCB隊列了,等待其他進(jìn)程搜集信息。
進(jìn)程阻塞和喚醒的事件
1.請求系統(tǒng)服務(wù)而得不到滿足時,如問系統(tǒng)請求打印。
2.啟動的操作需同步時:如該操作和請求該操作的進(jìn)程需同步運行。
3.新數(shù)據(jù)尚未到達(dá):如進(jìn)程A寫,進(jìn)程B讀,則A未寫,完B不能讀。
4.無新工作可做。
進(jìn)程的掛起和激活
1.進(jìn)程的掛起過程,由進(jìn)程自己,或其父進(jìn)程suspend原語完成。將該進(jìn)程PCB移到指定區(qū)域,注意狀態(tài)的改變,有可能要重新調(diào)度。
2.進(jìn)程的激活過程,激活active原語激活進(jìn)程。激活原語將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài)并進(jìn)行相應(yīng)操作。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6896瀏覽量
123755 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
204瀏覽量
13996 -
系統(tǒng)
+關(guān)注
關(guān)注
1文章
1019瀏覽量
21431 -
PCB
+關(guān)注
關(guān)注
1文章
1825瀏覽量
13204
發(fā)布評論請先 登錄
相關(guān)推薦
評論