Android Process Information

本文描述了android启动之后的系统进程列表,并从log的角度来初步分析一下zygote进程的启动过程.

1 Process list:

用PS可以得到进程列表,现就最主要的一些进程作一个简单的介绍:

USER PID PPID VSIZE RSS WCHAN PC NAME

root 1 0 548 196 c00b8c14 0000d5cc S /init

......

root 734 1 72000 14172 c00b92b0 afe0c5a4 S zygote

root 769 1 716 264 c02265ec afe0c1dc S /system/bin/logcat

system 825 734 574128 28360 ffffffff afe0c47c S system_server

radio 877 734 158260 20040 ffffffff afe0d404 S com.android.phone

app_18 960 734 104180 15208 ffffffff afe0d404 S com.android.mms

app_8 979 734 118860 14044 ffffffff afe0d404 S android.process.media

app_9 991 734 91980 12264 ffffffff afe0d404 S com.android.alarmclock

app_14 1025 734 95636 13036 ffffffff afe0d404 S com.android.calendar

app_20 1146 734 99260 15320 ffffffff afe0d404 S com.android.music

app_47 1157 734 100204 15964 ffffffff afe0d404 S com.motorola.camera

app_11 1183 734 122672 23576 ffffffff afe0d404 S com.android.browser

app_6 1199 734 117032 20388 ffffffff afe0d404 S oms.mobilemusic

system 1244 734 99292 15940 ffffffff afe0d404 S com.android.settings

......

正如linux系统一样,第一个启动的进程当然是init了。从以上可以看出,所有应用层的进程都是zygote的子进程,事实上,jvm的初始化就是从zygote开始的,zygote是init的子进程,zygote是在通过init.rc中启动的。

我们再从以下的启动log 中来理解一下android的启动过程,包括runtime:

2log:

09-07 06:21:51.218: INFO/vold(538): Android Volume Daemon version 2.0

09-07 06:21:51.227: INFO/DEBUG(539): debuggerd: Jun 30 2009 17:00:51

09-07 06:21:51.247: ERROR/vold(538): Error opening switch name path '/sys/class/switch/test2' (No such file or directory)

09-07 06:21:51.247: ERROR/vold(538): Error bootstrapping switch '/sys/class/switch/test2' (m)

09-07 06:21:51.247: ERROR/vold(538): Error opening switch name path '/sys/class/switch/test' (No such file or directory)

09-07 06:21:51.247: ERROR/vold(538): Error bootstrapping switch '/sys/class/switch/test' (m)

09-07 06:21:51.247: DEBUG/vold(538): Bootstrapping complete

09-07 06:21:51.397: ERROR/flash_image(544): can't find recovery partition

09-07 06:21:51.468: DEBUG/qemud(546): entering main loop

09-07 06:21:52.288: DEBUG/AndroidRuntime(541): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<

09-07 06:21:52.288: DEBUG/AndroidRuntime(541): CheckJNI is ON

09-07 06:21:52.407: DEBUG/qemud(546): fdhandler_accept_event: accepting on fd 10

09-07 06:21:52.407: DEBUG/qemud(546): created client 0xe078 listening on fd 8

09-07 06:21:52.407: DEBUG/qemud(546): fdhandler_event: disconnect on fd 8

09-07 06:21:52.458: DEBUG/qemud(546): fdhandler_accept_event: accepting on fd 10

09-07 06:21:52.458: DEBUG/qemud(546): created client 0xf028 listening on fd 8

09-07 06:21:52.458: DEBUG/qemud(546): client_fd_receive: attempting registration for service 'gsm'

09-07 06:21:52.458: DEBUG/qemud(546): client_fd_receive: -> received channel id 1

09-07 06:21:52.468: DEBUG/qemud(546): client_registration: registration succeeded for client 1

09-07 06:21:52.937: INFO/(542): ServiceManager: 0xac38

09-07 06:21:52.957: INFO/AudioFlinger(542): AudioFlinger's thread ready to run for output 0

09-07 06:21:52.957: INFO/CameraService(542): CameraService started: pid=542

09-07 06:21:52.978: DEBUG/AndroidRuntime(541): --- registering native functions ---

09-07 06:21:53.308: INFO/Zygote(541): Preloading classes...

09-07 06:21:53.318: DEBUG/dalvikvm(541): GC freed 764 objects / 42216 bytes in 11ms

09-07 06:21:53.517: DEBUG/dalvikvm(541): GC freed 278 objects / 17160 bytes in 4ms

09-07 06:21:53.898: DEBUG/dalvikvm(541): GC freed 208 objects / 12696 bytes in 6ms

