Androidのバインダーに関する記事を読みました。この記事では、プロセスが共有メモリ内のオブジェクト参照をスワップし、マーシャリングとアンマーシャリングよりも効率的であると述べています...しかし、実際にはIPCメカニズムにマーシャリングとアンマーシャリングがあるかどうか?? 私は少し混乱しています...
誰かがバインダーメカニズムを説明したり、詳細な記事にリンクしたりできますか?
Androidのバインダーに関する記事を読みました。この記事では、プロセスが共有メモリ内のオブジェクト参照をスワップし、マーシャリングとアンマーシャリングよりも効率的であると述べています...しかし、実際にはIPCメカニズムにマーシャリングとアンマーシャリングがあるかどうか?? 私は少し混乱しています...
誰かがバインダーメカニズムを説明したり、詳細な記事にリンクしたりできますか?
Binder は、カーネルで実行される最適化されたマーシャリング メソッドです。
それに関するいくつかのリンク:
http://www.cubrid.org/blog/dev-platform/binder-communication-mechanism-of-android-processes/ http://lukejin.wordpress.com/2011/03/13/android%E4%B8% AD%E7%9A%84バインダー/
http://marakana.com/s/post/1340/Deep_Dive_Into_Binder_Presentation.htm
このリンクは、Binder がアーキテクチャとしてどのように機能するかについて非常に役立つ概要を提供し、アプリ開発者に関連する Binder の各側面 (インテント、メッセンジャー、AIDL) を利用するためのサンプル コードも提供します。
この記事によると、プロセスは共有メモリ内のオブジェクト参照を交換します
Binder は共有メモリー (ashmem も pmem) も使用しません。固定サイズのバッファを持つカーネル ドライバを使用します。データはカーネルにコピーされ、カーネルからコピーされます。これは安全な方法です。記事は「共有メモリ」をゆるく使っているのかもしれません。
混乱は、Binder プロトコルと Android の「Binder」RPC メカニズムの間にあると思います。プロトに関する限り、それは単にバイトがコピーされたりコピーされたりするだけです。Android プラットフォームは、Binder カーネル ドライバーを使用してオブジェクト指向のような RPC メカニズムを実装します。もちろん、これはオブジェクトをバイトに「マーシャリング」し、反対側でそれらをアンマーシャリングしてオブジェクトに戻します。これは、Parcel
クラスとParcelable
インターフェースの助けを借りて行われます。