為了使參與并發(fā)執(zhí)行的每個程序,包含數(shù)據(jù)都能獨立地運行,在操作系統(tǒng)中必須為之配置一個專門的數(shù)據(jù)結(jié)構(gòu),稱為進程控制塊(PCB,Process Control Block)。進程與PCB是一一對應(yīng)的,用戶進程不能修改。
進程控制塊PCB的作用:
為了便于系統(tǒng)描述和管理進程的運行,在OS的核心為每個進程專門定義了一個數(shù)據(jù)結(jié)構(gòu)——進程控制塊PCB(ProcessControlBlock)。PCB作為進程實體的一部分,記錄了操作系統(tǒng)所需的,用于描述進程的當前情況以及管理進程運行的全部信息,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。PCB的作用是使一個在多道程序環(huán)境下不能獨立運行的程序(含數(shù)據(jù))成為一個能獨立運行的基本單位,一個能與其他進程并發(fā)執(zhí)行的進程。
(1)PCB作為獨立運行基本單位的標志。當一個程序(含數(shù)據(jù))配置了PCB后,就表示它已經(jīng)是一個能在多道程序環(huán)境下獨立運行的、合法的基本單位,也就具有取得OS服務(wù)的權(quán)力,如打開文件系統(tǒng)中的文件,請求獲得系統(tǒng)中的I/O設(shè)備,以及與其它相關(guān)進程的進行通信等。因此,當系統(tǒng)創(chuàng)建一個新進程時,就為它建立了一個PCB。進程結(jié)束時又回收其PCB,進程于是也隨之消亡。系統(tǒng)是通過PCB感知進程的存在的。事實上,PCB已成為進程存在于系統(tǒng)中的唯一標志。
(2)PCB能實現(xiàn)間斷性運行方式。在多道程序環(huán)境下,程序是采用停停走走間斷性的運行方式運行的。當進程因阻塞而暫停運行時,它必須保留自己運行時的CPU現(xiàn)場信息。在有了PCB后,系統(tǒng)就可以將CPU現(xiàn)場信息保存在被中斷進程的PCB中,供該進程再次被調(diào)度執(zhí)行時恢復(fù)CPU現(xiàn)場時使用。由此,可再次明確,在多道程序環(huán)境下,作為傳統(tǒng)意義上的靜態(tài)程序,因其并不具有保護或保存自己運行現(xiàn)場的手段,無法保證其運行結(jié)果的可再現(xiàn)性,從而失去運行的意義。
(3)PCB提供進程管理所需要的信息。當調(diào)度程序調(diào)度到某進程運行時,只能根據(jù)該進程PCB中記錄的程序和數(shù)據(jù)在內(nèi)存或外存中的始址指針,找到相應(yīng)的程序和數(shù)據(jù);在進程運行過程中,當需要訪問文件系統(tǒng)中的文件或I/O設(shè)備時,也都需要借助于PCB中的信息。另外,還可根據(jù)PCB中的資源清單了解到該進程所需的全部資源等??梢?,在進程的整個生命周期中,操作系統(tǒng)總是根據(jù)PCB實施對進程的控制和管理。
(4)PCB提供進程調(diào)度所需要的信息。只有處于就緒狀態(tài)的進程才能被調(diào)度執(zhí)行,而在PCB中就提供了進程出于何種狀態(tài)的信息。如果進程處于就緒狀態(tài),系統(tǒng)便將它插入到進程就緒隊列中,等待著調(diào)度程序的調(diào)度;另外在進行調(diào)度時往往還需要了解進程的其他信息,如在優(yōu)先級調(diào)度算法中,就需要知道進程的優(yōu)先級。在有些較為公平的調(diào)度算法中,還需要知道進程的等待時間和已執(zhí)行過的事件等。
(5)PCB實現(xiàn)與其他進程的同步與通信。進程同步機制是用于實現(xiàn)諸進程的協(xié)調(diào)運行的,在采用信號量機制時,它要求在每個進程中都設(shè)置有相應(yīng)的用于同步的信號量。在PCB中還具有用于實現(xiàn)進程通信的區(qū)域或通信隊列指針等。
-
pcb
+關(guān)注
關(guān)注
4321文章
23119瀏覽量
398460 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6846瀏覽量
123419 -
進程
+關(guān)注
關(guān)注
0文章
203瀏覽量
13964
發(fā)布評論請先 登錄
相關(guān)推薦
評論