Linux程序管理(1)

2021-09-22 11:18:27 字數 1162 閱讀 7029

程序是執行期間的程式及其它所包含的資源的總稱。

程序通過

fork()

系統呼叫產生,該系統呼叫通過複製乙個現有程序來建立乙個全新的程序。

fork()

呼叫一次返回兩次:一次回到父程序、一次回到新建立的子程序。

程序描述符及任務結構

核心把程序放在

task list

的雙向迴圈鍊錶中,其中每一項都是乙個

task_struct

結構(即程序描述符)。

task_struct

結構比較大(

32位機器上約

1.7k

),包含了核心管理程序所需的全部資訊。

linux

通過slab

分配器分配

task_struct

結構,以達到物件復用和快取著色的目的。

每個程序通過

pid來標識,預設最大值為

32768

,可以通過

/proc/sys/kernel/pid_max

修改。

thread_info

結構

struct

thread_info

;

該結構在核心棧的尾端分配。

如何查詢當前正在執行程序的程序描述符

為什麼要遮蔽掉低13位(當thread_size為8192時):

核心中的棧是從高位址到低位址,

thread_info

和核心棧

(核心態堆疊

)共享同一塊記憶體

, 而每個任務的

thread_info

在核心棧的尾端分配.

Linux程序管理1

程序是已啟動的可執行程式的執行中例項。proc目錄下以數字為名的目錄,每乙個目錄代表乙個程序,儲存著程序的屬性資訊。每乙個程序的pid是唯一的,就算程序退出了,其它程序也不會占用其pid。1.1程序的組成部分 已分配記憶體的位址空間 安全屬性,包括所有權憑據和特權 程式 的乙個或多個執行執行緒 程序...

1 程序管理

程序描述符獲取 通過thread union,使程序核心態堆疊和thread info緊密結合在一起。檔案include linux sched.h當中,有thread union的定義 union thread union 之所以將thread info結構稱之為小型的程序描述符,是因為在這個結構...

程序管理(1)

程序是處於執行期的程式,程序包括 段,資料段,還有pcb 程序控制塊 執行緒實在程序中活動的物件,核心排程的物件是執行緒,而不是程序 注意 linux核心通常把程序叫做任務核心把程序的列表存放在任務佇列中 雙向迴圈鍊錶 鍊錶中的每一項型別都是task struct 稱為程序描述符 程序描述符包含乙個...