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這些戶集具來獲取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章