LINUX 進程源代碼分析
LINUX 進程源代碼分析
task_struct 數(shù)據(jù)結構
表示進程的數(shù)據(jù)結構是struct task_struct。task_struct 結構是進程實體的核心,
Linux 內(nèi)核通過對該結構的相關操作來控制進程,task_struct 結構是一個進程存在的唯一
標志,也就是通常說的進程控制塊(PCB, Process Control Block)。Linux 將所有task_struct
結構的指針存儲在task 數(shù)組中,數(shù)組的大小就是系統(tǒng)能容納的進程數(shù)目,默認為512。數(shù)
組的定義如下:
/* /include/linux/task.h */
#define NR_TASKS 512 /* task 數(shù)組的大小512 */
/* /kernel/sched.c */
struct task_struct *task[NR_TASKS]={&init_task,};
Linux 通過task 數(shù)組管理系統(tǒng)中所有的進程。系統(tǒng)定義了全局變量nr_tasks 記錄系統(tǒng)中進
程的數(shù)目。定義如下:
/* /kernel/fork.c */
int nr_tasks=0; /* 初始化為0 個進程在運行 */
附錄中列出了task_struct 結構。它相當大,但是可以從邏輯上劃分為以下幾部分:
·進程狀態(tài)
·進程調(diào)度信息
非常好我支持^.^
(1) 100%
不好我反對
(0) 0%