進程控制塊中的信息:
1.進程標識符:進程標識符是惟一地標識一個進程。一個進程通常有兩種標識符
(1).內部表示符:在所有的操作系統中,都為每一個進程賦予了一個惟一的數字標識符,它通常是一個進程的序號。設置內部標識符主要是為了方便系統使用。
(2).外部標識符:它由創建者提供,通常是由字母,數字組成,往往是由用戶(進程)在訪問該進程時使用。為了描述進程的家族關系,還應設置父進程標識和子進程標識。此外,還可設置用戶標識,以指示擁有該進程的用戶。
2.處理機狀態:
1>通用寄存器;2>指令寄存器;3>程序狀態字PSW;4>用戶棧指針
3.進程調度信息:
1>進程狀態;2>進程優先級;3>進程調度所需的其它信息;4>事件
4.進程控制信息:
1>程序和數據的地址;2>進程同步和通信機制;3>資源清單;4>鏈接指針
進程控制塊的組織方式:
1.鏈接方式:
2.索引方式:
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 這個件夾。 多數進程信息同樣可以使 top和ps這些戶集具來獲取。