Android init進程概述

來源:互聯網
上載者:User

標籤:

init進程,其程式位於根檔案系統中,在kernle自行啟動後,其中的 start_kernel 函數把根檔案系統掛載到/目錄後,在 rest_init 函數中通過 kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); 建立PID為1的核心進程,隨後調用 run_init_process 來載入boot分區中根檔案系統裡的init程式來跳轉到使用者空間運行。init是第一個運行在使用者空間的進程。之後很多的系統服務都由init進程fork而來,主要的有servicemanager,zygote。zygote又會fork其他進程,主要有systerserver,launcher等apk。systermserver則會以多線程的方式啟動其他系統服務,比如PowerManagerService等。

init進程的主要作用如下

  • 建立臨時檔案系統目錄並掛載相依檔案系統
  • 管理裝置(通過裝置檔案節點)
  • 初始化屬性系統,其類似於Windows系統的註冊表
  • 讀取bootloader傳給kernel的cmdline,並存入相應的ro屬性中
  • 設定SELinux相關策略
  • 解析rc檔案,執行相應動作,包括啟動相依服務
  • 之後進入迴圈過程,有五個動作
    •  執行action列表中的表頭命令  
    • 檢測系統中是否有進程需要被重啟
    • 監聽屬性系統,處理修改屬性的事件
    • 監聽chordered keyboard的按鍵輸入事件,其可以啟動相依的service,目前不支援
    • 回收殭屍進程

另外,/sbin目錄下ueventd和watchdog程式為/init程式的軟連結,因為三者有許多東西類似,所以為了方便共用代碼減小體積,類似於busybox/toolbox,通過傳遞過來的argv參數,來決定跑init,ueventd,watchdog中的哪一個。

ueventd守護進程負責監聽熱插拔事件,類似於udev。

watchdogd守護進程負責定時向 "/dev/watchdog" 裝置寫1踢狗。

以上即為Android使用者空間,第一個啟動並執行使用者進程所做的事情,所提供的服務以及所監聽的事件。

 

Android init進程概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.