ホームページ  >  記事  >  運用・保守  >  Linux カーネルの 5 つの主要モジュールは何ですか?

Linux カーネルの 5 つの主要モジュールは何ですか?

王林
王林転載
2020-09-29 16:18:443894ブラウズ

Linux カーネルの 5 つの主要モジュールは何ですか?

1. プロセス スケジューリング モジュール

(推奨チュートリアル: linux チュートリアル)

Linux はシステム リソースの割り当てとしてプロセスを使用します。基本ユニットは、プロセッサを使用する各プロセスの合理性を確保するために、動的優先プロセスの高度なアルゴリズムを採用しています。プロセス スケジューリング モジュールは、主にプロセスで使用されるプロセッサを管理および制御します。

[プロセス作成]:

Linux環境でプログラミングする場合、一般的にfork()/vfork()関数が使用されます(forkとは子プロセスを作成し、プロセスのメモリデータをコピーすることです)親プロセスから子プロセスに移動します。vfork は子プロセスを作成し、それを親プロセスのメモリ データ共有とともに使用して、新しいプロセスを作成します。もちろん、これはユーザー空間内の関数です。これは clone( ) カーネル内のシステム コール。clone() 関数は引き続き do_fork() を呼び出して、プロセスの作成を完了します。

fork()/vfork()/_clone--->clone()--->do_fork()--->copy_process()

[プロセスのキャンセル]:

プロセスが終了した後、カーネルがプロセスが所有するリソース (メモリ、開いているファイル、その他のリソースを含む) を解放できるように、カーネルに通知する必要があります。 、セマフォなど。プロセスを終了する一般的な方法は、exit() ライブラリ関数を呼び出すことです。この関数は、C 関数ライブラリによって割り当てられたリソースを解放し、プログラマによって登録された各関数を実行し、システムからプロセスを回収するシステム コールを終了します。

[プロセス切り替え]:

プロセス切り替えは、タスク切り替えやコンテキスト切り替えとも呼ばれます。これは、プロセスの実行を制御するために、カーネルが CPU 上で現在実行中のプロセスを一時停止し、以前に一時停止されたプロセスの実行を再開する動作です。

本質的に、各プロセスの切り替えは 2 つの部分で構成されます:

ページのグローバル ディレクトリを切り替えて新しいアドレス空間をインストールします; ハードウェア コンテキストがすべての機能を提供するため、カーネル モード スタックとハードウェア コンテキストを切り替えます。 CPU レジスタなど、新しいプロセスを実行するためにカーネルが必要とする情報は、主に switch_to() 関数によって完成されます。

[プロセス スケジューリング]:

最新の Linux では、スケジューリング アルゴリズムによって、(実行可能なプロセスの数に関係なく) 一定時間内に実行するプロセスを選択できます。まず第一に、プロセスはリアルタイム プロセスと通常のプロセスに分類できることを知っておく必要があります。各 LInux プロセスは常に、先入れ先出しリアルタイム プロセス、タイム スライス回転リアルタイム プロセス、および通常のタイムシェアリング プロセスのスケジューリング タイプに従ってスケジュールされます。スケジューリングアルゴリズムは、プロセスが通常プロセスかリアルタイムプロセスかによって大きく異なります。

2. プロセス間通信モジュール

プロセス間通信は、主にユーザー空間内の異なるプロセス間の同期、データ共有、交換を制御するために使用されます。ユーザープロセスが異なればプロセス空間も異なるため、プロセス間の通信はカーネルリレーを利用して実現する必要があります。通常、プロセスは、ハードウェア操作が完了するのを待っている間、一時停止されます。ハードウェアの動作が完了するとプロセスが再開されますが、このプロセスを調整するのがプロセス間通信機構です。

プロセス間通信モジュールにより、Linux はパイプ、名前付きパイプ、メッセージ キュー、セマフォ、共有メモリなどのさまざまなプロセス間通信メカニズムをサポートします。

3. メモリ管理モジュール

Linux のメモリ管理モジュールは、高度な仮想ストレージ機構を使用して、複数プロセスのストレージ管理を実現します。非常に信頼性の高いストレージ保護手段を提供し、プロセスにさまざまな権限を付与するため、ユーザーはシステムのプログラムやデータに直接アクセスできないため、システムのセキュリティが確保されます。同時に、各ユーザープロセスには独立した仮想アドレス空間が割り当てられます。

4. ファイル システム モジュール

Linux のファイル システム モジュールは、高度な仮想ファイル システム (VFS) テクノロジを使用して、さまざまなファイル システム間の違いを保護し、さまざまなファイル システムを処理するためのより良い方法を提供します。統合インターフェイスを備え、90 を超える異なる物理ファイル システムをサポートします。同時に、Linux はさまざまなハードウェア デバイスを特別なファイルとして扱い、ファイルと同じ方法でデバイスを管理するため、非常に便利で効果的です。

5. ネットワーク インターフェイス モジュール

Linux は最も強力なネットワーク機能を備えています。ネットワーク インターフェイス モジュールは、ソケット メカニズムを介してコンピュータ間のネットワーク通信を実装し、ネットワーク層モデルを使用して複数のネットワーク プロトコルとネットワーク ハードウェア デバイスのサポートを提供します。

ネットワーク インターフェイスは、さまざまなネットワーク標準の実装と、さまざまなネットワーク ハードウェアのサポートを提供します。ネットワーク インターフェイスは通常、ネットワーク プロトコルとネットワーク ドライバーに分かれています。ネットワーク プロトコル部分は、考えられるすべてのネットワーク トランスポート プロトコルの実装を担当します。ネットワーク デバイス ドライバーは主にハードウェア デバイスとの通信を担当しており、考えられるすべてのネットワーク ハードウェア デバイスには対応するデバイス ドライバーがあります。

以上がLinux カーネルの 5 つの主要モジュールは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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