framework-android启动

news2024/9/28 5:34:37
1:BootRom->BootLoader->Linux Kernel->Init->Zygote-
>SystemServer->Launcher
BootLoader 层:主要包括 Boot Rom Boot Loader
Kernel 层:主要是 Android 内核层
Native 层:主要是包括 init 进程以及其 fork 出 来的用户空间的守护
进程、 HAL 层、开机动画等
JAVA Framework 层:主要是 AMS PMS Service 的初始化
Application 层:主要指 SystemUI Launcher 的启动
2:
Android 系统启动流程:
第一步:手机开机后,引导芯片启动,引导芯片开始从固化在
ROM 里的预设代码执行,加载引导程序到到 RAM bootloader
RAM ,初始化硬件参数等功能;
第二步:硬件等参数初始化完成后,进入到 Kernel 层, Kernel
主要加载一些硬件设备驱动,初始化进程管理等操作。在 Kernel
中首先启动 swapper 进程( pid=0 ),用于初始化进程管理、内管
管理、加载 Driver 等操作,再启动 kthread 进程 (pid=2), 这些 linux
享学课堂 系统的内核进程, kthread 是所有内核进程的鼻祖;
第三步: Kernel 层加载完毕后,硬件设备驱动与 HAL 层进行交互。
初始化进程管理等操作会启动 INIT 进程 ,这些在 Native 层中;
第四步: init 进程 (pid=1 init 进程是所有进程的鼻祖,第一个启
) 启动后,会启动 adbd logd 等用户守护进程,并且会启动
servicemanager(binder 服务管家 ) 等重要服务,同时孵化出
zygote 进程,这里属于 C++ Framework ,代码为 C++ 程序;
第五步: zygote 进程是由 init 进程解析 init.rc 文件后 fork 生成,它
会加载虚拟机,启动 System Server(zygote 孵化的第一个进程 )
System Server 负责启动和管理整个 Java Framework ,包含
ActivityManager WindowManager PackageManager
PowerManager 等服务;
第六步: zygote 同时会启动相关的 APP 进程,它启动的第一个 APP
进程为 Launcher ,然后启动 Email SMS 等进程,所有的 APP 进程
都有 zygote fork 生成
3:
init 进程是 linux 系统中用户空间的第一个进程,进程号为 1.
享学课堂 bootloader 启动后,启动 kernel kernel 启动完后,在用户空
间启动 init 进程,再通过 init 进程,来读取 init.rc 中的相关配置,从
而来启动其他相关进程以及其他操作。
init 进程被赋予了很多重要工作, init 进程启动主要分为两个阶
段:
第一个阶段完成以下内容:
ueventd/watchdogd 跳转及环境变量设置
挂载文件系统并创建目录
初始化日志输出、挂载分区设备
启用 SELinux 安全策略
开始第二阶段前的准备
第二个阶段完成以下内容:
初始化属性系统
执行 SELinux 第二阶段并恢复一些文件安全上下文
新建 epoll 并初始化子进程终止信号处理函数
设置其他系统属性并开启属性服务
init进行第三阶段主要是解析 init.rc 来启动其他进程,进入无限循
环,进行子进程实时监控。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SM系列】简单说说SM2,SM3,SM4加密算法

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、什么是SM2加密?2.1 应用场景2.2 与RSA算法的区别 三、什么是SM3加密…

AI修复老照片的完整教程来了!

大家好,我是每天分享AI应用的萤火君! 最近老照片修复的项目比较火爆,很多同学都拿到了成果,这个技术上已经没有太大的难度,结合各种工具可以做出不错的效果,但是很多人还不知道如何实现,这篇文…

最常用的100个Python库入门

文章目录 最常用的100个Python库入门命令行界面和参数解析日志和错误处理多媒体处理异步编程Web开发网络和API代码分析和测试数据处理和科学计算数据库和数据存储系统和文件操作安全性机器学习和深度学习其他工具和库任务调度进度条虚拟环境管理异步任务队列文档生成HTML处理SQ…

Web APIs第一天

第一天&#xff1a;DOM获取元素&#xff0c;获取元素&#xff0c;修改属性 声明新变量&#xff0c;一般默认const&#xff0c;如果变量的值不变&#xff0c;则使用const。如果变量的值变化&#xff0c;则使用let。var已经被淘汰了。 <script>const arr [red, pink]arr.…

ESP32!Thonny+MicroPython+ESP32开发环境搭建!!

准备工具&#xff1a; ThonnyMicroPythonESP32 一.Thonny安装 下载地址&#xff1a;Thonny, Python IDE for beginnershttps://thonny.org/ 二.下载esp32环境——根据型号下载 下载地址&#xff1a;MicroPython - Python for microcontrollershttps://micropython.org/dow…

登录页面设计课堂,用8个案例带你学习

本文将以 8个最受欢迎的登录页模板为例&#xff0c;给大家分析想要提升登录页转化率&#xff0c;设计登录页时应该关注的要点 作为设计师&#xff0c;在设计登录页面时&#xff0c;除了要让你的界面设计拥有出色的视觉效果&#xff0c;还要想尽可能地获取新用户&#xff0c;并留…

分享一个使用智狐联创AI平台创建的WordPress分类广告插件

