突然消失するかもしれないブログ

”とつきえブログ”

Android SDKでpstreeしてみた

Androidのプロセスツリーの構造を見ていると実に面白いです。

目を惹くのがzygoteというプロセス。

zygoteからsystem_serverが起動されて、DalvikVM上のアプリはすべてsystem_serverから起動されるようです。

pstreeすると、zygote以下は、app_processというプロセス名として表示されます。また、app_processという名前に該当するファイルとしては、/system/bin/app_processがあります。

init
        |-zygote-+-system_server-+-
                                 |-android.process.acore
                                 |-android.process.media
                                 |-com.android.phone
                                 |-com.adnroid.alarmclock
                                 |-com.android.music
                                 |-com.android.mms
                                 |-com.google.process.gapps
                                 |-com.google.android.apps.maps

        |-mediaserver(25)-+-{mediaserver}(44)
        |                 |-{mediaserver}(45)
        |
        |-rild(22)-+-{rild}(41)
        |          |-{rild}(42)
        |          `-{rild}(43)
        |
        |-servicemanager

で、上記のsystem_serverというプロセスが、DDMSの左ペインに存在するsystem_processと表示されているプロセスと一致するのではないかと思います。う~んよくわかりません。

また、待ち受け画面を担当しているのが、android.process.acoreプロセスと思われます。straceで覗いているとそんな感じがします。

ちなみに、zygote、あるいは、system_server、あるいは、servicemanagerのプロセスをkill -9、するか、DDMS上でsystem_processをstopすると、カーネルより上のユーザ空間にあるAndroidシステムに再起動がかかります。

何度、kill -9しても正常に再起動してくるので、Androidのシステムを完全にフリーズさせることができません。どういう仕組みになっているのかわかりませんが、かなり丈夫です。

このとき、Linuxカーネル自体は生きているようで、/sbin/adbdが生きている限りadb.exe shellでログインすることができます。

う~ん、謎です。

Androidって、そんじょそこらのLinuxのサーバと比べても、かなり堅牢な作りになっているんじゃないでしょうか。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。