位置: IT常识 - 正文

腾讯一面—Android 系统启动流程详解(腾讯一面问什么)

编辑:rootadmin
腾讯一面—Android 系统启动流程详解 正文

推荐整理分享腾讯一面—Android 系统启动流程详解(腾讯一面问什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:腾讯一面和二面的区别,腾讯一面问什么,腾讯一面和二面的区别,腾讯一面问什么,腾讯一面结果,腾讯一面面什么,腾讯一面到二面大约几天,腾讯一面面什么,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

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

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

问题1:你了解Android系统系统启动流程吗?问题2:system_server为什么要在Zygote中启动,而不是由init直接启动呢?问题3:为什么要专门使用Zygote进程去孵化应用进程,而不是让system_server去孵化呢?问题4:能具体说说是怎么导致死锁的吗?问题5:Zygote为什么不采用Binder机制进行IPC通信?... ...

Android系统启动流程图

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

Loader层

系统电源以及系统启动

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

引导程序

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

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

检测外部的RAM以及加载对第二阶段有用的程序

引导程序设置网络,内存等,这些对于运行内核是必要的,为了达到特殊的目标,引导程序可以根据配置参数或者输入数据设置内核

Kernel层

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

启动swapper进程(pid=0),这是系统初始化过程kernel创建的第一个进程,用于初始化进程管理、内存管理、加载Display、Camera、Binder等驱动相关工作

腾讯一面—Android 系统启动流程详解(腾讯一面问什么)

启动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核心知识点笔记:

Android开发核心知识点笔记

Android Framework核心知识点笔记

音视频开发笔记,入门到高级进阶

Android Flutter核心知识点笔记与实战详解

性能调优核心知识点笔记

本文链接地址:https://www.jiuchutong.com/zhishi/299495.html 转载请保留说明!

上一篇:Oracle系列之十:Oracle正则表达式(“oracle”)

下一篇:路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)(路径规划的基本流程和方法)

  • 行政事业单位转账至个人账户条例
  • 所得税清缴时有哪些调整项
  • 税负怎么计算
  • 工业企业提供劳务收入属于什么收入
  • 建筑企业简易计税可以开专票吗
  • 商业汇票申请贴现分录
  • 金税四期上线后对企业的影响
  • 个人劳务费怎么交税
  • 培训费计入办公会计科目吗?
  • 注册资本余额为100万亿元
  • 会计集中核算模式
  • 刷单成本计入什么费用?
  • 科研项目间接费用会计分录
  • 固定资产折旧方法有几种
  • 资本公积金转增股本所获取的收益属于
  • 免抵退税额账务处理流程
  • 参加会议需要用身份证吗
  • 外购摩托车从销项税额中怎么抵扣?
  • 公司汽车装潢和保养做什么会计科目
  • 可供出售金融资产和长期股权投资
  • 会务费发票税率是
  • 刻章的发票怎么做分录
  • 个人劳务费可以不开发票吗
  • 兼职取酬案例剖析
  • 请问高人们旧房子要装修应怎样装
  • 暂估成本冲回之后成本变为负的
  • 附加税交税依据
  • 社保基数每个月可以调整一次吗
  • 购买小汽车增值税发票金额开错
  • 借款利息税前扣除比例
  • 收到社保补贴计入什么科目
  • 这个月只开了销项负数怎么办
  • 雇主责任保险
  • 待认证进项税额借方余额表示什么
  • 刚毕业的学生可以买学生票吗
  • 税控盘进项税已抵扣如何转出分录
  • 劳务的完成程度可以采用如下方法确定
  • 企业注销时无力缴纳社保
  • 实缴资金少有什么风险
  • 物资销售收入
  • yii框架连接数据库
  • 前端css要掌握到什么程度
  • opencv 方框识别
  • verilog hdl中任务可以调用
  • 金蝶软件怎么查银行科目明细
  • 工程结算期末有余额吗?
  • 可供分配利润的会计分录
  • 农村合作社不报税会导致经营异常吗
  • 政府补助 项目资本金
  • 个税申报系统累计收入怎么算
  • 企业固定资产折旧可以按照其价值和使用情况
  • sql 集合运算符
  • 加计扣除的增值税怎么做账
  • 税款减半征收如何申报
  • 销售折扣含义
  • 贷款服务的利息怎么算
  • 其他应付款坏账处理说明
  • 公司申请土地建厂房
  • 职工教育经费如何列支
  • 长期待摊费用可以摊销20年吗
  • 专用发票账目不对怎么办
  • 商业企业的期间费用包括
  • vcpkgsrv.exe是什么进程
  • windows+ctrl+m
  • win10服务出现了问题
  • sendmail -t
  • linux数据恢复公司 海南
  • win8系统怎样
  • centos7如何分区
  • 安卓退出界面
  • js上滑翻页
  • php绘制图形函数
  • unity官方插件
  • jquery的实现原理
  • jquery操作html代码
  • android实战项目实例
  • 深圳社保最迟每月几号交啊多少钱
  • 广东省退休公务员死亡抚恤金和丧葬费标准
  • 2018城镇土地使用税减免政策
  • 办公电话怎么设置铃声
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设