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

相关推荐

  • vivo新系统originos有啥功能

    OriginOS是vivo研发的新系统于2020年11月18日在深圳发布,之前vivo搭载的是FuntouchOS系统,那vivo新上的系统到底有那些功能。 ☞OriginOS主屏…

    2023年 5月 6日
  • 在微信公众号上发文章的方法有哪些

    1. 登录公众号:打开微信,点击右下角的“我”,进入个人主页,然后点击右上角的“+”号,选择“公众号”,进入公众号管理页面。 3. 选择发布类型:在素材管理页面上,点击右下角的“+…

    数码教程 2023年 7月 4日
  • 基于可信ip的通用零信任身份认证方案

    2021年10月 1. 零信任简介 随着云服务、边缘终端、便携设备、移动办公等新技术的普及,内外网的边界逐渐模糊。传统基于边界的安全防护逻辑开始逐步失效。传统网络拓扑中,所有的安全…

    2023年 3月 4日
  • iphone电信volte开通方法

    对于中国用户来说,有没有必要升级更新到iOS12.2正式版呢?答案是肯定的! iOS12.2正式版开启了iPhone电信VoLTE功能,所有苹果iPhone电信手机号码用户,为了万…

    2023年 1月 24日
  • 中伙伴计划在哪里发布

    抖音上发布中视频赚。在抖音上发发视频,三个平台都会给你发工资。很多人可能不会相信,我只能说你对抖音的认知还是不够的。很多人通过这种方法每个月都能轻轻松松的挣到几千块钱。这种操作的方…

    2023年 5月 31日
  • 搜狗输入法被判劫持搜索引擎流量

    6月27日,海淀法院对奇虎公司、百度公司,以及动景公司和神马公司因搜狗输入法通过搜索候选词为搜狗搜索导流量分别起诉搜狗公司等不正当竞争纠纷三案集中宣判,认定搜狗公司构成不正当竞争,…

    数码教程 2023年 8月 13日
  • 身份证怎么装进手机成电子身份证

    分享最实在的玩机技巧,洞察最前沿的科技资讯!大家好,这里是手机科技园! 身份证在生活中经常会用到,很多人出门经常忘记携带,今天就来教你一招,如何把身份证写入到手机里,生成电子身份证…

    2023年 1月 13日
  • 乐视手机账号登录不上怎么办,乐视手机怎么登录乐视账号

    IT之家1月31日消息 前些日子,有使用乐视手机的网友就遇到了这么一件苦恼的事儿:将手机恢复出厂设置之后,就再也无法登录账号了,一直出现“服务器异常,重新尝试”的错误提示。 针对这…

    2023年 11月 30日
  • 手机的密码忘了怎么开锁你能教我一下吗

    手机密码忘了怎么开锁?好多人用恢复出厂设置来解决这个问题。但是这样以来,我们手机里很多重要的资料就也被删除了,很令人烦恼。而有些朋友干脆就去花钱(一般200到300元左右)去修理店…

    2023年 6月 3日
  • 怎么防止腾讯大王卡偷跑流量

    开源和节流是省钱的两种方式,同样适用于省流量。 今天介绍一种节流方式节省流量的方法。 大家的手机安装的APP越来越多,很多应用即使不打开,也会自动跑流量。 类似腾讯王卡这样的日租卡…

    2022年 12月 18日