Skip to content

Commit 356f5de

Browse files
authored
Update 1.操作系统简介.md
1 parent e49d192 commit 356f5de

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

OperatingSystem/1.操作系统简介.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ Android平台的基础是Linux内核,比如ART虚拟机最终调用底层Linux
203203
- 预加载类preloadClasses:preloadClass函数的执行时间比较长,这是导致Android系统启动慢的原因之一。
204204
- 预加载资源preloadResouces:它主要是加载framework-res.apk中的资源。在UI编程中常使用的com.android.R.XXX资源是系统默认的资源,它们就是由Zygote加载的。
205205
- System Server进程,是由Zygote进程fork而来,`System Server是Zygote孵化的第一个进程`,System Server负责启动和管理整个Java framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务,也就是说Java中的核心Service都在这里启动。同时会启动Binder通信系统,调用Looper.loop()启动消息循环。
206+
另外System Server进程还会启动一个Watch Dog的现成。Watch Dog的中文意思是“看门狗”。我依稀记得其最初存在的意义是因为早期嵌入式设备上的程序经常“跑飞”(比如说电磁干扰等),所以专门设置了一个硬件看门狗,每隔一段时间,看门狗就去检查一下某个参数是不是被设置了,如果发现该参数没有被设置,则判断为系统出错,然后就会强制重启。在软件层面上,Android对SystemServer的参数是否被设置也很谨慎,所以专门为它增加了一条看门狗,可它看的是哪个门呢?就是看几个重要Service的门,一旦发现Service出了问题,就会杀掉system_server,而这也会使zygote随其一起自杀,最后导致重启Java世界。具体实现是隔一段时间给另外一个线程发送一条MONITOR消息,那个线程将检查各个Service的健康情况。而看门狗会等待检查结果,如果第二次还没有返回结果,那么它会杀掉SS。
206207
- Media Server进程,是由init进程fork而来,负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务。
207208
- Zygote进程孵化出的第一个App进程是Launcher,这是用户看到的桌面App;
208209
- Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上。

0 commit comments

Comments
 (0)