android process information

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进程了,init的父进程id是0,即kenel。init进程是第一个用户空间进程,它又派生了许多进程,其中就包括Android中的zygote进程。

    另外,从以上进程列表可以看出,所有应用层的进程都是zygote 的子进程,事实上,jvm的初始化就是从zygote开始的,zygote是init的子进程,zygote是通过init.rc中启动的。

    logcat:用于android log的管理。我们用locat命令的时候,其实最终就是需要这个logcat进程去实现的。

    system_server:父类是zygote,我们通常所说的Android Framwork其实就是和这个system_server密切对应的。许多系统服务都是运行在这个进程中的。

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

2 log:​​​​​​​

    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. 在启动的时候,load了许多常用的类,包括但不限于libmedia_jni.so,libandroid_servers.so...

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值