返回
把握进程线程,透视Android系统运行
Android
2023-10-07 12:31:54
Android操作系统是当今最流行的移动操作系统之一,为用户提供了丰富多样的功能和服务。为了确保系统的流畅和稳定运行,Android系统内部采用了多进程和多线程的架构设计。其中,进程是系统中运行的独立程序,而线程则是进程中的一个执行单元。
在Android系统中,存在着许多重要的进程和线程,它们负责着各种各样的系统功能和服务。为了方便大家对系统中的进程线程有一个直观的感受,本文将通过几个简单的shell命令来查看系统中的进程和线程。
查看进程
要查看系统中的进程,我们可以使用以下命令:
adb shell ps
该命令将列出系统中的所有进程,包括应用程序进程和系统进程。我们可以通过以下字段来查看进程的信息:
- PID:进程的ID号
- PPID:父进程的ID号
- USER:进程的所有者
- NI:进程的优先级
- VIRT:进程占用的虚拟内存大小
- RES:进程占用的物理内存大小
- SHR:进程占用的共享内存大小
- S:进程的状态
- UTIME:进程在用户态的时间
- STIME:进程在内核态的时间
- COMMAND:进程的命令行
例如,以下输出显示了系统中的前10个进程:
root@android:/ # adb shell ps
PID PPID USER S %CPU %MEM VSZ RSS WCHAN PC NAME
226 1 root S 0.0 0.1 11012 3768 - 98a04b88 S android.system.suspend
350 1 root S 0.0 0.1 10636 3852 - 989b29c4 S android.kernel.taskprocd
188 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
189 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
213 1 root S 0.0 0.0 6412 2188 - 989a9064 S com.google.android.gms.a
214 213 root S 0.0 0.0 3884 1520 - 989a9a6c S com.google.android.gms
215 213 root S 0.0 0.0 3884 1520 - 989a9a6c S com.google.android.gms
216 213 root S 0.0 0.0 3884 1520 - 989a9a6c S com.google.android.gms
217 213 root S 0.0 0.0 3884 1520 - 989a9a6c S com.google.android.gms
218 213 root S 0.0 0.0 3884 1520 - 989a9a6c S com.google.android.gms
从输出中,我们可以看到每个进程的PID、PPID、USER、NI、VIRT、RES、SHR、S、UTIME、STIME和COMMAND等信息。我们可以通过这些信息来分析进程的运行情况。
查看线程
要查看系统中的线程,我们可以使用以下命令:
adb shell ps -t
该命令将列出系统中的所有线程,包括应用程序线程和系统线程。我们可以通过以下字段来查看线程的信息:
- PID:线程的ID号
- TID:线程的TID号
- PPID:父进程的ID号
- USER:线程的所有者
- NI:线程的优先级
- VIRT:线程占用的虚拟内存大小
- RES:线程占用的物理内存大小
- SHR:线程占用的共享内存大小
- S:线程的状态
- UTIME:线程在用户态的时间
- STIME:线程在内核态的时间
- COMMAND:线程的命令行
例如,以下输出显示了系统中的前10个线程:
root@android:/ # adb shell ps -t
PID TID PPID USER S %CPU %MEM VSZ RSS WCHAN PC NAME
226 226 1 root S 0.0 0.1 11012 3768 - 98a04b88 S android.system.suspend
350 350 1 root S 0.0 0.1 10636 3852 - 989b29c4 S android.kernel.taskprocd
188 188 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 190 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 191 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 192 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 193 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 194 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 195 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
188 196 1 system S 0.0 0.0 4456 2024 - 989a9a38 S android.bg.subprocess
从输出中,我们可以看到每个线程的PID、TID、PPID、USER、NI、VIRT、RES、SHR、S、UTIME、STIME和COMMAND等信息。我们可以通过这些信息来分析线程的运行情况。
小结
通过本文介绍的几个简单的shell命令,我们可以查看系统中的进程和线程,并对它们的运行情况有一个直观的感受。这些信息对于我们后续再进一步的分析各大服务的源码非常有帮助。