天天3分鐘操做系統修煉祕籍(23):進程表和進程數據結構

點我查看祕籍連載數據結構

進程表和進程數據結構

內核負責管理維護全部進程,爲了管理進程,內核在內核空間維護了一個稱爲進程表(Process Table)的數據結構,這個數據結構中記錄了全部進程,每一個進程在數據結構中都稱爲一個進程表項(Process Table Entry),如圖。指針

從圖中可知,進程表中除了記錄了全部進程的PID,還使用一個字段記錄了全部進程的指針,指向每一個進程的進程控制塊(Process Control Block,PCB),請記住PCB這個詞,它過重要了。code

既然PCB表明的是進程,在這個數據結構(task_struct)中天然保留了和進程相關的不少信息,至少在進行上下文切換時,可以保存下在CPU中關於當前運行進程的一些重要寄存器信息(因此,PCB表明的是未執行的進程,CPU中某些寄存器中的數據表明當前正在運行的進程)。如下是PCB中包含的內容,有興趣的話能夠了解下各項是什麼東西:blog

1.Process management:
Registers
Program counter
Program status word
Stack pointer
Process state
Priority
Scheduling parameters Process ID
Parent process
Process group
Signals
Time when process started CPU time used
Children’s CPU time
Time of next alarm
 
2.Memory management:
Pointer to text segment info 
Pointer to data segment info 
Pointer to stack segment info
 
3.File management:
Root directory Working directory File descriptors User ID
Group ID

PCB包含了進程很是重要的信息,是上下文切換的關鍵,它保存在每一個進程的內核棧中(是否還記得前面提到過的每一個進程都有兩個棧空間:用戶棧和內核棧)。進程

相關文章
相關標籤/搜索