ホームページ  >  記事  >  運用・保守  >  アンドロイドとリナックスに違いはあるのでしょうか?

アンドロイドとリナックスに違いはあるのでしょうか?

青灯夜游
青灯夜游オリジナル
2021-11-23 10:18:2013625ブラウズ

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

    (2) Linux アプリケーションが Linux ドライバーにアクセスする プログラム メソッド
  • APP—> Linux カーネル ドライバー

APP—>C ライブラリ—>Linux カーネル ドライバー プログラム

##関連する推奨事項: 「

Linux ビデオ チュートリアル

以上がアンドロイドとリナックスに違いはあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。