Linux 程序 資料結構

2021-08-13 16:00:37 字數 2895 閱讀 5120

程序相關函式的資料結構為:程序描述符task_struct

管理這個資料結構的為各種等待佇列、執行佇列等。

// 下面是任務(程序)資料結構,或稱為程序描述符。

// long state 任務的執行狀態(-1不可執行,0可執行(就緒),>0已停止)。

// long counter 任務執行時間計數(遞減)(滴答數),執行時間片。

// long priority 優先數。任務開始執行時counter=priority,越大執行越長。

// long signal 訊號位圖,每個位元位代表一種訊號,訊號值=位偏移值+1。

// struct sigaction sigaction[32] 訊號執行屬性結構,對應訊號將要執行的操作和標誌資訊。

// long blocked 程序訊號遮蔽碼(對應訊號位圖)。

// -------------------

// int exit_code 任務執行停止的退出碼,其父程序會取。

// unsigned long start_code **段位址。

// unsigned long end_code **長度(位元組數)。

// unsigned long end_data **長度 + 資料長度(位元組數)。

// unsigned long brk 總長度(位元組數)。

// unsigned long start_stack 堆疊段位址。

// long pid 程序標識號(程序號)。

// long pgrp 程序組號。

// long session 會話號。

// long leader 會話首領。

// int groups[ngroups] 程序所屬組號。乙個程序可屬於多個組。

// task_struct *p_pptr 指向父程序的指標。

// task_struct *p_cptr 指向最新子程序的指標。

// task_struct *p_ysptr 指向比自己後建立的相鄰程序的指標。

// task_struct *p_osptr 指向比自己早建立的相鄰程序的指標。

// unsigned short uid 使用者標識號(使用者id)。

// unsigned short euid 有效使用者id。

// unsigned short suid 儲存的使用者id。

// unsigned short gid 組標識號(組id)。

// unsigned short egid 有效組id。

// unsigned short sgid 儲存的組id。

// long timeout 核心定時超時值。

// long alarm 報警定時值(滴答數)。

// long utime 使用者態執行時間(滴答數)。

// long stime 系統態執行時間(滴答數)。

// long cutime 子程序使用者態執行時間。

// long cstime 子程序系統態執行時間。

// long start_time 程序開始執行時刻。

// struct rlimit rlim[rlim_nlimits] 程序資源使用統計陣列。

// unsigned int flags; 各程序的標誌,在下面第149行開始定義(還未使用)。

// unsigned short used_math 標誌:是否使用了協處理器。

// ------------------------

// int tty 程序使用tty終端的子裝置號。-1表示沒有使用。

// unsigned short umask 檔案建立屬性遮蔽位。

// struct m_inode * pwd 當前工作目錄i節點結構指標。

// struct m_inode * root 根目錄i節點結構指標。

// struct m_inode * executable 執行檔案i節點結構指標。

// struct m_inode * library 被載入庫檔案i節點結構指標。

// unsigned long close_on_exec 執行時關閉檔案控制代碼位圖標誌。(參見include/fcntl.h)

// struct file * filp[nr_open] 檔案結構指標表,最多32項。表項號即是檔案描述符的值。

// struct desc_struct ldt[3] 區域性描述符表。0-空,1-**段cs,2-資料和堆疊段ds&ss。

// struct tss_struct tss 程序的任務狀態段資訊結構。

// ***********************************===

105 struct task_struct ;

Linux0 11核心 程序相關資料結構

主要有4個資料結構 task union sched.c第 53行 這實際上是一頁記憶體,頁面低端頭部放的是 task struct 程序控制塊 結構,頁面 其他部分當作程序的核心態堆疊使用 union task union tss struct sched.h第 53行 任務段資料,與80386的...

Linux資料結構

培養我們的高階思維 資料結構演算法掌握 有利於做上層應用開發 提高程式的執行效率,採用不同的儲存方式,資料的增刪改查操作的效率是不一樣的 主要內容 順序表的基本操作 鍊錶基本操作 增加,刪除,更改,查詢資料 棧和佇列 樹和二叉樹 常見的排序演算法 本質 就是前面c語言學習過的陣列,在陣列的基礎上做了...

《資料結構 演算法修煉程序》

宣言 作為演算法達人修煉營營員,在接下來的幾個月時間,我將投入到這項可能艱苦,但卻會使我的學習躍上新層次的學習中去,本頁將記錄我的努力,見證我的成長,加油!下面是各章演算法列表,我將在實現每乙個演算法之後,將相關博文鏈結加進來,遍地的小手 第2章線性表 2 1 2 22 32 42 5 2 62 7...