在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

kernel到android核心啟動(dòng)過(guò)程

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-12-04 16:59 ? 次閱讀

總結(jié)一個(gè)圖:kernel 到android核心啟動(dòng)過(guò)程

圖片kernel鏡像執(zhí)行跳轉(zhuǎn)到start_kernel開(kāi)始執(zhí)行,在rest_init會(huì)創(chuàng)建兩個(gè)kernel 進(jìn)程(線程),其分別是為kernel_init 與kthreadd,創(chuàng)建完后系統(tǒng)通過(guò)init_idle_bootup_task蛻化為idle進(jìn)程(cpu_idle)。

圖片調(diào)用kernel_thread()創(chuàng)建1號(hào)內(nèi)核線程, 該線程隨后轉(zhuǎn)向用戶空間, 演變?yōu)閕nit進(jìn)程

調(diào)用kernel_thread()創(chuàng)建kthreadd內(nèi)核線程。

  • init_idle_bootup_task():當(dāng)前0號(hào)進(jìn)程init_task最終會(huì)退化成idle進(jìn)程,所以這里調(diào)用init_idle_bootup_task()函數(shù),讓init_task進(jìn)程隸屬到idle調(diào)度類中。即選擇idle的調(diào)度相關(guān)函數(shù)。
  • 調(diào)用cpu_idle(),0號(hào)線程進(jìn)入idle函數(shù)的循環(huán),在該循環(huán)中會(huì)周期性地檢查
  • kernel_init 中會(huì)執(zhí)行/init(ramdisk_execute_command的值為"/init")

圖片
在這里插入圖片描述

/init 啟動(dòng)后執(zhí)行/system/core/init/main.cpp 中main 方法,這里執(zhí)行FirstStageMain()

圖片

(看看這到了哪里?這到了咱們的的AVB那個(gè)地方啊)

FirstStageMain()中通過(guò)execv 執(zhí)行/system/bin/init,參數(shù)為selinux_setup。這里init 跟/init 一樣,因此再次執(zhí)行init 鏡像。

這里如果是重啟到bootloader,會(huì)執(zhí)行InstallRebootSignalHandlers

圖片SetupSelinux 中再次執(zhí)行init,這里會(huì)注冊(cè)信號(hào)處理函數(shù)

從而參數(shù)second_stage,執(zhí)行SecondStageMain ,在這里解析.rc ,啟動(dòng)ueventd,并等待其啟動(dòng)完成。

圖片init 鏡像通過(guò)execv會(huì)執(zhí)行兩次,分別通過(guò)FirstStageMain和SecondStageMain執(zhí)行。

圖片圖片Zygote是Android系統(tǒng)創(chuàng)建新進(jìn)程的核心進(jìn)程

  • 負(fù)責(zé)啟動(dòng)Dalvik虛擬機(jī),
  • 加載一些必要的系統(tǒng)資源和系統(tǒng)類,
  • 啟動(dòng)system_server進(jìn)程,
  • 隨后進(jìn)入等待處理app應(yīng)用請(qǐng)求。

到這里我們就暫時(shí)停下,別走遠(yuǎn)了。

芯片上電到Android

總結(jié)一下整個(gè)流程

  • 第一步:手機(jī)開(kāi)機(jī)后,引導(dǎo)芯片啟動(dòng),引導(dǎo)芯片開(kāi)始從固化在ROM里的預(yù)設(shè)代碼執(zhí)行,加載引導(dǎo)程序到到RAM,bootloader檢查RAM,初始化硬件參數(shù)等功能;
  • 第二步:硬件等參數(shù)初始化完成后,進(jìn)入到Kernel層,Kernel層主要加載一些硬件設(shè)備驅(qū)動(dòng),初始化進(jìn)程管理等操作。在Kernel中首先啟動(dòng)swapper進(jìn)程(pid=0),用于初始化進(jìn)程管理、內(nèi)管管理、加載Driver等操作,再啟動(dòng)kthread進(jìn)程(pid=2),這些linux系統(tǒng)的內(nèi)核進(jìn)程,kthread是所有內(nèi)核進(jìn)程的鼻祖;
  • 第三步:Kernel層加載完畢后,硬件設(shè)備驅(qū)動(dòng)與HAL層進(jìn)行交互。初始化進(jìn)程管理等操作會(huì)啟動(dòng)INIT進(jìn)程 ,這些在Native層中;
  • 第四步:init進(jìn)程(pid=1,init進(jìn)程是所有進(jìn)程的鼻祖,第一個(gè)啟動(dòng))啟動(dòng)后,會(huì)啟動(dòng)adbd,logd等用戶守護(hù)進(jìn)程,并且會(huì)啟動(dòng)servicemanager(binder服務(wù)管家)等重要服務(wù),同時(shí)孵化出zygote進(jìn)程,這里屬于C++ Framework,代碼為C++程序;
  • 第五步:zygote進(jìn)程是由init進(jìn)程解析init.rc文件后fork生成,它會(huì)加載虛擬機(jī),啟動(dòng)System Server(zygote孵化的第一個(gè)進(jìn)程);System Server負(fù)責(zé)啟動(dòng)和管理整個(gè)Java Framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服務(wù);
  • 第六步:zygote同時(shí)會(huì)啟動(dòng)相關(guān)的APP進(jìn)程,它啟動(dòng)的第一個(gè)APP進(jìn)程為L(zhǎng)auncher,然后啟動(dòng)Email,SMS等進(jìn)程,所有的APP進(jìn)程都由zygote fork生成。

那么到這里我們就把整個(gè)系統(tǒng)的啟動(dòng)串聯(lián)起來(lái)了從bootrom-bootloader-kernel。

