1. 程式人生 > >PCB(程序控制塊)以及Linux下的程序控制塊task_struct

PCB(程序控制塊)以及Linux下的程序控制塊task_struct

程序控制塊中的資訊:

1.程序識別符號:程序識別符號是惟一地標識一個程序。一個程序通常有兩種識別符號

  (1).內部表示符:在所有的作業系統中,都為每一個程序賦予了一個惟一的數字識別符號,它通常是一個程序的序號。設定內部識別符號主要是為了方便系統使用。

  (2).外部識別符號:它由建立者提供,通常是由字母,數字組成,往往是由使用者(程序)在訪問該程序時使用。為了描述程序的家族關係,還應設定父程序標識和子程序標識。此外,還可設定使用者標識,以指示擁有該程序的使用者。

2.處理機狀態:

1>通用暫存器;2>指令暫存器;3>程式狀態字PSW;4>使用者棧指標

3.程序排程資訊:

1>程序狀態;2>程序優先順序;3>程序排程所需的其它資訊;4>事件

4.程序控制資訊:

1>程式和資料的地址;2>程序同步和通訊機制;3>資源清單;4>連結指標


程序控制塊的組織方式:

1.連結方式:


2.索引方式:


task_struct:

task_structLinux核心的 種資料結構,它會被裝載到RAM 並且包含著程序的資訊。每個程序都把它的資訊放在 task_struct 這個資料結構 ,task_struct 包含了這些內容:

標 符           : 描述本程序的唯 標 符, 來區別其他程序。
狀態            :任務狀態,退出程式碼,退出訊號等。優先順序 :相對於其他程序的優先順序。
程式計數器:程式中即將被執 的下 條指令的地址。
記憶體指標    :包括程式程式碼和程序相關資料的指標,還有和其他程序共享的記憶體塊的指標。
上下 資料   :程序執 時處理器的暫存器中的資料。I/O狀態資訊:包括顯 的I/O請求,分配給程序的I/O裝置和被程序使 的 件列表。記賬資訊:可能包括處理器時間總和,使 的時鐘數總和,時間限制,記賬號等。
儲存程序資訊的資料結構叫做 task_struct,並且可以在 include/linux/sched.h  找到它。所有運 在系統 的程序都以 task_struct 連結串列的形式存在核心 。
程序的資訊可以通過 /proc 系統 件夾檢視。要獲取PID為400的程序資訊,你需要檢視 / proc/400 這個件夾。 多數程序資訊同樣可以使 top和ps這些戶集具來獲取。