你的位置:首页 > 操作系统

[操作系统]系统进程 zygote(一)—— 概述


和蔼的春光,充满鸳鸯的池塘;快辞别寂寞的梦乡,来和我摸一会鱼儿,折一枝海棠。—— 徐志摩·醒!醒!

ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

先看一张图 (android boot sequence,出处不详):

android 的底层是 linux kernel,由 bootloader 负责加载。kernel 启动后,首先启动 init 进程,再由 init 进程依次启动系统所需的其他进程,包括 zygote 进程。

由 init 启动的进程在“system\core\rootdir\root.rc”脚本中都有描述:

 

再来看 zygote.rc (以 init.zygote32.rc 为例):

 

这段脚本要求 init 进程创建一个名为 zygote 的进程,该进程要执行的程序是“/system/bin/app_process”。并且为 zygote 进程创建一个 socket 资源 (用于进程间通信,ActivityManagerService 就是通过该 socket 请求 zygote 进程 fork 一个应用程序进程)。

zygote 进程在初始化时会启动虚拟机,并加载一些系统资源。这样 zygote fork 出子进程后,子进程也继承了能正常工作的虚拟机和各种系统资源,接下来只需装载 apk 文件的字节码就可以运行应用程序了,可以大大缩短应用的启动时间,这就是 zygote 进程的主要作用。

Java 应用程序不能直接以本地进程的形态运行,必须在一个独立的虚拟机中运行。如果每次都重新启动虚拟机,将严重拖慢应用程序的启动速度。

Linux 的进程都是 fork 出来的,fork 出的子进程与父进程共享内存映像。只有当子进程改写内存时,操作系统才会为其分配一个新页面,并将老页面上的数据复制一份到新页面,这就是“写时拷贝(Copy On Write)”。

学习资料:(1)http://blog.csdn.net/luoshengyang/article/details/6768304 (2)《Android 框架揭秘》(3)《深入解析 Android 5.0 系统》




跟团去湖北旅游多少钱几月去湖北旅游最好去湖北的旅游团价格去湖北旅游必去景点去湖北旅游要多少钱2015清明节清远去哪看花?清远佛冈2015清明节赏花攻略? 清远田野绿世界禾雀花好看吗?田野绿世界禾雀花最佳观赏期? 佛冈田野绿世界4月有什么花?田野绿世界4月开什么花? 德庆盘龙峡4月赏花攻略?4月去盘龙峡看什么花? 2015春节台山下川岛航班安排?台山上川岛春节开门吗? 2015牛鱼嘴禾雀花开了吗?清远牛鱼嘴禾雀花盛花期是几月? 珠海一棵树农庄野战怎么收费?一棵树农庄能玩真人cs吗? 2015春节珠海去哪里好玩?珠海春节带家人孩子去哪玩? 十月和红叶有个约会 河南最佳赏红地推荐 丽江街头 那些你拒绝不了的美味 青海马背藏戏 盛装的高原美女 探索长白山十大神秘之美 去香港旅游怎样兑换港币才最划算? 港澳通行证办理流程? 从香港买的东西过罗湖海关会查吗? 兑换港币的常识有哪些?兑换港币要注意什么事项? AQ12EA820GAJME Datasheet AQ12EA820GAJME Datasheet 08055U1R2CAT2A Datasheet 08055U1R2CAT2A Datasheet SQCAEA1R8BAJME Datasheet SQCAEA1R8BAJME Datasheet 沈阳到香港旅游价格 沈阳到香港旅游价格 沈阳到香港旅游价格 长春跟团去港澳价格 长春跟团去港澳价格 长春跟团去港澳价格 杭州到香港旅游价格 杭州到香港旅游价格 杭州到香港旅游价格