轉發:PCB進程控制塊

文字轉自:https://blog.csdn.net/w_y_x_y/article/details/80016975

想要有順序地學習Linux,入口在這裏哦:Linux:目錄索引

PCB:進程控制塊

0.PCB是幹什麼的?

學了操作系統後,我們都知道操作系統要想管理一個對象,它不是直接進行管理的,而是通過得到被管理者的一些有效信息加以管理的,因此在這裏我們也可以這樣理解,操作系統管理進程,實則是將進程的有效信息提取出來然後通過管理這些信息來管理進程,而所有的進程信息被存放在一個叫做進程控制塊的數據結構中(可以理解爲進程屬性的集合),這也就是即將要介紹的進程控制塊(PCB).

1.PCB簡介

PCB(process control block),進程控制塊,它用於管理系統的進程
一般情況下,PCB中包含4個部分
1.進程標識信息
2.處理機狀態
3.進程調度信息
4.進程控制信息
詳細如下圖:
這裏寫圖片描述

2.PCB4個部分包含的內容的解釋:

(1). 進程標識信息

進程標識信息用於唯一地標識一個進程,一個進程通常有兩種標識符:內部標誌符&外部標識符。
內部標誌符: 由操作系統賦予每個進程的一個唯一的數字標識符,它通常爲一個進程的序號,方便了系統使用。
外部標識符: 由創建者產生,是由字母和數字組成的字符串,爲用戶進程訪問該進程提供方便。
爲了描述進程間的家族關係,通常還設有父進程標識和子進程標識,以表示進程間的家族關係。
此外,還設有用戶名或用戶標識號表示該進程屬於哪個用戶。

(2). 處理機狀態

處理機狀態信息主要由處理機的各個寄存器內的信息組成。 進程運行時的許多信息均存放在處理機的各種寄存器中。其中程序狀態字(PSW)是相當重要的,處理機根據程序狀態寄存器中的PSW來控制程序的運行。

(3). 進程調度信息

PCB中還存放着一些與進程調度有關的信息。
進程狀態:標識進程的當前狀態(就緒、運行、阻塞),作爲進程調度的依據。
進程優先級:表示進程獲得處理機的優先程度。
爲進程調度算法提供依據的其他信息:例如,進程等待時間、進程已經獲得處理器的總時間和進程佔用內存的時間等。
事件:是指進程由某一狀態轉變爲另一狀態所等待發生的事件。(比如等待I/O釋放)

(4). 進程控制信息

程序和數據地址:是指組成進程的程序和數據所在內存或外存中的首地址,以便在調度該進程時能從其PCB中找到相應的程序和數據。
進程同步和通信機制:指實現進程同步和通信時所採取的機制,如消息隊列指針和信號量等,他們可以全部或部分存在PCB中。
資源清單:列出了進程所需的全部資源 及 已經分配給該進程的資源,但不包括CPU.
鏈接指針:它給出了處於同一隊列中的下一個PCB的首地址。

3.Linux中的PCB:task_struct

(1)PCB中存儲的信息

標識符:與進程相關的唯一標識符,用來區別正在執行的進程和其他進程。
狀態:描述進程的狀態,因爲進程有掛起,阻塞,運行等好幾個狀態,所以都有個標識符來記錄進程的執行狀態。
優先級:如果有好幾個進程正在執行,就涉及到進程被執行的先後順序的問題,這和進程優先級這個標識符有關。
程序計數器:程序中即將被執行的下一條指令的地址。
內存指針:程序代碼和進程相關數據的指針。
上下文數據:進程執行時處理器的寄存器中的數據。
I/O狀態信息:包括顯示的I/O請求,分配給進程的I/O設備和被進程使用的文件列表等。
記賬信息:包括處理器的時間總和,記賬號等等。

(2)task_struct的結構

這裏寫圖片描述

                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/markdown_views-ea0013b516.css">
                        </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章