進程的概念&&進程的描述&&進程控制塊(task_struct)

進程概念:

   OS :程序的⼀一個執⾏行實例。

   正在執⾏行的程序。

   能分配處理器並由處理器執⾏行的實體。 內核觀點:擔當分配系統資源(CPU時間,內存)的實體。 進程的兩個基本元素是程序代碼(可能被執⾏行相同程序的其他進程共享)和代碼相關聯的 數據集。進程是⼀一種動態描述,但是並不代表所有的進程都在運⾏行。(進程在內存中因策 略或調度需求,會處於各種狀態)

進程描述

   廣義上,所有的進程信息被放在⼀一個叫做進程控制塊的數據結構中,可以理解爲進程屬性 的集合。

   進程控制塊

   每個進程在內核中都有⼀一個進程控制塊(PCB)來維護進程相關的信息,Linux內核的 

   進程控制塊是task_struct結構體。現在我們全⾯面瞭解⼀一下其中都有哪些信息。

   在Linux中,這個結構叫做task_struct。    

    task_struct是Linux內核的⼀一種數據結構,它會被裝載到RAM⾥裏並且包含着進程的信息。 每個進程都把它的信息放在task_struct 這個數據結構⾥裏,task_struct 包含了這些內容:    

    標⽰示符 : 描述本進程的唯⼀一標⽰示符,⽤用來區別其他進程。  

    狀態     :任務狀態,退出代碼,退出信號等。       

    優先級   :相對於其他進程的優先級。    

    程序計數器:程序中即將被執⾏行的下⼀一條指令的地址。    

    內存指針:包括程序代碼和進程相關數據的指針,還有和其他進程共享的內存塊的指針    

    上下⽂文數據:進程執⾏行時處理器的寄存器中的數據。    

    I/O狀態信息:包括顯⽰示的I/O請求,分配給進程的I/O設備和被進程使⽤用的⽂文件列表。    

    記賬信息:可能包括處理器時間總和,使⽤用的時鐘數總和,時間限制,記賬號等。   

       (ps:關於task_struct談到進程管理時再詳說) 

   保存進程信息的數據結構叫做 task_struct,並且可以在 include/linux/sched.h ⾥裏找到它。

所有運⾏行在系統⾥裏的進程都以 task_struct 鏈表的形式存在內核⾥裏。    

   進程的信息可以通過 /proc 系統⽂文件夾查看。要獲取PID爲400的進程信息,你需要查看 / proc/400 這個⽂文件夾。⼤大i多數進程信息同樣可以使⽤用top和ps這些⽤用戶級⼯工具來獲取。










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