LinuxとAndroidの関係

  

AndroidはLinuxカーネルオペレーティングシステムに基づいていることを誰もが知っています。そして、かつてLinux Foundationとカーネルの問題のために違いがあったので、この記事ではAndroidカーネルの分析を始めます。それは主にAndroidとLinuxの間の関係を紹介します、そしてまたLinuxシステムで拡張されたAndroidシステムのいくつかの機能とドライバーについて話すでしょう。

AndroidはLinuxカーネルをベースにしていますが、それでもLinuxとの間には大きな違いがあります(たとえば、Androidは独自のドライバーをLinuxカーネルに追加します)。それらの関係は何かを分析しましょう。

まず、AndroidがLinuxを選ぶ理由

成熟したオペレーティングシステムがたくさんありますが、AndroidがLinuxカーネルを使うのはなぜですか。これは次のようなLinuxのいくつかの機能に関連しています。

1、強力なメモリ管理とプロセス管理スキーム

2、パーミッションベースのセキュリティモード

3、サポート共有ライブラリ

4、認定ドライバモデル

5、Linux自体はオープンソースプロジェクトです。

上記の機能の詳細については、Linux 2.6カーネルの公式ドキュメントを参照してください。これにより、後で学習する際にAndroid固有の機能をより理解しやすくなります。次に、AndroidとLinuxの関係を分析します。

次に、AndroidはLinuxではありません

このタイトルが表示されると、混乱するかもしれませんが、AndroidがLinuxカーネルをベースにしているとは必ずしも言われていません。混乱も普通です、まず以下の点を見てください、それから私達は各点を分析します、読んだ後、あなたはAndroidがLinuxではないと思うでしょう。

ローカルウィンドウシステムがないため、glibcはサポートされておらず、標準のLinuxアプリケーションのフルセットも含まれていません。また、Linuxは独自のドライバをサポートするように拡張されています。

1.ローカルウィンドウシステムがありません。

ローカルウィンドウシステムとは何ですか。ローカルウィンドウシステムは、GNU /Linux上のXウィンドウシステム、またはMac OX XのQuartzを指します。オペレーティングシステムが異なればウィンドウシステムも異なる可能性がありますAndroidはLinuxのXウィンドウシステムを使用していません(使用する必要はありません)。

2. glibcをサポートしていません

Androidはもともといくつかの携帯モバイル機器で使用されていたため、効率性およびその他の理由からAndroidはglibcをCライブラリとして使用しない場合があります。代わりに、Googleはglibcの代わりにBionic Libcのセットを開発しました。

3.標準のLinuxアプリケーション一式は含まれていません。

Androidは、Liunxシステムのカーネルを完全にはコピーしていません。たとえば、ARMアーキテクチャによって追加されたGold-Fishプラットフォーム、およびyaffs2 FLASHファイルシステムに基づいています。

4. Android固有のドライバ

これらの違いに加えて、Androidは主に以下に示すように、Linuxデバイスドライバも強化しました。

1)Android Binder Androidプラットフォームでプロセス間通信(IPC)機能を提供するためのOpenBinderフレームワークに基づくドライバ。ソースコードはdrivers /staging /android /binding.cにあります。

2)Android Power Management(PM)組み込みデバイス用に最適化された、標準のLinux電源管理システムをベースにした軽量のAndroid電源管理ドライバ。ソースコードは次の場所にあります。
kernel /power /earlysuspend.ckernel /power /consoleearlysuspend.ckernel /power /fbearlysuspend.ckernel /power /wakelock.ckernel /power /userwakelock.c

3)ローメモリマネージャ(ローメモリ) Killerは、必要なメモリを解放するために必要に応じてプロセスを強制終了するLinuxの標準的なOOM(Out Of Memory)メカニズムよりも柔軟性があります。ソースコードはdrivers /staging /android /lowmemorykiller.cにあります。

4)Anonymous共有メモリ(Ashmem)はプロセス間で大きな共有メモリを提供しながら、カーネルにこのメモリをリサイクルし管理するメカニズムを提供します。ソースコードはmm /ashmem.cにあります。

5)Android PMEM(物理)PMEMは、ユーザー空間、DSP、および一部のデバイスに連続的な物理メモリ領域を提供するために使用され、連続的な物理メモリでのみ機能します。ソースコードはdrivers /misc /pmem.cにあります。

6)Android Logger Androidシステムのさまざまなログをクロールするための軽量ログデバイス。ソースコードはdrivers /staging /android /logger.cにあります。

7)Androidアラームは、デバイスをスリープ状態から復帰させるためのタイマーを提供します。また、デバイスがスリープ状態でも実行されるクロックリファレンスを提供します。ソースコードはdrivers /rtc /alarm.cにあります。

8)USBガジェットドライバ標準のLinux USBガジェットドライバフレームワークに基づくデバイスドライバAndroid USBドライバは、ガジェットフレームワークに基づいています。ソースコードはdrivers /usb /gadget /にあります。

9)Android Ramコンソールデバッグ機能を提供するために、Androidではデバッグログ情報をRAMベースのバッファであるRAMコンソールと呼ばれるデバイスに書き込むことができます。ソースコードはdrivers /staging /androidにあります。

10)Androidタイミングデバイスはデバイスのタイミング制御を提供し、現在はバイブレータとLEDデバイスをサポートしています。ソースコードはdrivers /staging /android /timed_output.c(timed_gpio.c)にあります。

11)Yaffs2ファイルシステムAndroidはMTD nandフラッシュファイルシステムとしてYaffs2を使用していますソースコードはfs /yaffs2 /ディレクトリにあります。 Yaffs2は、NANDおよびNORフラッシュ用の高速で安定したクロスプラットフォームの組み込みデバイスファイルシステムであり、他のフラッシュファイルシステムと比較して、実行状態を保存するためにより小さなメモリを使用できるため、メモリ使用量が少なくて済みます。 Yaffs2のガベージコレクションは非常にシンプルで速いので、パフォーマンスはよくなります。大容量NANDフラッシュでのYaffs2のパフォーマンスは特に優れています。大容量フラッシュストレージに最適です。

Copyright © Windowsの知識 All Rights Reserved