android系统启动_tj选编.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SystemServer使命 aplicationInit() -- invokeStaticMain() 該方法中將拋出一個異常,該異常被 ZygoteInit.java的main函數捕獲,最終調用com.android.server.SystemServer的main函數 1.bootloader运行(Linux通用内容,如U-Boot的启动) 2.Linux内核运行(Linux通用内容,通常是二进制的机器代码存在形式) 3。内核加载根文件系统(Linux通用内容:如从Flash中加载) 4.init进程运行(用户空间的第一个进程) 5.运行init.rc脚本 6.加载system和data文件系统 7.运行各种服务 android 系统中配置dalvik堆的有关设定 dalvik.vm.heapsize:不受控情况下的极限堆大小,即堆的最大值,当非受控应用的dalvik heap size值超过这个限定,直接引发OOM。 dalvik.vm.heapgrowthlimit:受控情况下的极限堆大小。这个值控制那些受控应用的极限堆大小,如果受控应用dalvik heap size超过这个值,将引发OOM dalvik.vm.heapstartsize:堆分配的初始大小。调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢,但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。相反,这个值越大系统ram消耗越快,但是程序更流畅。 在Android开发中,如果需要试用大堆,需要在manifest中指定android:largeHeap为true。 Gallery2.apk使用了 android:largeHeap=true * ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC ZZDC Android系统启动 Bootloader啟動 加電後,CPU將先執行bootloader程序,此處有三種選擇 fastboot,即命令或SD卡燒寫模式,不加載內核及文件系統,此處可以進行工廠模式的燒寫 recovery模式,加載recovery.img,recovery.img包含內核,基本的文件系統,用於工程模式的燒寫 開機按Power,正常啟動系統,加載boot.img,boot.img包含內核,基本文件系統,用於正常啟動手機(以下只分析正常啟動的情況) Linux Kernel啟動 由Bootloader啟動 中斷和內存初始化 內核模塊,驅動加載 Android啟動 root文件系統被裝載到內存中後,運行init進程,從內核態轉 到用戶態執行,開始啟動Android(存儲於System分區) Linux內核啟動之後就到Android Init進程,進而啟動Android相關的服務和應用。 Init是一個由內核啟動的用戶級進程。 Init 可執行程序是系統運行的第一個用戶空間的程序,它以守護進程的方式運行。 負責系統初始化的後臺循環工作。擔當起propery service的作用。 Android.mk文件中: LOCAL_MODULE:=?init??//編譯後的模塊名,即可執行文件的名字 ? include?$(BUILD_EXECUTABLE)?//編譯成可執行文件? init進程啟動:init概述 init進程啟動:初始化 Init的入口是system/core/init/init.c的main函數 包括建立/dev、/proc等目录,挂载文件系统、初始化属性等 init進程啟動:初始化 內建動作的執行 queue_builtin_action(wait_for_coldboot_done_action, wait_for_coldboot_done); 用於等待系統啟動 queue_builtin_action(keychord_init_action, keychord_init); 組合按鍵實現,用於調試類的功能(預定義幾個按鍵同時按下時,才會發送消息到用戶空間) queue_builtin_action(console_init_action, console_init); 系統終端初始化,開機第二屏啟動(.rle) init進程啟動:解析init.rc Init.rc是系統配置文件 在init文件中定义了多种boot_mode:MT_NORMAL_BOOT,MT_META_BOOT,MT_RECOVERY_BOOT,MT_FACTORY_BOOT等,根据不同的boot模式,去加载对应的init.**.rc文件,默认正常模式启动加载in

文档评论(0)

奇缘之旅 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档