Linux內核分析第六週總結

進程控制塊PCB——task_struct

操做系統的內核裏的三大功能:linux

  • 進程管理
  • 內存管理
  • 文件系統

進程描述符——task_struct

進程管理是最核心的內容
數據結構

然而Linux進程的狀態與操做系統原理中的描述的進程狀態彷佛有所不一樣,就緒狀態和運行狀態都是TASK_RUNNING,這兩個TASK_RUNNING都是可運行的,但他們的區別在因而否得到CPU的控制權

進程描述符——task_struct的數據結構


全部進程都被這個雙向循環鏈表strcut list_head tasks連起來函數

雙向鏈表的操做:
操作系統

進程間的父子關係:
線程

進程的建立概覽及fork一個進程的用戶態代碼

進程建立的回顧:
道生一(start_kernel...cpu_idle),一輩子二(kernel_init和kthreadd),二生三(即前面是0、1和2三個進程),三生萬物(1號進程是全部用戶態進程的祖先,2號進程是全部內核態線程的祖先)3d

fork系統調用在父進程與子進程各返回一次

系統調用回顧:

fork()函數系統調用的狀況:

子進程copy了父進程的全部信息進行修改blog

實驗

與上週同樣的實驗步驟:
進程

進行gdb的過程:
內存

總結:

Linux經過複製父進程來建立一個新進程,經過調用do_fork來實現,Linux爲每一個新建立的進程動態地分配一個task_struct結構,fork()函數被調用一次,但返回兩次。it

相關文章
相關標籤/搜索