linux下的程序控制塊和檔案描述符

2021-09-10 02:35:19 字數 1909 閱讀 1395

程序—— 所有的程序資訊被放在乙個叫做程序控制塊的資料結構中,可以理解為程序屬性的集合。

pcb(process control block),程序控制塊,是乙個資料結構描述,它是對系統的程序進行管理的重要依據,和程序管理相關的操作無一不用到pcb中的內容。一般情況下,pcb中包含以下內容:

(1)程序識別符號(內部,外部)

(2)處理機的資訊(通用暫存器,指令計數器,psw,使用者的棧指標)。

(3)程序排程資訊(程序狀態,程序的優先順序,程序排程所需的其它資訊,事件)

(4)程序控制資訊(程式的資料的位址,資源清單,程序同步和通訊機制,鏈結指標)

pcb是為了管理程序設定的乙個資料結構。是系統感知程序存在的唯一標誌。

通常包含如以下的資訊:

(1)程序識別符號(唯一)

(2)程序當前狀態,通常同一狀態的程序會被放到同乙個佇列;

(3)程序的程式和資料位址

(4)程序資源清單。列出所擁有的除cpu以外的資源記錄。

(5)程序優先順序。反應程序的緊迫程度

(6)cpu現場保護區。記錄中斷時的cpu狀態

(7)程序佇列的pcb的鏈結字。

(8)程序相關的其他資訊。記賬用的,如占用cpu多長時間等。

程序控制塊

每個程序在核心中都有乙個程序控制塊(pcb)來維護程序相關的資訊,linux核心的

程序控制塊是task_struct結構體。現在我們全面了解⼀一下其中都有哪些資訊。

在linux中,這個結構叫做task_struct。

task_struct

task_struct是linux核心的⼀一種資料結構,它會被裝載到ram⾥裡並且包含著程序的資訊。

每個程序都把它的資訊放在 task_struct 這個資料結構⾥裡,task_struct 包含了這些內容:

標示示符 : 描述本程序的唯⼀一標⽰示符,⽤用來區別其他程序。

狀態 :任務狀態,退出**,退出訊號等。

優先順序 :相對於其他程序的優先順序。

程式計數器:程式中即將被執⾏行的下一條指令的位址。

記憶體指標:包括程式**和程序相關資料的指標,還有和其他程序共享的記憶體塊的指標

上下文資料:程序執行時處理器的暫存器中的資料。

i/o狀態資訊:包括顯⽰示的i/o請求,分配給程序的i/o裝置和被程序使⽤用的⽂檔案列表。

記賬資訊:可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等。

儲存程序資訊的資料結構叫做 task_struct,並且可以在 include/linux/sched.h ⾥裡找到它。

所有運⾏行在系統⾥裡的程序都以 task_struct 鍊錶的形式存在核心⾥裡。

程序的資訊可以通過 /proc 系統⽂資料夾檢視。要獲取pid為400的程序資訊,你需要檢視 /

proc/400 這個⽂資料夾。大i多數程序資訊同樣可以使⽤用top和ps這些⽤使用者級⼯工具來獲取。

檔案描述符fd(file descriptor)

核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。

檔案描述符:在linux系統中開啟檔案就會獲得檔案描述符,它是個很小的非負整數。每個程序在pcb(process control block)中儲存著乙份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有乙個指向已開啟檔案的指標。

檔案指標:c語言中使用檔案指標做為i/o的控制代碼。檔案指標指向程序使用者區中的乙個被稱為file結構的資料結構。file結構包括乙個緩衝區和乙個檔案描述符。而檔案描述符是檔案描述符表的乙個索引,因此從某種意義上說檔案指標就是控制代碼的控制代碼(在windows系統上,檔案描述符被稱作檔案控制代碼)。

Linux下的程序控制塊 PCB

本文 自linux下的程序控制塊 pcb 程序在作業系統中都有乙個戶口,用於表示這個程序。這個戶口作業系統被稱為pcb 程序控制塊 在linux中具體實現是 task struct資料結構。程序控制塊 pcb 系統為了管理程序設定的乙個專門的資料結構,用它來記錄程序的外部特徵,描述程序的運動變化過程...

Linux 程序控制塊PCB

想要有順序地學習linux,入口在這裡哦 linux 目錄索引 學了作業系統後,我們都知道作業系統要想管理乙個物件,它不是直接進行管理的,而是通過得到被管理者的一些有效資訊加以管理的,因此在這裡我們也可以這樣理解,作業系統管理程序,實則是將程序的有效資訊提取出來然後通過管理這些資訊來管理程序,而所有...

程序控制塊

程序控制塊 pcb 的結構 程序控制塊 pcb process control block 存放程序的管理和控制資訊的資料結構稱為程序控制塊。它是程序管理和控制的最重要的資料結構,每乙個程序均有乙個pcb,在建立程序時,建立pcb,伴隨程序執行的全過程,直到程序撤消而撤消。在不同的作業系統中對程序的...