當前位置:編程學習大全網 - 源碼下載 - Linux內核中進程0的主要任務是什麽?

Linux內核中進程0的主要任務是什麽?

總結壹下有如下幾個要點:

1.

進程0是所有其他進程的祖先,

也稱作idle進程或swapper進程.

2.

進程0是在系統初始化時由kernel自身從無到有創建.

3.

進程0的數據成員大部分是靜態定義的,即由預先定義好的INIT_TASK,

INIT_MM等宏初始化.

進程0的描述符init_task定義在arch/arm/kernel/init_task.c,由INIT_TASK宏初始化。

init_mm等結構體定義在include/linux/init_task.h內,為init_task成員的初始值,分別由對應的初始化宏如INIT_MM等初始化

Process

1

進程0最終會通過調用kernel_thread創建壹個內核線程去執行init函數,這個新創建的內核線程即Process

1(這時還是***享著內核線程0的資源屬性如地址空間等)。init函數繼續完成剩余的內核初始化,並在函數的最後調用execve系統調用裝入用戶空間的可執行程序/sbin/init,這時進程1就擁有了自己的屬性資源,成為壹個普通進程(init進程)。至此,內核初始化和啟動過程結束。下面就進入了用戶空間的初始化,最後運行shell登陸界面。(註:Init進程壹直存活,因為它創建和監控在操作系統外層執行的所有進程的活動。)

——————

這段對進程0的描述引用自《Understanding

The

Linux

Kernel

-

Third

Edtion》

The

ancestor

of

all

processes,

called

process

0,

the

idle

process,

or,

for

historical

reasons,

the

swapper

process,

is

a

kernel

thread

created

from

scratch

during

the

initialization

phase

of

Linux.

This

ancestor

process

uses

the

following

statically

allocated

data

structures

(data

structures

for

all

other

processes

are

dynamically

allocated)

  • 上一篇:描寫下雨的情景
  • 下一篇:***享內存的參數詳解
  • copyright 2024編程學習大全網