南京网站建设 seo,建电子商务网站多少钱,中信建设有限责任公司农业事业部,园林工程建设网站由于Android系统采用Linux架构#xff0c;所以Android的系统分区可以类比同样采用Linux架构的操作系统#xff08;如Windows#xff09;。
Android系统分区分类
现在一般常见的Android分区方式共有三种#xff0c;在不同的Android系统版本上会采用不同的分区方式。
1、传…由于Android系统采用Linux架构所以Android的系统分区可以类比同样采用Linux架构的操作系统如Windows。
Android系统分区分类
现在一般常见的Android分区方式共有三种在不同的Android系统版本上会采用不同的分区方式。
1、传统分区non-A/B分区一般常见于Android10及以下的手机
2、A/B分区部分机型会存在是两种更常用机型的过渡阶段
3、virtual A/B分区VA/B modem分区主要是手机短信的通讯模块bootloader分区主要用于线刷recovery分区只有用于普通刷机boot分区用于启动system分区系统分区data分区用户分区;cache分区存储使用过程中的缓存数据vendor包含有厂商私有的可执行程序、库、系统服务和app等。可以将此分区看做是system分区的补充厂商定制ROM的一些功能都可以放在此分区。
modem分区bootloader分区recovery分区boot分区system分区data分区cache分区
双清就是指对data分区和cache分区进行清理。
boot分区由 kernel 和 ramdisk 构成。存放BootLoader程序起开机启动和引导作用是手机接通电源后跑通的第一个程序。他的下级kernel内核分区负责扩充操作系统如Android OSMIUI的功能负责管理设备硬件调度系统进程设备内存等维持操作系统的稳定性。boot分区另一下级ramdisk虚拟内存分区该分区存放一些kernel分区运行必须的驱动让内核率先跑通虚拟的文件系统再通过ramdisk分区中的驱动跑通真正的文件系统有点拗口简而言之就是真正文件系统的临时替代品。要注意的是ramdisk分区的实际数据存储于RAM中。那么当boot分区损坏时导致BootLoader程序没法跑通故卡在开机第一屏卡米。当然当我们修改CPU调度或者给GPU超频时也需要修改boot分区的文件。
system分区这个分区包含了整个操作系统除 kernel 和 ramdisk 之外的其它部分包括 Android UI 和设备上预装的 APP。删除这个分区只会同步将 Android 系统从设备上卸载掉而不会导致设备不能重启因此你依然可以顺利让设备进入到 recovery 或 bootloader 模式来为它重新刷入一个新的 ROM。举一个天真的例子如果将存放在system中的MIUI14系统文件全部改成origin OS 3这年头什么UI都敢叫自己OS了那么你就完成了刷入origin OS 3的步骤。
recovery 分区相当于一个备用的 boot 分区利用它我们可以使设备启动到恢复模式窗口来进行一些高级的恢复和维护操作。
data分区也被称作 userdata是用户数据被存储的地方——也就是说你的联系人、短信、配置文件和你自己安装的 APP 都位于这里。删除这个分区相当于将你的设备恢复出厂设置你的设备会变得和你第一次开机或最后一次刷入官方/自定义 ROM 后一样。你在设备上点击清除用户数据或恢复出厂设置按钮后实际上清除掉的就是这个分区。
cache分区存放的是 Android 系统中经常被访问的数据和 APP 的部件。删除这个分区不会对你的个人数据造成影响这个分区上的数据会随着你继续使用设备被重新收集并存储在这里。
misc分区包含了各种以开关量形式保存的系统配置包括 CIDCarrier or Region ID、USB配置和某些硬件配置等。这是个很重要的分区如果它遭到了破坏或有数据丢失那么设备的一些功能可能无法正常使用
Android系统的启动
启动概述Loader Kernel Native Framework Application
细分BootRom Bootloader Kernel Init Zygote SystemServer Launcher
Loader层主要包括Boot Rom和Boot Loader Kernel层主要是Android内核层 Native层主要是包括init进程以及其fork出来的用户空间的守护进程、HAL层、开机动画等 Framework层主要是AMS和PMS等Service的初始化 Application层主要指SystemUI、Launcher的启动
bootloader分区分成两个部分分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader会进行一些硬件初始化工作获取内存大小信息等然后根据用户的按键进入到某种启动模式。
fastboot模式fastboot是android定义的一种简单的刷机协议用户可以通过fastboot命令行工具来进行刷机。比如说fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到boot分区中。
recovery模式recovery是android定义的一个标准刷机协议。当进入recovery模式时secondary stage bootloader从recovery分区开始启动recovery分区实际上是一个简单的Linux系统当内核启动完毕后开始执行第一个程序init(init程序是Linux系统所有程序的老祖宗)。init会启动一个叫做recovery的程序recovery模式的名称也由此而来。通过recovery程序用户可以执行清除数据安装刷机包等操作。
手机除了普通的CPU芯片以外还有MODEM处理器芯片。该芯片的功能就是实现手机必需的通信功能大家通常所的刷RADIO就是刷写modem分区。
系统OTA升级流程
非A/B升级
Android系统收到服务端下发的OTA推送将OTA包下载至cache分区。OTA包下载完成后将向misc分区写入指令表明下次启动时进入recovery模式并使用该OTA包进行升级。重启手机。重启后最先进入bootloaderbootloader会先判断按键组合、电源寄存器等随后会读取misc分区的内容并解析。由于步骤2中已经向misc分区写入了指令此处bootloader读取指令后会引导启动recovery系统。进入recovery读取cache分区中的OTA包并解析其中的升级脚本按照其指令对系统各个分区进行升级。如果recovery自身也需要升级会在此过程中向system中写入recovery-from-boot.p文件这是一个recovery升级所需要的patch。recovery会清除misc分区。重启手机。重启后最先进入bootloader判断按键组合、电源寄存器、misc分区内容等默认情况会启动Android系统此时已经是OTA升级后的新版本系统。新版本Android系统启动后会检查是否存在recovery-from-boot.p文件如果存在则会对recovery进行升级。
A/B升级
在Android O之后Google引入了一种新的分区结构称为A/B分区与之对应传统分区结构被称为non-A/B分区。
A/B分区结构顾名思义将系统分区分成了A和B两个槽(slot)手机启动时会选择A槽或者B槽启动运行过程中仅使用当前槽位的分区。一旦当前运行的槽出现问题系统仍可以选择另一个槽进行启动从而保证系统良好的可用性。
采用A/B分区结构能够实现无缝升级。例如用户正在运行A槽此时收到OTA推送则系统会在后台一边下载OTA数据一边同时对B槽进行升级。当B槽系统升级完成用户会收到重启提示此时重启手机将自动切换到B槽的新版本系统。在此过程中仅重启操作是会被用户感知的这个重启与普通重启的耗时没有什么区别。
如果OTA失败也仅仅是待升级的槽出现问题可以重新尝试OTA并不会影响用户当前运行的系统。
由于A/B分区结构可以实现一边从服务端获取OTA数据一边直接写入待升级的槽不需要临时存储OTA包的空间因此不再需要在cache或userdata分区预留足够空间。