版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

PCB

百度百科
原創(chuàng)
全球最大中文百科全書
收藏

簡介

PCB中記錄了操作系統(tǒng)所需的,用于描述進程的當前情況以及控制進程運行的全部信息。PCB的作用是使一個在多道程序環(huán)境下不能獨立運行的程序(含數(shù)據(jù)),成為一個能獨立運行的基本單位,一個能與其他進程并發(fā)執(zhí)行的進程?;蛘哒f,OS是根據(jù)PCB來對并發(fā)執(zhí)行的進程進行控制和管理的。例如,當OS要調(diào)度某進程執(zhí)行時,要從該進程的PCB中查處其現(xiàn)行狀態(tài)及優(yōu)先級;在調(diào)度到某進程后,要根據(jù)其PCB中所保存的處理機狀態(tài)信息,設(shè)置該進程恢復(fù)運行的現(xiàn)場,并根據(jù)其PCB中的程序和數(shù)據(jù)的內(nèi)存始址,找到其程序和數(shù)據(jù);進程在執(zhí)行過程中,當需要和與之合作的進程實現(xiàn)同步,通信或者訪問文件時,也都需要訪問PCB;當進程由于某種原因而暫停執(zhí)行時,又須將器斷點的處理機環(huán)境保存在PCB中??梢姡谶M程的整個生命期中,系統(tǒng)總是通過PCB對進程進行控制的,即系統(tǒng)是根據(jù)進程的PCB而不是任何別的什么而感知到該進程的存在的。所以說,PCB是進程存在的唯一標志。

組成

PCB進程控制塊是進程的靜態(tài)描述,由PCB、有關(guān)程序段和該程序段對其進行操作的數(shù)據(jù)結(jié)構(gòu)集三部分組成。

在Unix或類Unix系統(tǒng)中,進程是由進程控制塊,進程執(zhí)行的程序,進程執(zhí)行時所用數(shù)據(jù),進程運行使用的工作區(qū)組成。其中進程控制塊是最重要的一部分。

進程控制塊是用來描述進程的當前狀態(tài),本身特性的數(shù)據(jù)結(jié)構(gòu),是進程中組成的最關(guān)鍵部分,其中含有描述進程信息和控制信息,是進程的集中特性反映,是操作系統(tǒng)對進程具體進行識別和控制的依據(jù)。

PCB一般包括:

1、程序ID(PID、進程句柄):它是唯一的,一個進程都必須對應(yīng)一個PID。PID一般是整形數(shù)字

2、特征信息:一般分系統(tǒng)進程、用戶進程、或者內(nèi)核進程等

3、進程狀態(tài):運行、就緒、阻塞,表示進程現(xiàn)的運行情況

4、優(yōu)先級:表示獲得CPU控制權(quán)的優(yōu)先級大小

5、通信信息:進程之間的通信關(guān)系的反映,由于操作系統(tǒng)會提供通信信道

6、現(xiàn)場保護區(qū):保護阻塞的進程用

7、資源需求、分配控制信息

8、進程實體信息,指明程序路徑和名稱,進程數(shù)據(jù)在物理內(nèi)存還是在交換分區(qū)(分頁)中

9、其他信息:工作單位,工作區(qū),文件信息等

作用

進程控制塊

進程控制塊的作用是使一個在多道程序環(huán)境下不能獨立運行的程序(包含數(shù)據(jù)),成為一個能獨立運行的基本單位,一個能與其它進程并發(fā)執(zhí)行的進程。

程序段

進程中能被進程調(diào)度程序在CPU上執(zhí)行的程序代碼段。

數(shù)據(jù)段

一個進程的數(shù)據(jù)段,可以是進程對應(yīng)的程序加工處理的原始數(shù)據(jù),也可以是程序執(zhí)行后產(chǎn)生的中間或最終數(shù)據(jù)。

包含信息

在不同的操作系統(tǒng)中對進程的控制和管理機制不同,PCB中的信息多少也不一樣,通常PCB應(yīng)包含如下一些信息。

進程標識符信息

每個進程都必須有一個唯一的標識符,可以是字符串,也可以是一個數(shù)字。UNIX系統(tǒng)中就是一個整型數(shù)。在進程創(chuàng)建時由系統(tǒng)賦予。進程標識符用于唯一的標識一個進程。一個進程通常有以下兩種標識符。

外部標識符。由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是用戶(進程)訪問該進程使用。外部標識符便于記憶,如:計算進程、打印進程、發(fā)送進程、接收進程等。

內(nèi)部標識符:為了方便系統(tǒng)使用而設(shè)置的。在所有的OS中,都為每一個進程賦予一個唯一的整數(shù),作為內(nèi)部標識符。它通常就是一個進程的符號,為了描述進程的家族關(guān)系,還應(yīng)該設(shè)置父進程標識符以及子進程標識符。還可以設(shè)置用戶標識符,來指示該進程由哪個用戶擁有。

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

