Google社が公開したオーバービューから判断できることはこの程度だ。この先はさらに,内部構造に踏み込まないと分からない。しかし現状では,Androidのソース・コードの公開範囲はかなり狭い。開発ツールを除けば,カーネルとHTMLのレンダリング・エンジン(WebKit)だけで,構成要素のごく一部にすぎない注4)。ただし実際に動くAndroid SDKを通じてかなりの事実が浮かび上がってきた。

注4) ソース・コードの全体像は2008年中に公開するとGoogle社は発表している。

本物のLinuxを動かす

 SDKに付属するエミュレータは,オープンソースの「QEMU」をAndroid向けに適用したものだ。エミュレーションの対象となるハードウエアをQEMUで記述し,その上でAndroidの実行環境を動かしている。つまり,疑似的にAPI層を再現する方式(シミュレーション)ではなく,本物のソフトウエアを疑似的なハードウエアで動かしている注5)

注5) Google社はAndroidの移植性は高いという。「社内の技術者がAndroidをフィンランドNokia社のWeb端末『N800』に移植した。ソース・コードの変更個所はわずか4行。3時間で動かすことができた」(Rubin氏)。

 エミュレータのソース・コードを見ると,Androidが対象とするハードウエアが浮かび上がってくる(図2)。主なハードウエアの構成は「Android_arm.c」ファイルに記述されている。マイクロプロセサは「ARM926」。コアはARM9Eである。接続する周辺機器や割り込みコントローラなどは,同じファイルに記述してある。ただし主記憶のメモリ・サイズは「vl.c」,VRAMの大きさは「vl.h」ファイルに分散して記述されていた。前者は96Mバイト,後者は8Mバイトである。

図2 goldfishのメモリ・マップ 主記憶はソース・コードに示されたように,96Mバイト(a)。そこから連続的にVRAM領域が続く(b)。メモリ・マップドI/Oが最上位空間に割り当てられている。
図2 goldfishのメモリ・マップ 主記憶はソース・コードに示されたように,96Mバイト(a)。そこから連続的にVRAM領域が続く(b)。メモリ・マップドI/Oが最上位空間に割り当てられている。 (画像のクリックで拡大)