Androidシステムの起動シーケンスについて詳しく
Androidシステムの起動シーケンス
- 通電起動:機器に電流が流れると、電源管理チップからプロセッサへの合図が入り、プロセッサの作動が開始されます。
- ブートローダー:プロセッサーが最初に起動する際に、ブートローダーが呼ばれます。これは小さなプログラムで、ハードウェアデバイスの初期化とOSのカーネルのロードを担当します。
- カーネルの起動: ブートローダーは、Android オペレーティング システムのカーネルを読み込みます。その後、カーネルはメモリ管理、プロセス管理、デバイスドライバなどのシステムリソースを初期化します。
- カーネル起動後にinitプロセスが起動され、initプロセスはシステムサービス、システムサービス、アプリケーションの初期化を行います。
- システムサービスの起動:initプロセスは、設定ファイル(init.rc)に基づいて、Zygoteプロセス(アプリケーションの起動を担当)、SurfaceFlinger(システムインターフェースの表示を担当)、MediaServer(メディア関連の機能を担当)など、さまざまなシステムサービスを起動します。
- アプリ起動:Zygoteプロセスはシステム起動時に使われる一般的なクラスやリソースをプリロードすることでアプリ起動を高速化しています。ユーザーがアプリアイコンをタッチするとZygoteプロセスは、新しいプロセスをフォルクして、アプリのコードやリソースを読み込んでアプリを起動させます。
- アプリケーションの画面データをSurfaceFlingerが受け取り、画面に描画することで、ユーザーにはアプリケーションの画面が表示される。
Androidシステムの起動の基本的な流れは上述のとおりです。デバイスによって若干の違いがあるかもしれませんが、全体的な流れは大体同じです。