ホームページ  >  記事  >  システムチュートリアル  >  Linuxのアーキテクチャとカーネル構造の詳細な説明

Linuxのアーキテクチャとカーネル構造の詳細な説明

WBOY
WBOY転載
2024-02-11 10:54:30999ブラウズ

Linux アーキテクチャ

下図に示すように、Linux アーキテクチャはユーザー空間 (User Space) とカーネル空間 (Kernel Space) に大別できます。

Linuxのアーキテクチャとカーネル構造の詳細な説明

ユーザー空間には、C ライブラリとユーザー アプリケーションが含まれます。一部のアーキテクチャ図にはシェルも含まれます。もちろん、シェル スクリプトも Linux システムの不可欠な部分です。

カーネル空間には、ハードウェア プラットフォーム、プラットフォーム依存コード、カーネル、およびシステム コール インターフェイスが含まれます。

最新のオペレーティング システムにはレイヤーがあります。なぜレイヤリングが必要なのでしょうか?プログラマの観点から見ると、Linux の基盤とアプリケーションを分離することで、それぞれが独自の領域に集中できるようになり、効率が向上します。セキュリティの観点から見ると、階層化はカーネルを保護することを意味します。最近の CPU は通常、異なる動作モードを実装しています。たとえば、ARM は 7 つの動作モードを実装しています。異なるモードでは、CPU は異なる命令を実行したり、異なるレジスタにアクセスしたりできます。すべての上位層アプリケーションがレジスタを自由に呼び出すことができる場合、オペレーティング システムは安定して実行できません。したがって、オペレーティング システムには、「モダン オペレーティング システム」という新しい分野が登場しました。

X86 アーキテクチャでは、Ring0 から Ring3 までの 4 つの異なるレベルの権限が実装されています。 Ring0 権限では特権命令の実行や IO デバイスへのアクセスが可能ですが、Ring3 権限では多くの制限があります。

Android はさらに「クレイジー」です。すべての APK アプリケーションは Java 仮想マシン上で実行され、アプリケーションは最下層からさらに離れたところにあります。

また、ユーザー空間とカーネル空間はプログラム実行の 2 つの異なる状態であり、ユーザー空間からカーネル空間への移行は「システム コール」と「ハードウェア割り込み」によって完了できます。

Linux カーネル構造

このセクションでは、カーネル構造を分析します。

下図に示すように、Linux カーネル構造図です。

Linuxのアーキテクチャとカーネル構造の詳細な説明

SCI レイヤー (システム コール インターフェイス)。このレイヤーは、アプリケーション ユーザー空間が Linux にアクセスするための標準システム コール関数のセットを提供します。以前に Linux アーキテクチャを分析したときに、最新のオペレーティング システムでは上位層のアプリケーションが下位層に直接アクセスできないことを紹介しました。Linux では、カーネルは上位層のアプリケーションがアクセスできる標準インターフェイスのセットを提供します。 。

PM (プロセス管理)、この部分には、具体的にはプロセスの作成 (fork、exec)、プロセスの停止 (kill、exit)、プロセス間の通信の制御 (シグナルなど) が含まれます。また、アクティブなプロセスが CPU を共有する方法を制御するプロセス スケジューリングも含まれています。この部分はすでに Linux で実現されており、ドライバーを記述する際には、プロセスの作成やプロセス通信などの機能を実現するために、対応する関数を呼び出すだけで済みます。

MM (メモリ管理)、メモリ管理の主な機能は、複数のプロセスの安全な共有メモリ領域を制御することです。

VFS (仮想ファイル システム) は、仮想ファイル システムであり、さまざまなファイル システムの特定の詳細を隠し、ファイル操作のための統一インターフェイスを提供します。 Linux では、「すべてがファイル」であり、これらのファイルは VFS を通じて実装されます。 Linux は、すべてのファイル システム機能のセットを網羅する大規模な一般モデルを提供します。下図に示すように、仮想ファイルシステムの構成図です。

Linuxのアーキテクチャとカーネル構造の詳細な説明

デバイス ドライバー デバイス ドライバー、この部分は学習して習得する必要があります。 Linux カーネルのデバイス ドライバー セクションには、特定のハードウェア デバイスを制御するために使用される大量のコードがあります。

Linux ドライバーは一般に、ネットワーク デバイス、ブロック デバイス、キャラクター デバイス、およびその他のデバイスに分類されます。必要なのはキャラクター デバイスのみを作成することです。その他のデバイスは、分類するのが容易ではないドライバーの種類です。その他のドライバーの間には多くの重複があります。デバイスとキャラクターデバイス。

ネットワーク プロトコル スタック。Linux カーネルは、豊富なネットワーク プロトコル実装を提供します。

Linux ドライバーを学習する前に、Linux アーキテクチャと Linux カーネル構造を理解し、習得する必要があります。

以上がLinuxのアーキテクチャとカーネル構造の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。