对于Android操作系统的启动过程,相对比较复杂,这里只是了解一下原理。

做过硬件开发都知道当我们设备接通电源后会有一个称作“引导加载程序”进行初始化,我们叫它bootloader,那

Android设备接通电源后,也会去加载这段程序,至于加载bootloader有用处?主要是检查硬件特性并将操作系统的

第一部分加载到设备的存储器中,当然不同设备的引导加载程序是不一样的。

在Android设备的电源接通后,引导加载程序分别做了两步,主要用到了一个主引导加载程序和一个辅引导加载程

序。对于主引导程序,大多数Android设备是无法替换的,这是因为主引导加载程序被硬编码在设备中的ASIC芯片中

了,这些硬编码指令将辅引导加载程序加载到存储器中,并告诉它存储器、CPU和操作系统的位置以及如何访问它

们。

辅引导加载程序可以进行定制,我们称之定制引导加载程序,它好处在于获得的权限比较大,定制引导加载程序可

以使用定制文件来替换原操作系统文件,这样做的好处可以更换新的用户界面或功能增强的内核。

下图是Android设备引导加载具体步骤:

1、位于引导ROM(只读存储器)中的特定代码会找到第一级的引导加载程序(主引导加载程序),并将其加载到存储

器中。引导ROM是一个ASIC芯片,并载入永久性的编程代码。

2、在初始化存储器并等到硬件准备好之后,第一级引导加载程序会加载第二级引导加载程序(辅引导加载程序)。

引导加载程序会检查安全标记是否开启(S-ON),如果已经开启,那么引导加载程序只会加载被标记的内核。如果安

全标记是关闭的(S-OFF),那么引导加载程序就不再检查标记。将安全标记设置为S-OFF解开其他安全锁,使得

整个文件系统处于可写状态,还可以做其它事情,比如定制Recovery程序。

3、引导加载程序将Linux内核和定制化内容加载到存储器中。这时,引导加载程序将对硬件的控制权转交给了Linux内

核。

4、初始化(INIT)进程。INIT进程是设备上运行的其他所有进程的前提。主要作用是初始化基础硬件访问以及设备功能

所需的所有进程,还会启动用来执行大多数应用程序的Dalvik虚拟机的进程。

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/44728245 情绪控_

Android之简单了解Android OS内部机制相关推荐

  1. android webview简单使用,android WebView 简单使用Demo

    activity配置文件:activity_main.xml android:layout_width="match_parent" android:layout_height=& ...

  2. Android开发--简单实现Android应用的启动页

    Android启动页效果展示 平时打开手机的应用时,会跳出来3秒钟的广告后,再进入应用.今天我们就来简单实现一下引导页的功能. 1.首先,新建一个activity页面,命名:SplashActivit ...

  3. android ipc简单理解,Android IPC 机制【1】--简介

    一.android 中进程间通信常用的有以下几种机制 ------------------------------------------------------------------------- ...

  4. messenger android 4.,简单聊聊Android AIDL之Messenger

    哈喽,大家好,接触Android的同学们对AIDL这个概念肯定不会陌生,就算没用过,那肯定也是听过.很多刚开始接触Android的朋友可能会感觉AIDL很难.今天,就用Messenger来教大家如何简 ...

  5. Android实现简单日记,Android学习日记

    Day 7 Title UI常用组件basicView android系统中的所有UI类都是建立在View和ViewGroup这两个的基础之上的.所有View的子类称为"widget&quo ...

  6. android audiorecord 简单 使用,Android AudioRecord 的使用

    AudioRecord 本工程实现pcm多配置(采样率.文件格式可选)的录音和播放工具,可用户音频的录制. 工程代码:https://github.com/worson/AudioRecord.git ...

  7. Android开发——简单计算器实现

    计算器项目,要求实现加.减.乘.除.求倒数.求平方根等简单运算. 真机调试结果如下图: 布局文件:main_activity.xml <?xml version="1.0" ...

  8. Android实现简单的闹钟

    Android实现简单闹钟 Android实现简单闹钟 简单的时间格式转化 日期选择 时间选择 确定时间后开启服务 在服务里使用AlarmManager定时在AlarmManager里设置到点发送一条 ...

  9. Android Loader 异步加载详解二:探寻Loader内部机制

    Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/7025991 ...

最新文章

  1. 关于学习Python的一点学习总结(36->基本序列和映射协议)
  2. label实现不同大小不同颜色
  3. UA MATH575B 数值分析下 计算统计物理例题2
  4. 『Lucas定理以及拓展Lucas』
  5. 程序环境——翻译环境与执行环境
  6. Redis在生产中不得不重视的几个运维问题
  7. Java 匿名内部类理解
  8. Oracle的分页实现
  9. Python客户端syn连接
  10. 通过MBean server监控weblogic应用
  11. Paddle实现NLP-文本分类
  12. JSP九大内置对象及其作用域
  13. 智能变电站调试仿真培训系统 61850规约培训系统 免费送
  14. SDK环境变量配置 adb配置
  15. Python文件去重代码
  16. 【鸿蒙】鸿蒙App应用-《记账软件》开发步骤
  17. matlab 怎么画时域图,matlab画e时域波形图
  18. Google TPU的发展历程与思考(一)
  19. 如何在Apple Watch上查看实时照片
  20. PHP 万能查询代码

热门文章

  1. sdio接口_多种接口的谷歌Coral模块,总有一款适合您~
  2. 【趣图】测试刚写完的代码...
  3. List和List的区别?
  4. 随行付微服务测试之静态代码扫描
  5. Linux 搭建SVN 服务器
  6. ubuntu 运行android sdk 下的工具adb报bash: ./adb: No such file or directory
  7. Exchange2003-2010迁移系列之六,配置及配置第二台Exchange CAS/HUB服务器
  8. 对比:Linux和Windows系统线程间的区别
  9. Qt QLabel 显示gif动图
  10. [BZOJ2144]国家集训队 跳跳棋