android7.0runtime

正文

AMS 是 Android 中最核心的服务之一,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,它本身也是一个 Binder 的实现类,应用进程能通过 Binder 机制调用系统服务

在大多数情况下,每个 Android 应用都在各自的进程中运行;当需要运行应用的一些代码时,系统会为应用创建此进程,并使其保持运行,直到不再需要它且系统需要回收其内存以供其他应用使用

所以熟悉 Android 启动流程不仅决定了大厂永恒敲门砖,更能体现出工作中最能突显价值的金字招牌

再者近几年面试官也是进一步向深、向广

问题1:你了解Android系统系统启动流程吗?

问题2:system_server为什么要在Zygote中启动,而不是由init直接启动呢?

问题3:为什么要专门使用Zygote进程去孵化应用进程,而不是让system_server去孵化呢?

问题4:能具体说说是怎么导致死锁的吗?

问题5:Zygote为什么不采用Binder机制进行IPC通信?

… …

Android系统启动流程图

大厂永恒敲门砖——Android 系统启动流程详解

下面给大家依次分析一下图中各个层次的含义

Loader层

系统电源以及系统启动

  • 当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行;加载引导程序到RAM,然后执行

引导程序

  • 引导程序是在Android操作系统开始运行前的一个小程序,是运行的第一个程序,因此它是针对特定的主板与芯片的,可以使用redboot,uboot,qibootloader或者开发自己的引导程序,它不是Android操作系统的一部分,引导程序是OEM厂商或者运营商加锁和限制的地方

引导程序分两个阶段执行:

  • 检测外部的RAM以及加载对第二阶段有用的程序
  • 引导程序设置网络,内存等,这些对于运行内核是必要的,为了达到特殊的目标,引导程序可以根据配置参数或者输入数据设置内核

Kernel层

Kernel层指的就是Android内核层,这里一般开机刚结束进入Android系统,Kerner层的启动流程如下:

  • 启动swapper进程(pid=0),这是系统初始化过程kernel创建的第一个进程,用于初始化进程管理、内存管理、加载Display、Camera、Binder等驱动相关工作
  • 启动kthreadd进程,这是Linux系统的内核进程,会创建内核工作线程kworkder、软中断线程ksoftirqd和thermal等内核守护进程。kthreadd是所有内核进程的鼻祖

Native层

这里的native层主要包括有init进程孵化的用户空间的守护进程,bootanim开机动画和hal层等。init是Linux系统的守护进程,是所有用户空间进程的鼻祖。init进程是Linux系统中用户空间的第一个进程,进程号固定为1

  • init进程会孵化出ueventd、logd、healthd、installd、adbd、lm这里写代码片kd等用户守护进程
  • init进程还会启动ServiceManager(Binder服务管家)、bootanim(开机动画)等重要服务
  • init进程孵化出zygote进程,Zygote进程是Android系统的第一个Java进程(虚拟机进程),zygote进程是所有Java进程的父进程

Framework

  • Zygote进程,是由init进程通过解析init.rc文件后fork生成的,Zygote进程主要包含: – 加载ZygoteInit类,注册Zygote Socket服务端套接字; – 加载虚拟机; – PreloadClasses; – PreloadResouces
  • Zygote进程fork出System Server进程,System Server是Zygote孵化的第一个进程,地位非常重要
  • System Server进程:负责启动和管理整个Java framework,包含ActivityManager,PowerManager等服务。
  • Media Server进程:负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务

App

  • Zygote进程孵化出的第一个App进程是Launcher,这是用户看到的桌面App
  • Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上
  • 所有的App进程都是由Zygote进程fork生成的

现如今Android 工程师的竞争环境越来越激烈,但 Andorid 开发仍然是一个刚需的工种,行业对人才的需求从未终止,但与此同时也对我们提出了更高的要求;如果你仍然只是在日常开发过程中复制粘贴,或者仍以完成一个项目需求为唯一目的,已经不能算是合格的工程师了

如果此时你还没有掌握一套主流技术,那么你就必须在最短的时间内迅速掌握住,不然你就会被社会所淘汰,那我们应当如何去学习呢?

经过十个小时的编码排页,可算把腾讯大牛所整理的一张 Android Framework 思维导图及其配套的一份高工学习手册整理成 PDF 文档,需要的小伙伴:可私信发送 "FW 进阶" 即可 免费获取↓↓↓

————私信发送 "FW 进阶" 即可 “领取《腾讯大牛的 Android Framework 思维导图及高工学习手册》”PDF 版

Android Framework 思维导图

大厂永恒敲门砖——Android 系统启动流程详解

手册内容展示如下:

Framework 高工学习手册— Liunx 内存基础篇

大厂永恒敲门砖——Android 系统启动流程详解

Framework 高工学习手册— Binder 源码篇

大厂永恒敲门砖——Android 系统启动流程详解

Framework 高工学习手册—Hander消息机制篇

大厂永恒敲门砖——Android 系统启动流程详解

Framework 高工学习手册—AMS篇

大厂永恒敲门砖——Android 系统启动流程详解

Framework 高工学习手册—PMS篇

大厂永恒敲门砖——Android 系统启动流程详解

Framework 高工学习手册—WMS篇

大厂永恒敲门砖——Android 系统启动流程详解

需要完整版《腾讯大牛的 Android Framework 思维导图及高工学习手册》PDF 文档的小伙伴:可在评论区下方留言,或者私信发送 "FW 进阶" 即可 免费获取↓↓↓

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 5月 19日 上午11:47
下一篇 2023年 5月 19日 上午11:54

相关推荐

  • 流量超套了是立即付费吗?(手机流量超了我有提醒吗)

    今天是2022年9月13日星期二(农历壬寅八月十八),我们家挂着的哪本日历上写的是“黄道吉日”。 上午我和儿子陪姐姐、姐夫去沈阳棋盘山风景区爬山、转湖。秋高气爽,湖光山色,令人陶醉…

    2023年 6月 16日
  • 微信团队申诉辅助验证是什么意思

    微信作为我们日常生活中的重要工具,不仅提供了便捷的通讯方式,还集合了多种实用功能。然而,有时我们可能会遇到微信账号被封禁的情况。此时,如何通过微信团队自助工具进行申诉解封成为了一个…

    2024年 1月 6日
  • 怎么样在手机上设置倒计时提醒

    很多人在自己的工作和生活当中,会有一些比较重要的日子,这个日子可能有纪念意义,也有可能是有一些重要的事情需要那天去做。为了防止自己遗忘,并时刻警醒自己,很多人会做一个倒计时提醒,如…

    2022年 12月 17日
  • 小米手机怎样分享wifi密码给朋友

    #暑期创作大赛##图文作者打造计划# 朋友们大家好,我是小俊,今天小俊给大家分享一下小米手机如何快速分享wifi密码给别人的方法,毕竟我们在生活中经常使用手机wifi来进行上网,但…

    2024年 1月 12日
  • 中兴u880最新官方刷机包(中兴u880 升级包)

    提到中兴,相信众多00后对这个品牌十分陌生,然而在90后、80后的记忆中,这个品牌注定留下了浓墨重彩的片段。曾经的“中华酷联”时代,中兴还排在华为前面,推出的低价智能手机在国内热销…

    2023年 3月 2日
  • 苹果手机睡眠模式怎么关闭(苹果11睡眠模式怎么关闭)

    苹果手机是现代人常用的一种电子设备。在日常使用中,我们经常会把手机放在桌子上或者握在手中,但是当我们没有使用手机时,我们会将其放下并进入睡眠状态,以省电和保护电池寿命。然而,有时候…

    2023年 5月 30日
  • 耳机怎么煲音质才好

        近几年你肯定听说过“煲耳机”概念。说的跟煲粥一样简单,但要是实际操作起来是很困难的。那么这次的科普就叫你,耳机怎么“煲”才好听? &…

    数码教程 2023年 8月 24日
  • vivo跨平台,vivo框架有哪些

    vivo 终于赶上 Android 阵营的大部队,在上周推出了首款平板产品 vivo Pad,产品形态讨喜,OriginOS HD 用着也很顺手。 而对 vivo 而言,这块平板补…

    2023年 4月 15日
  • apple 是怎么为阿拉伯用户做设计的

    产品在出海后,需要针对性地对不同国家进行本土化设计,以切合本土用户的使用习惯。本文以Apple为例,分析它是如何针对阿拉伯用户做本土化设计的,希望对你有帮助。 全世界大概有 6.6…

    2023年 1月 15日
  • 忆东坡词牌

    近日,沈伟导演的现代舞诗剧《诗忆东坡》在上海首演。舞作以创新的艺术手法,挖掘千古文人苏东坡背后的新活力,给观众带来一场精彩的视觉盛宴。 “人人皆爱苏东坡,你我都是苏东坡”,对每一个…

    数码教程 2023年 8月 5日