为了提升广告的效果与管理效率&#xff0c;我们开发了一款基于WordPress的分类广告插件&#xff0c;旨在帮助用户根据文章分类方便地显示相关广告。这款插件不仅简化了广告的管理流程&#xff0c;还提高了广告的精准投放。 插件功能概述 1. 广告管理 用户可以通过插件后台轻…

谷歌seo优化有能一步提升的方法吗?

网站优化的方法有很多&#xff0c;但没有一刀切的解决方案。 谷歌SEO绝对不是一项廉价的服务。任何声称能以低价实现显著效果的承诺都值得怀疑。 谷歌SEO是一项需要人力、技术和资源的工作&#xff0c;如果你打算自己做 最少需要一个人的年薪&#xff0c;还要考虑域名、服务器…

Linux中的编译器gcc/g++

目录 一、gcc与g的区别 1.gcc编译器使用 2.g编译器使用 二、gcc/g编译器编译源文件过程 1.预处理 2.编译 3.汇编 4.链接 三、静态库和动态库 1.库中的头文件作用 2.静态库 3.动态库 四、gcc编译器的一些选项命令 一、gcc与g的区别 gcc用于编译C语言代码&#xff…

Echarts可视化大屏数据详解

1、ECharts介绍 1.1、什么是ECharts ECharts是一款由百度开发并开源的数据可视化图表库&#xff0c;旨在帮助开发者通过简单易用的方式实现复杂的数据展示和分析需求。它完全基于 JavaScript 开发&#xff0c;利用 HTML5 的 Canvas 技术进行图形渲染&#xff0c;这使得它能够…

精密五金零配件加工的核心技术解析

在现代制造业中&#xff0c;精密五金零配件起着至关重要的作用。从电子产品到机械设备&#xff0c;从汽车制造到航空航天&#xff0c;都离不开高精度的五金零配件。而要实现精密五金零配件的加工&#xff0c;需要掌握一系列核心技术。时利和与大家一同解析精密五金零配件加工的…

Flutter之修改App的图标、名称

一、修改App名称 Android 路径&#xff1a;android/app/src/main/AndroidManifest.xml, 找到 android:label”string/app_name”。点击Ctrl鼠标左键转到string.xml 修改名称&#xff1a; <resources><string name"app_name">你的APP名称</string>…

如何使 div 居中?CSS 居中终极指南

前言 长期以来&#xff0c;如何在父元素中居中对齐一个元素&#xff0c;一直是一个让人头疼的问题&#xff0c;随着 CSS 的发展&#xff0c;越来越多的工具可以用来解决这个难题&#xff0c;五花八门的招式一大堆&#xff0c;这篇博客&#xff0c;旨在帮助你理解不同的居中方法…

获取navicat已保存数据库连接的密码

打开connections.ncx&#xff0c;可以看到Passwordxxx,这是加密后的密码 解密 在线的运行工具https://tool.lu/coderunner 运行如下代码&#xff0c;代码中的密码改成你的密码&#xff0c;在倒数第二行位置 <?phpnamespace FatSmallTools;class NavicatPassword{protected…

基础数据结构之双向链表

目录 基础定义 节点的定义 节点的初始化 创建双链表 1.前插法 2.尾插法 双向链表的遍历输出 指定位置插入 双向链表的按位取值 任意位置删除 双向链表销毁 主程序入口​​​​​​​ 基础定义 所谓的双向链表就是单向链表多了一个前驱指针。双向链表是由一个个结点组成每个结点…

【LLM】大模型基础--大规模预训练语言模型的开源教程笔记

1.引言 本文以DataWhale大模型开源教程为学习路线&#xff0c;进行一整个大模型的入门操作 什么是语言模型 语言模型是一种对词元序列&#xff08;token&#xff09;的概率分布&#xff0c;可以用于评估文本序列的合理性并生成新的文本。 从生成文本的方式来看&#xff0c;…

【C++ Primer Plus习题】10.4

问题: 解答: main.cpp #include <iostream> #include "sales.h" using namespace std; using namespace SALES;int main() {Sales s1;double de[QUARTERS] { 12.1,32.1,42.1,51.1 };Sales s2(de, QUARTERS);s1.showSales();s2.showSales();return 0; }sales.…

IP/TCP/UDP协议的关键知识点

导语&#xff1a;网络协议是理解网络情况的基础&#xff0c;当遇到网络问题时&#xff0c;首先可以从网络协议入手&#xff0c;熟悉的网络协议可以有效帮助小伙伴们排查或者说定位大概的问题方面。本文整理了目前最常用的网络通信协议&#xff0c;相信对小伙伴们肯定都有帮助。…

C#使用MQTT(一):MQTT服务端

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09; 即时通讯协议&#xff0c; 开发商 IBM MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上&#xff0c;是为硬件性能低下的远程设备以及网络状…

将RK3588平台的TMC等USB function驱动挪出内核源码树

背景 前一段时间定位一个上位机通过USB-TMC连接下位机&#xff08;基于RK3588平台&#xff09;时界面发生卡顿的问题&#xff0c;发现USB-TMC驱动代码是放在内核源码树里跟内核一起编译的&#xff0c;觉着这样既不便于更换TMC 驱动版本&#xff08;每次修改代码都要重编内核&a…