說明進程當前所處的狀態(tài)。為了管理的方便,系統(tǒng)設(shè)計時會將相同的狀態(tài)的進程組成一個隊列,如就緒進程隊列,等待進程則要根據(jù)等待的事件組成多個等待隊列,如等待打印機隊列、等待等。處理機狀態(tài)信息主要是由處理機各種寄存器中的內(nèi)容所組成。

通用寄存器。又稱為用戶可視寄存器,可被用戶程 序訪問,用于暫存信息。

指令寄存器。存放要訪問的下一條指令的地址。

程序狀態(tài)字PSW。其中含有狀態(tài)信息。(條件碼、 執(zhí)行方式、中斷屏蔽標志等)

用戶棧指針。每個用戶進程有一個或若干個與之相 關(guān)的系統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。

進程調(diào)度信息

在PCB中還存放了一些與進程調(diào)度和進程對換有關(guān)的信息。

(1)進程狀態(tài)。指明進程當前的狀態(tài),作為進程調(diào)度和對換時的依據(jù)。

(2)進程優(yōu)先級。用于描述進程使用處理機的優(yōu)先級別的一個整數(shù),優(yōu)先級高的進程優(yōu)先獲得處理機。

(3)進程調(diào)度所需要的其他信息。(進程已等待CPU的時間總和、進程已執(zhí)行的時間總和)

(4)事件。這是進程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的事件。(阻塞原因)

進程上下文

是進程執(zhí)行活動全過程的靜態(tài)描述。包括計算機系統(tǒng)中與執(zhí)行該進程有關(guān)的各種寄存器的值、程序段在經(jīng)過編譯之后形成的機器指令代碼集、數(shù)據(jù)集及各種堆棧值和PCB結(jié)構(gòu)??砂匆欢ǖ膱?zhí)行層次組合,如用戶級上下文、系統(tǒng)級上下文等。

進程存在的唯一標志

在進程的整個生命周期中,系統(tǒng)總是通過PCB對進程進行控制的,亦即,系統(tǒng)是根據(jù)進程的PCB而不是任何別的什么而感知到該進程的存在的,所以說,PCB是進程存在的唯一標志。

進程的特征

1、動態(tài)性

2、并發(fā)性

3、獨立性

進程實體是一個能獨立運行的基本單位,同時也是系統(tǒng)中獨立獲得資源和獨立調(diào)度的基本單位。沒有建立進程的程序,不能作為一個獨立的單位參加運行。

4、異步性

5、結(jié)構(gòu)特性

從結(jié)構(gòu)上看,進程由程序段、數(shù)據(jù)段及PCB三部分組成。

進程的狀態(tài)及其轉(zhuǎn)換

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

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

當進程已經(jīng)分配到除CPU以外的所有必要的資源后,只要能再獲得處理機,就可以立即執(zhí)行。

  • 執(zhí)行狀態(tài)(Running)(運行狀態(tài))

指進程已獲得處理機而執(zhí)行的狀態(tài)。

  • 阻塞狀態(tài)(Block)(等待狀態(tài))

進程因為發(fā)生某個事件而暫停執(zhí)行時的狀態(tài)(如:請求I/O、申請緩沖空間等)。有時也稱“等待”狀態(tài)或“睡眠”狀態(tài)。

進程狀態(tài)轉(zhuǎn)換

①就緒→執(zhí)行:調(diào)度

②執(zhí)行→等待:等待某個事件發(fā)生而睡眠

③等待→就緒:因等待的事件發(fā)生而喚醒

④執(zhí)行→就緒:時間片用完或出現(xiàn)高優(yōu)先

就緒狀態(tài)→執(zhí)行狀態(tài)

處于就緒狀態(tài)的進程,當進程調(diào)度程序為它分配了處理機后,該進程便由就緒狀態(tài)變?yōu)閳?zhí)行狀態(tài),正在執(zhí)行的進程也稱為當前進程。

執(zhí)行狀態(tài)→阻塞狀態(tài)

正在執(zhí)行的進程因發(fā)生某件事件而無法執(zhí)行。例如:進程請求訪問臨界資源,而該資源正被其它進程訪問,則請求該資源的進程將由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。

執(zhí)行狀態(tài)→就緒狀態(tài)

正在執(zhí)行的進程,如果事件發(fā)生或中斷而被暫停執(zhí)行,該進程便由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。(分時系統(tǒng)中,時間片用完;搶占調(diào)度方式中,優(yōu)先權(quán)高搶占處理機)

執(zhí)行狀態(tài)→終止狀態(tài)

當一個進程經(jīng)完成或發(fā)生某事件,如程序中出現(xiàn)地址越界、非法指令等錯誤,而被異常結(jié)束時,進程將由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榻K止狀態(tài)。

內(nèi)容資源由項目單位提供