Android と Linux には次のような違いがあります: 1. Android アプリケーションは JAVA を使用して開発され、JAVA 仮想マシンを介して Android システム上で実行できますが、Linux アプリケーションは「C/C」を使用して開発され、実行できます。マシンコード内 フォームはカーネル システム上で実行されます。 2. 両者の間には、基礎となるドライバー ソフトウェアに違いがあります。
#このチュートリアルの動作環境: CentOS 6 システム、Dell G3 コンピューター。
Android と Linux は、現在の主流のオペレーティング システムとして、民生用製品と産業用制御分野の両方で広く使用されています。 AndroidシステムはLinuxシステムから生まれたと言われていますが、AndroidもLinuxの一種なのでしょうか?ここで、Android システムと Linux システムの類似点と相違点について話しましょう。
1. 2 つの共通点
Android は、Linux カーネルをベースにしたシステムです。 Android および Linux システムのコア システム サービス (セキュリティ、カーネル管理、プロセス管理、ネットワーク スタック、ドライバー モデルなど) はすべて Linux カーネルに依存しています。 Linux カーネルは、ハードウェアとソフトウェアの間の抽象化レイヤーとしても機能し、特定のハードウェアの詳細を隠し、上位層のアプリケーション開発に統合されたサービスを提供します。 #2. システム フレームワークの違い
Linux システムと Android は、表面的には 2 つの異なるオペレーティング システムですが、Android は本質的には Linux システムですが、Google がそれを調整およびカスタマイズしています。
さらに、Linux システムと比較して、Android は Linux カーネル上で Dalvik (バージョン 4.4 以降 ART に名前変更) と呼ばれる Java 仮想マシン (JVM) を実行するため、JAVA を使用して開発された Android アプリケーションは Android システム上で実行できます。 JAVA仮想マシン経由。 LinuxアプリケーションはC/Cを用いて開発され、カーネルシステム上で機械語として動作しますが、両者のシステムフレームワークの違いは図のとおりです。
3. Linux と Android の基礎となるドライバー ソフトウェアの違い
Linux カーネルによって提供される共通のコア ドライバーに加えて、Android は、ディスプレイ ドライバー、Bluetooth ドライバー、カメラ ドライバー、メモリ カード ドライバー、バインダー IPC ドライバーなどの独自の独自のカーネル ドライバーも追加します。
さらに、ハードウェア メーカーの知的財産権を保護するために、Android システムは、ドライバーの特定の実装部分を抽出し、実装のために HAL に送信できる HAL レイヤーを追加します。オープンソースのハードウェアドライバーにはリスクがあるため、Android ドライバーは 2 つの部分に分かれており、1 つの部分はカーネルに書き込まれ、もう 1 つの部分は HAL 層に書き込まれます。Android では、基礎となるドライバーの開発に加えて、アプリケーション (JAVA プログラム) が JNI 経由でカーネル ドライバーを呼び出せるように、JNI ルールに従ってドライバーを JNI レイヤー インターフェイスにカプセル化する必要もあります。図に示すように、ディスプレイ ドライバーのフレームバッファを例に挙げます。
#Linux システムのディスプレイ ドライバー モデル ##Android システムのディスプレイ ドライバー モデル# (1) Linux システム
: フレームバッファ ドライバは Linux カーネルにコンパイルするだけでよく、対応する読み取り、書き込み、ioctl およびその他のインターフェイスは確保されているため、ホスト コンピュータ アプリケーションから呼び出すことができます。 (2) Android システム: フレームバッファ ドライバーは、まず単純なハードウェア レジスタの読み取りおよび書き込み操作用のドライバーをカーネルにコンパイルし、次に特定のハードウェア実装用のドライバーを HAL 層に書き込みます。 JNI 仕様は JNI インターフェイスにカプセル化されており、ホスト コンピュータのアプリケーション プログラムから呼び出すことができます。
4. Linux と Android アプリケーション層ソフトウェアの違い
ただし、Android アプリケーションは Java 言語で記述されており、C 言語で実装されたシステム インターフェイスを直接呼び出すことができません。 Linux システムでは、C 言語を使用してカーネルと通信するためのシステム インターフェイスを呼び出すことができます。そのため、Android システムには、Java と C/C プログラム間の情報のやり取りを実現するために使用される JNI と呼ばれる概念があります。
(1) Android アプリケーションが Android カーネル ドライバーにアクセスする方法:
#APP—>JNI—>Android カーネル ドライバー
APP—>Hardware Access Service—>Android Kernel Driver
##関連する推奨事項: 「
Linux ビデオ チュートリアル以上がアンドロイドとリナックスに違いはあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。