當(dāng)然真實(shí)的系統(tǒng)為了安全,比如說(shuō) 基于TrustZone框架的啟動(dòng)流程 ,那肯定不止這些步驟,但是大體上也是穿插在這個(gè)流程之中的增刪改。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3937

    瀏覽量

    127497
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1374

    瀏覽量

    40311
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11312

    瀏覽量

    209738
  • Kernel
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    11195
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32H7的啟動(dòng)過(guò)程分析

    本章教程主要跟大家講STM32H7的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)進(jìn)入C程序main()函數(shù)入口之間的部分。
    的頭像 發(fā)表于 10-17 14:42 ?2303次閱讀

    詳解STM32啟動(dòng)過(guò)程

    本章教程主要跟大家講STM32H7的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)進(jìn)入C程序main()函數(shù)入口之間的部分。
    發(fā)表于 11-14 11:24 ?1861次閱讀

    專家揭秘:STM32啟動(dòng)過(guò)程全解

    電子發(fā)燒友網(wǎng)核心提示: 本文主要闡述了STM32啟動(dòng)過(guò)程全面解析,包括啟動(dòng)過(guò)程的介紹、啟動(dòng)代碼的陳列以及深入解析。 相對(duì)于ARM上一代的主流ARM7/ARM9內(nèi)核架構(gòu),新一代Corte
    發(fā)表于 09-10 08:50 ?5.3w次閱讀
    專家揭秘:STM32<b class='flag-5'>啟動(dòng)過(guò)程</b>全解

    Linux內(nèi)核啟動(dòng)過(guò)程和Bootloader(總述)

    3.Linux啟動(dòng)過(guò)程 在Bootloader將 Linux 內(nèi)核映像拷貝 RAM 以后,可以通過(guò)下例代碼啟動(dòng) Linux 內(nèi)核: call_linux(0
    發(fā)表于 08-18 17:35

    android--系統(tǒng)啟動(dòng)--init進(jìn)程啟動(dòng)過(guò)程如何

    android--系統(tǒng)啟動(dòng)--init進(jìn)程啟動(dòng)過(guò)程
    發(fā)表于 05-29 10:35

    請(qǐng)問(wèn)6ul核心啟動(dòng)過(guò)程,有需要什么必須的外設(shè)嗎?

    6ul核心啟動(dòng)過(guò)程,有需要什么必須的外設(shè)嗎
    發(fā)表于 01-10 06:39

    系統(tǒng)啟動(dòng)過(guò)程

    系統(tǒng)啟動(dòng)過(guò)程系統(tǒng)啟動(dòng)過(guò)程主要由一下幾步組成(以硬盤(pán)啟動(dòng)為例):1. 開(kāi)機(jī)2. BIOS 加電自檢 ( Power On Self Test -- POST ),內(nèi)存地址為 0ffff:00003. 將硬盤(pán)第一個(gè)
    發(fā)表于 10-11 12:17 ?2266次閱讀

    嵌入式uCLinux內(nèi)核啟動(dòng)過(guò)程分析

    分析uCLinux的啟動(dòng)過(guò)程,可以加快系統(tǒng)啟動(dòng)速度、正確建立應(yīng)用環(huán)境。本文要研究的就是uCLinux操作系統(tǒng)內(nèi)核的啟動(dòng)過(guò)程
    發(fā)表于 08-15 16:51 ?790次閱讀

    IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知

    IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知
    發(fā)表于 12-22 14:46 ?10次下載

    STM32上電后啟動(dòng)過(guò)程

    STM32上電后啟動(dòng)過(guò)程
    發(fā)表于 11-15 18:21 ?16次下載
    STM32上電后<b class='flag-5'>啟動(dòng)過(guò)程</b>

    stm32啟動(dòng)過(guò)程

    一次性搞定stm32啟動(dòng)模式與啟動(dòng)過(guò)程一、stm32啟動(dòng)模式二、從flash啟動(dòng)過(guò)程2.1 數(shù)據(jù)在堆棧中存儲(chǔ)方式2.2 stm32的正常啟動(dòng)過(guò)程
    發(fā)表于 12-16 16:57 ?8次下載
    stm32<b class='flag-5'>啟動(dòng)過(guò)程</b>

    linux內(nèi)核啟動(dòng)過(guò)程會(huì)執(zhí)行用戶空間的init進(jìn)程

    linux內(nèi)核啟動(dòng)過(guò)程的后期,在kernel_init()函數(shù)代表的init線程中,會(huì)嘗試執(zhí)行用戶空間的init進(jìn)程
    的頭像 發(fā)表于 10-14 09:12 ?1174次閱讀

    RL78啟動(dòng)過(guò)程詳解

    RL78啟動(dòng)過(guò)程詳解
    的頭像 發(fā)表于 09-28 16:39 ?1475次閱讀
    RL78<b class='flag-5'>啟動(dòng)過(guò)程</b>詳解

    logd的啟動(dòng)過(guò)程和內(nèi)容

    logd作為native service,系統(tǒng)啟動(dòng)過(guò)程通過(guò)讀取rc文件來(lái)啟動(dòng),相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動(dòng)過(guò)程 logd啟動(dòng)后會(huì)存在三個(gè)用來(lái)服務(wù)
    的頭像 發(fā)表于 11-23 16:54 ?876次閱讀
    logd的<b class='flag-5'>啟動(dòng)過(guò)程</b>和內(nèi)容

    stm32啟動(dòng)過(guò)程詳解

    STM32啟動(dòng)過(guò)程詳解 近年來(lái),STM32微控制器在嵌入式系統(tǒng)中的應(yīng)用越來(lái)越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢(shì)。而要讓STM32微控制器正常工作,首先要了解它
    的頭像 發(fā)表于 12-08 15:47 ?1706次閱讀
    主站蜘蛛池模板: 激情网五月天| 久色中文| 久久国产美女| 狠狠色噜狠狠狠狠色综合久| 四虎永久在线精品免费观看地址| 色琪琪一本到影院| 免费黄色大片视频| 秋霞麻豆| 亚洲热热久久九九精品| 国产一区二卡三区四区| 国产亚洲新品一区二区| 爱爱免费小视频| 精品一区二区三区免费毛片爱| 极品美女啪啪| a级毛片免费网站| 韩国三级中文字幕hd| 男女交性拍拍拍高清视频| 日韩一级在线观看| 婷婷激情综合五月天| 日日噜噜夜夜狠狠久久aⅴ | 免费中国jlzzjlzz在线播放| 一级在线观看视频| 国产伦子系列视频6| 国产在线视频你懂的| 在线capcom超级碰碰| 精品理论片| 国产资源网| 免费看一级片| 黄色视奸| 狠狠干综合| 中文字幕区| 中文字幕色婷婷在线精品中| 国产精品午夜自在在线精品 | 天天操天天擦| 天天插天天操天天射| baoyu168成人免费视频| 久久99热精品免费观看无卡顿 | 性感美女逼| 日本一区二区在线不卡| 男男gay污小黄文| 色一欲一性一乱一区二区三区|