您的位置:首页 > 移动开发 > Android开发

【读书笔记】Android安全机制解析与应用实践之安卓的启动

2016-04-23 18:33 309 查看
安卓的启动过程是这样子的

ROM上电
Bootloader引导程序启动
Linux内核启动
init进程启动
Android系统本地服务启动(NS)
Zygote进程启动
Android系统服务启动(SS)
Android系统主页面启动(HOME)

Android4.0之前的半杯是Linux2.6的内核
Android4.0之后的版本是3.X的内核,并且3.X的内核中含有Android源码,可以直接引导进入Android

Dalvik基于寄存器,JVM基于栈,Dalvik基于具体的CPU,通用性差,但是使用等长的指令,效率上要高

一个Dalvik应用就是一个Linux进程

Dalvik虚拟机执行.DEX文件,是.class文件经过dx软件处理后生成的





硬件驱动被分为内核空间和用户空间,Linux内核驱动程序运行于内核空间,HAL运行于用户空间

AIDL实现进程间通信:其他应用程序组件可以与这个应用程序的后台运行的Service进行交互, 另外,多个进程可以通过Service在保证进程安全的情况下进行交互

安卓中的ROM与PC不同,不是用的传统的EPROM或者EEPROM,而是用的NOR flash或者NAND flash,传统的ROM和NOR flash由于是字节寻址的,代码可以在ROM中直接读取并运行,但是NAND flash不是字节寻址,所以运行代码的时候需要先将代码拷贝到RAM里。ROM里固化的程序就是Bootloader,相当于电脑的BIOS

手机厂商常在Bootloader上加锁,防止刷固件

Linux映像分为两种,一种是未压缩的,image,一种是压缩的,成为zimage,后者要在执行前加上解压缩代码,速度慢,但是占用空间小,适用于嵌入式设备



安卓启动的过程:NS->zygote->SS->AMS->Lancher->home

NS层是安卓的系统内核层和应用层之间重要的通信桥梁,通过socket通信

Zygote:虚拟机实例的孵化器

SS是Zygote的第一个子进程,是安卓框架层的核心

SS会启动PMS PackageManagerService,由PMS来启动应用程序

Lancher会吧PMS启动的应用程序以快捷图标的形式展示在桌面上

Android系统升级的三种方式

数据线升级
SD卡升级
在线升级
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: