操作系统的启动流程

  1. 读取引导文件
    引导文件为存放在硬盘0磁道位置的文本文件
  2. 根据引导文件加载操作系统的内核

Android的启动流程

  • Android的内核 , 基于Linux 2.6.x
  1. 根据引导文件加载Linux内核, 内核开始运行
  2. 加载驱动文件与数据结构
3. 加载用户级别的第一个进程(Android的应用层信息):

init.c(/system/core/init)
在其中创建目录, 挂载目录 , 读取配置信息等

4. 读取/system/core/rootdir/init.rc , 并在其中读取配置文件

在其中创建各种目录 ,启动各种服务

5. /system/bin/app_precess/App_main.cpp

启动java层的第一个服务: com.android.internal.os.ZygoteInit , 在进程中读取配置信息 , 加载类文件 , 月1.8k个 , 用循环的方式Class.loadClass()

6. startSystemServer系统服务
  • 通过Jni进入SystemServer.cpp的init1()方法 , 该方法调用SystemInit.cpp的方法 ,在回到java层 , 调用init2()方法启动了ServerThread服务 . 在JNI中启动了各种硬件.
7. 线程启动了ActivityManagerService的systemReady()方法 , 在其中调用resumeTopActivityLocked() , 启动了待机画面

更多相关文章

  1. android 在线预览pdf文件(目前最全)
  2. Android7.0适配教程与心得
  3. Android(安卓)持续集成实践(二)——配置 Docker + gitlab-runner
  4. Android(安卓)项目中文件夹作用(res文件夹详细介绍)
  5. Android工程编译时报 Error running app: Default Activity not
  6. Ogre3d 之使用 Android(安卓)NativeActivity
  7. ShareSDK for Android(安卓)只有新浪微博分享
  8. 学习android随手记 之 android:name android:id
  9. android-1-Android简单入门

随机推荐

  1. Android(安卓)Design Support Library使
  2. android 输入法出现挤压屏幕、android输
  3. Android如何调用第三方SO库
  4. Android(安卓)ADB server didn't ACK
  5. 基于 Android(安卓)NDK 的学习之旅-----
  6. 手动部署Android-apk应用到模拟器
  7. Android(安卓)Animation动画(超详细)
  8. Android底部导航BottomNavigationBar的使
  9. Android(安卓)Gradle 配置打包输出名称格
  10. Android音频捕获(录音)(转)