Android システムも Linux ベースですか?

藏色散人
リリース: 2023-04-20 10:25:26
オリジナル
9336 人が閲覧しました

Android システムは Linux システムに基づいています; Android は、2007 年 11 月 5 日に Google によって発表された、Linux プラットフォームに基づくオープン ソース モバイル オペレーティング システムの名前です。アプリケーションソフトの構成です。

Android システムも Linux ベースですか?

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

Android システムも Linux システムをベースにしていますか?

Android オペレーティング システムの概要

Android は、によって発表されたオペレーティング システムをベースにしています。 Google (2007 年 11 月 5 日) Linux プラットフォームのオープン ソース モバイル オペレーティング システムの名前。プラットフォームは、オペレーティング システム、ミドルウェア、ユーザー インターフェイス、およびアプリケーション ソフトウェアで構成されます。ソフトウェア スタック (Software Stack、ソフトウェア スタックとも呼ばれます) アーキテクチャを採用しており、主に 3 つの部分に分かれています。最下層は C 言語で開発された Linux カーネルに基づいており、基本的な機能のみを提供し、中間層には C で開発された関数ライブラリ Library と仮想マシン Virtual Machine が含まれます。最上層は、通話プログラムやテキストメッセージプログラムなどの各種アプリケーションソフトウェアです。アプリケーションソフトウェアは、プログラムの一部にJavaを使用して各社が独自に開発しています。

Android の本来の意味は「ロボット」です。当初は主に携帯電話をサポートしていました。その後、開発・改良を経て、徐々にタブレットコンピュータなどの分野にも拡張されました。初めて構築された真のオープンシステムです。モバイル端末向け、および完全なモバイル ソフトウェア。

システム アーキテクチャ:

Android のシステム アーキテクチャは、オペレーティング システムと同様に、階層化されたアーキテクチャを採用しています。 Android は、上位から下位まで、アプリケーション層、アプリケーション フレームワーク層、システム ランタイム層、Linux カーネル層の 4 つの層に分かれています。

1. アプリケーション

Android は、クライアント、SMS ショート メッセージ プログラム、カレンダー、地図、ブラウザ、連絡先管理プログラムなどを含む一連のコア アプリケーション パッケージとともにリリースされます。すべてのアプリケーションは JAVA 言語を使用して作成されます。

2. アプリケーション フレームワーク

開発者は、コア アプリケーションで使用される API フレームワークにも完全にアクセスできます。アプリケーションのアーキテクチャ設計により、コンポーネントの再利用が簡素化されます。どのアプリケーションでもその機能ブロックを公開でき、他のアプリケーションでもその公開された機能ブロックを使用できます (ただし、フレームワークのセキュリティに準拠する必要があります)。同様に、アプリケーションの再利用メカニズムにより、ユーザーはプログラム コンポーネントを簡単に置き換えることができます。

3. システム ランタイム ライブラリ

Android には、Android システムのさまざまなコンポーネントで使用できるいくつかの C/C ライブラリが含まれています。 Android アプリケーション フレームワークを通じて開発者にサービスを提供します。

4. Linux カーネル層

Android カーネルは、Linux カーネルに基づいて修正されたカーネル バージョンであり、Android プラットフォームをサポートするデバイス ドライバーを提供します。

システム構造:

1. システム カーネル

Android は Linux カーネル上で動作しますが、GNU/Linux ではありません。 Cairo、X11、Alsa、FFmpeg、GTK、Pango、Glibc など、一般的な GNU/Linux でサポートされている機能のほとんどが Android ではサポートされていないため、削除されています。 Android は Glibc を Bionic、Cairo を Skia、FFmpeg を opencore などに置き換えました。 Android が商用アプリケーションを実現するためには、GNU GPL ライセンスで制限されている部分を削除する必要があり、たとえばドライバーをユーザースペースに移動し、Linux ドライバーを Linux カーネルから完全に分離します。 Bionic/Libc/Kernel/ は、標準のカーネル ヘッダー ファイルではありません。 Android のカーネル ヘッダーは、定数、データ構造、マクロを保存するツールを使用して Linux カーネル ヘッダーから生成されます。

2. ハードウェア抽象化レイヤー

Android の HAL (ハードウェア抽象化レイヤー) は、クローズド ソース形式でハードウェア ドライバー モジュールを提供できます。 HAL の目的は、Android がカーネル独立性の概念を実現するために Linux カーネルに過度に依存しないように、Android フレームワークを Linux カーネルから分離することと、ドライバーの実装を考慮せずに Android フレームワークの開発を可能にすることです。

3. 仲介ソフトウェア

オペレーティング システムとアプリケーション プログラム間の通信ブリッジであり、アプリケーションは機能層 (ライブラリ) と仮想マシン (仮想マシン) の 2 つの層に分かれています。 Bionic は Android の libc の改良版です。 Android には Webkit も含まれており、いわゆる Webkit は Apple の Safari ブラウザの背後にあるエンジンです。 Surface フリンガーは、画面上に 2D または 3D コンテンツを表示します。 Android は、Google 独自の BionicLibc のツール チェーン (Toolchain) を使用します。

Android は、基本的なマルチメディア フレームワークとして OpenCORE を使用します。 Open CORE は、PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework (PVMF)、Operating System Compatibility Library (OSCL)、Common、OpenMAX の 7 つの主要なブロックに分割できます。

Android はコア グラフィックス エンジンとして Skia を使用し、OpenGL/ES と組み合わせています。 Skia と LinuxCairo の機能は同等ですが、Linux Cairo と比較すると、Skia の機能は初歩的なものにすぎません。 2005 年に Skia は Google に買収され、2007 年初頭に Skia GL のソース コードが公開されました。Skia は Google Chrome のグラフィック エンジンでもあります。

Android のマルチメディア データベースは SQLite データベース システムを使用します。データベースはパブリック データベースとプライベート データベースに分けられます。ユーザーは、ContentResolver クラス (Column) を通じて共有データベースを取得できます。

Android の中間層は主に Java で実装されており、特別な Dalvik 仮想マシンを使用します。 Dalvik 仮想マシンは「レジスタ ベース」の Java 仮想マシンであり、すべての変数は一時レジスタに格納され、仮想マシンの命令は比較的削減されます。

Dalvik 仮想マシンは複数のインスタンス (インスタンス) を持つことができ、各 Android アプリケーションは独自の Dalvik 仮想マシンを使用して実行されるため、プログラムの実行時にシステムを最適化できます。 Dalvik 仮想マシンは Java バイトコード (Bytecode) を実行しませんが、.dex 形式と呼ばれるファイルを実行します。

4. セキュリティ許可メカニズム

Android 自体は、個別の許可を持つオペレーティング システムです。このタイプのオペレーティング システムでは、各アプリケーションは一意のシステム ID (Linux ユーザー ID とグループ ID) で実行されます。システムの各部分も、独自の独立した識別方法を使用します。これが、Linux がアプリケーションとアプリケーションを分離し、アプリケーションとシステムを分離する方法です。

アプリケーション コンポーネント:

Android 開発の 4 つの主要コンポーネント:

1. アクティビティ: 関数を表現するために使用されます。

2. サービス: バックグラウンドでサービスを実行し、インターフェイスのレンダリングは提供しません。

3. ブロードキャスト レシーバー (BroadcastReceiver): ブロードキャストを受信するために使用されます。

4. コンテンツ プロバイダー: データベースに相当する、複数のアプリケーションでのデータの保存と読み取りをサポートします。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がAndroid システムも Linux ベースですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!