2011年03月
2011年03月31日
今回はカーネル側のbinderのドライバ(/dev/binder)の話。
プロセス間通信としてはJavaのRMIやGTKやBluetoothのスタックで使用されているD-Busがありますが、これらは通信の下位層としてはsocketを使用しています。このため特別なカーネルのドライバを必要としません。Androidのプロセス間通信は/dev/binderという独自のドライバを使います。それはなぜなのでしょうか?
2011年03月29日
今回はservice managerのメモ。
initはZygoteを起動するより先に /system/bin/servicemanagerを起動します。
init.rcを見るとFroyoまでは"critical"に指定されている唯一のサービスでした。
(Gingerbreadではinitから分化した/sbin/ueventd も"critical"になっていました。)
2011年03月24日
今回はBinder Threadについて。
Eclipseでアプリケーションのデバッグをするとアプリケーションのプロセスの中に、"Binder Thread #1", "Binder Thread #2" などの名前のスレッドがあるのがわかります。これらはいったい何をしているのでしょうか。
2011年03月17日
Androidのシステムでは同時にたくさんのプロセスでJava言語で書かれたプログラムがDalvikVMによって動いています。intentを発行して別のプロセスで処理を実行できることがAndroidでのプログラミングの大きな強みです。
このようなプロセスをまたがったメソッド呼び出しは下位レベルではBinderという技術が使われているのですが、私はいままでそれがぼんやりとしか理解できていませんでした。
ソースコードを無理やり追いかけたら、わかりかけてきたのでメモを残します。