09-07 06:21:53.988: DEBUG/dalvikvm(541): Trying to load lib /system/lib/libmedia_jni.so 0x0

09-07 06:21:54.148: DEBUG/dalvikvm(541): Added shared lib /system/lib/libmedia_jni.so 0x0

09-07 06:21:54.148: DEBUG/dalvikvm(541): Trying to load lib /system/lib/libmedia_jni.so 0x0

09-07 06:21:54.158: DEBUG/dalvikvm(541): Shared lib '/system/lib/libmedia_jni.so' already loaded in same CL 0x0

09-07 06:21:54.158: DEBUG/dalvikvm(541): Trying to load lib /system/lib/libmedia_jni.so 0x0

09-07 06:21:54.158: DEBUG/dalvikvm(541): Shared lib '/system/lib/libmedia_jni.so' already loaded in same CL 0x0

09-07 06:21:54.158: DEBUG/dalvikvm(541): Trying to load lib /system/lib/libmedia_jni.so 0x0

09-07 06:21:54.158: DEBUG/dalvikvm(541): Shared lib '/system/lib/libmedia_jni.so' already loaded in same CL 0x0

09-07 06:21:54.168: DEBUG/dalvikvm(541): GC freed 462 objects / 29144 bytes in 8ms

......

09-07 06:22:03.509: INFO/dalvikvm(541): Splitting out new zygote heap

09-07 06:22:03.569: INFO/dalvikvm(541): System server process 570 has been created

09-07 06:22:03.569: INFO/Zygote(541): Accepting command socket connections

09-07 06:22:03.638: INFO/jdwp(570): received file descriptor 10 from ADB

09-07 06:22:03.797: DEBUG/dalvikvm(570): Trying to load lib /system/lib/libandroid_servers.so 0x0

......

09-07 06:22:04.179: INFO/SystemServer(570): Entered the Android system server!

09-07 06:22:04.209: INFO/sysproc(570): System server: entering thread pool.

09-07 06:22:04.267: ERROR/GLLogger(570): couldn't load <libhgl.so> library (Cannot find library)

09-07 06:22:04.338: INFO/SystemServer(570): Starting Power Manager.

09-07 06:22:04.387: INFO/ARMAssembler(570): generated scanline__00000077:03545404_00000A01_00000000 [ 30 ipp] (51 ins) at [0x190ed0:0x190f9c] in 6840752 ns

09-07 06:22:04.397: INFO/SystemServer(570): Starting Activity Manager.

09-07 06:22:04.578: INFO/SystemServer(570): Starting telephony registry

09-07 06:22:04.588: INFO/SystemServer(570): Starting Package Manager.

09-07 06:22:04.619: INFO/Installer(570): connecting...

09-07 06:22:04.619: INFO/installd(543): new connection

09-07 06:22:04.717: INFO/PackageManager(570): Got library android.awt in /system/framework/android.awt.jar

09-07 06:22:04.728: INFO/PackageManager(570): Got library android.test.runner in /system/framework/android.test.runner.jar

09-07 06:22:04.728: INFO/PackageManager(570): Got library com.android.im.plugin in /system/framework/com.android.im.plugin.jar

09-07 06:22:05.078: DEBUG/PackageManager(570): Scanning app dir /system/framework

......

07 06:22:07.780: INFO/SystemServer(570): Starting Window Manager.

......

07 06:22:22.187: DEBUG/HomeLoaders(611): --> starting applications loader

......

从log 中也可以看出:

1. 在zygote启动之后,GC在不停地进行垃圾回收;

2. Framework中的组件都是在SystemServer初始化的,这一点,从android的源码也能看出来;

3. 最后是启动应用层的组件.

更多相关文章

  1. Android之Service设置android:process作用
  2. Android---进程间通机制的简单理解
  3. android基础知识15:获得android系统信息04—ActivityManager
  4. Activity的四种启动模式和onNewIntent()
  5. Android ActivitiyThread的建立
  6. Android启动过程深入解析
  7. android刮奖控件,使用简单。
  8. 《Android(安卓)开发艺术探索》笔记2--IPC机制
  9. Binder驱动的实现

随机推荐

  1. Android(安卓)学习 设备管理器勾选后不能
  2. Android上传文件到Web服务器,PHP接收文件(
  3. 浅析android下如何通过jni监控wifi网络连
  4. android中ListView控件&&onItemClick事件
  5. 浅谈RelativeLayout相对布局
  6. 生成android的bks证书
  7. Android(安卓)4.0设计规范 优先导读 十大
  8. android布局文件中的include
  9. Android的焦点(Focus)问题
  10. Android之进度条