linux的第乙個任務(程序)

2021-10-25 18:48:06 字數 637 閱讀 3459

linux下有3個特殊的程序,idle程序(pid = 0), init程序(pid = 1)和kthreadd(pid = 2)

任務0,0號程序

開天闢地的idle程序其pid=0,其前身是系統建立的第乙個程序,也是唯一乙個沒有通過fork或者kernel_thread產生的程序。完成載入系統後,演變為程序排程、交換

init程序由idle通過kernel_thread建立,在核心空間完成初始化後, 載入init程式, 並終端使用者空間 

由0程序建立,完成系統的初始化. 是系統中所有其它使用者程序的祖先程序 

linux中的所有程序都是有init程序建立並執行的。首先linux核心啟動,然後在使用者空間中啟動init程序,再啟動其他系統程序。在系統啟動完成完成後,init將變為守護程序監視系統其他程序。

kthreadd程序由idle通過kernel_thread建立,並始終執行在核心空間, 負責所有核心執行緒的排程和管理 

它的任務就是管理和排程其他核心執行緒kernel_thread, 會迴圈執行乙個kthread的函式,該函式的作用就是執行kthread_create_list全域性鍊錶中維護的kthread, 當我們呼叫kernel_thread建立的核心執行緒會被加入到此鍊錶中,因此所有的核心執行緒都是直接或者間接的以kthreadd為父程序 

linux的第乙個程序init

init配置檔案 etc inittab ubuntu中不存在此檔案,但linux發行版有 格式 id runlevel action process id 5 initdefault 預設執行級別為5,啟動系統進入圖形化介面 si sysinit etc rc.d rc.sysinit 啟動時自動...

FreeRTOS 啟動第乙個任務

freertos開始第乙個任務原始碼分析 vtaskstartscheduler 1.建立乙個空任務 優先順序為0 2.是否使用軟體定時器,是的話 建立軟體定時器 3.關閉中斷 關中斷操作的暫存器是basepri,開中斷在svc中斷服務函式中開啟 4.初始化靜態全域性變數 xnexttaskunbl...

第乙個迭代任務的製作

1.在res裡的layout中建立三個包fenlei.xml shouye.xml xinjianshijian.xml 2.xinjianshijian.xml裡的介面和 是 3.fenlei.xml裡的介面和 是 4.shouye.xml裡的介面和 是 5.mainactivity裡的 是 6....