コンピュータオペレーティングシステムの知識をまとめます - コンピュータオペレーティングシステムの概要 (コンピュータオペレーティングシステム入門ガイド)

第 1 章 コンピュータのオペレーティング システムの概要

1.1 オペレーティング システムの基本概念

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

今日の情報化時代において、読者の皆さんは「オペレーティング システム」という 4 つの単語に精通していると思います。たとえば、私たちがよく使う Windows、Android、IOS、MacOS、Linux はすべてオペレーティング システムです。オペレーティング システムは、今日の情報化時代において不可欠なソフトウェアです。一般のユーザーにとって、オペレーティング システムという 4 つの単語は、見慣れたものであると同時に馴染みのないものでもあります。一般のユーザーは、各オペレーティング システム上で動作するアプリケーション ソフトウェアにしか注目しないからです。実は、これらのアプリケーション ソフトウェアがハードウェア リソースを操作するのを支援するオペレーティング システムについては、あまり詳しくありません。

では、オペレーティング システムとは一体何でしょうか?

ここで、コンピュータシステムの構造図を見てみましょう。

ここに画像の説明を挿入します

上の図からわかるように、オペレーティング システムはアプリケーション プログラムとコンピュータ ハードウェアの間にあるソフトウェアであり、オペレーティング システムとコンピュータ ハードウェアは直接対話しますが、アプリケーション ソフトウェアとユーザーはコンピュータ ハードウェアと直接対話することはできません。 。

注: 上の図では、ユーザーとオペレーティング システムの間に直接接続もあります。これは、ユーザーがオペレーティング システムが提供するオンライン コマンド インターフェイスを通じてオペレーティング システムと直接対話できるためです。この部分については、次のセクションで説明します。詳細についてはセクション 1.1.2 を参照してください。

要約すると、オペレーティング システムの標準定義は次のようになります。

オペレーティング システムとは、コンピュータ システム全体のハードウェアおよびソフトウェア リソースを制御および管理し、コンピュータの作業とリソース割り当てを合理的に編成およびスケジュールし、ユーザーや他のソフトウェアに便利なインターフェイスと環境を提供するプログラムの集合を指します。コンピュータ システム内のプログラムのセットで、最も基本的なシステム ソフトウェア

セクションの概要

ここに画像の説明を挿入します

1.1.2 オペレーティングシステムの機能

オペレーティング システムは主に 3 つの主要な機能を提供します。

  • コンピュータ システム リソースの管理者として機能する
  • ユーザーとコンピュータハードウェアシステム間のインターフェースとして機能します
  • コンピュータリソースの拡張として
1.1.2.1 コンピュータ システム リソースの管理者として

オペレーティング システムは、コンピュータ システム リソースの管理者として、プロセッサ管理、メモリ管理、デバイス管理、およびファイル管理の機能を備えています。

  • プロセッサ管理

    マルチプログラミング環境では、プロセッサの割り当てと動作はプロセス (またはスレッド) を基本単位として行われるため、プロセッサの管理もプロセスの管理に帰属することができます。プロセス管理の主な機能には、プロセス制御、プロセスの同期、プロセス通信、デッドロック処理、プロセッサのスケジューリングなど。(これらの機能については後の章で詳しく紹介します)

  • メモリ管理

    メモリ管理は、マルチプログラムの動作に良好な環境を提供し、ユーザーの使用を容易にし、メモリ使用率を向上させることを目的としており、主にメモリの割り当てと再利用、アドレス マッピング、メモリの保護と共有、コンテンツ拡張などの機能が含まれます。

  • 端末管理

    デバイス管理の主なタスクは、ユーザーの I/O 要求を完了し、ユーザーがさまざまなデバイスを使用できるようにし、デバイスの使用率を向上させることであり、主にバッファ管理、デバイス割り当て、デバイス処理、仮想デバイスなどの機能が含まれます。

  • ファイル管理

    コンピュータ内の情報はファイルの形式で存在します。ファイル管理を担当するオペレーティング システムの部分はファイル システムと呼ばれます。ファイル管理には、ファイル記憶領域の管理、ディレクトリ管理、ファイルの読み取りと書き込みの管理と保護が含まれます。

1.1.2.2 ユーザーとコンピュータハードウェアシステム間のインターフェースとして

オペレーティング システムは、ユーザーが便利、迅速、確実にコンピューター ハードウェアを操作し、独自のプログラムを実行できるようにするユーザー インターフェイスを提供します。オペレーティング システムが提供するユーザー インターフェイスには、コマンド インターフェイスプログラム インターフェイスの 2 種類があります。ユーザーはコマンド インターフェイスを直接使用してオペレーティング システムと対話し、ジョブの実行を完了できます。プログラム インターフェイスは、これらのインターフェイスを使用してオペレーティング システムが提供するサービスを要求するようにプログラマによってプログラムされます。

ここで、オペレーティング システムは、カプセル化の概念を使用して、いくつかの複雑なハードウェア機能をシンプルで使いやすいサービスにカプセル化します。これにより、ユーザーは、基礎となるハードウェアの原理を気にせずに、コマンドを発行するだけでコンピュータを便利に使用できるようになります。オペレーティング システムです。

ここに画像の説明を挿入します

上図は、アプリケーションソフトウェアが、オペレーティングシステムが提供するインターフェースを介して、オペレーティングシステムが提供する機能を取得し、コンピュータハードウェアを操作することを示している。

  • コマンドインターフェース

    コマンド インターフェイスは、オンライン コマンド インターフェイスとオフライン コマンド インターフェイスの 2 つのカテゴリに分類されます。

    オンラインコマンドインターフェース

    オンライン コマンド インターフェイスは、対話型コマンド インターフェイスとも呼ばれ、タイムシェアリングまたはリアルタイム システムに適したインターフェイスです。キーボードの操作コマンド群で構成されており、ユーザーはコンソールや端末から操作コマンドを入力して、さまざまなサービス要件をシステムに通知します。ユーザーがコマンドを入力するたびに、制御はオペレーティング システムのコマンド インタープリタに転送され、コマンド インタープリタは入力されたコマンドを解釈して実行して、指定された機能を完了します。その後、制御はコンソールまたはコンソールに戻されます。この時点で、ユーザーは次のコマンドを入力できます。つまり、オンライン コマンド インターフェイスを使用したユーザーのオペレーティング システムとの対話は、交互に実行されます。

    たとえば、Windows システムでは、キーボードで Win+R を押し、「cmd」と入力して Enter を押し、コマンド インタープリタに入り、さまざまなオペレーティング システムが提供するコマンドを使用してオペレーティング システムと対話します (現在のデータを取得するための time コマンドなど)。時間)。

    オフラインコマンドインターフェース

    オフライン コマンド インターフェイスは、バッチ コマンド インターフェイスとも呼ばれ、バッチ処理システムに適しています。これは、一連のジョブ制御コマンドで構成されます。オフライン ユーザーは、ジョブの実行に直接介入できません。代わりに、対応する一連のコマンドを作成します。ジョブの操作指示は、ジョブとともにオペレーティング システムに送信されます。システムがジョブをスケジュールすると、システム内のコマンド インタプリタがジョブ記述内のコマンドを 1 つずつ実行し、それによってジョブの動作を間接的に制御します。つまり、ユーザーはオフライン コマンド インターフェイスを使用して、ジョブ リストを事前に提供し、それをシステムに渡してリストに従って 1 つずつ実行することでオペレーティング システムと対話します。

    たとえば、Windowsのbatバッチファイル

  • プログラムインターフェース

    プログラム インターフェイスは、一連のシステム コール (汎用命令とも呼ばれます) で構成されます。プログラマーはプログラム内でこれらのシステム コールを使用して、オペレーティング システムが提供する特定のサービス (さまざまな外部デバイスなど) を要求したり、メモリの割り当てや再利用を行ったりします。

    以下の図は、プログラマーがプログラム インターフェイスを使用してオペレーティング システムにモニターに表示サービスを提供するよう要求する例です。

ここに画像の説明を挿入します

現在最も普及しているグラフィカル・ユーザー・インターフェース(GUI)、つまりグラフィカル・インターフェースは、プログラム・インターフェースを呼び出すことによって実現されます。GUI を通じて、ユーザーはマウスとキーボードを直接使用して、オペレーティング システムを便利に使用できます。

1.1.2.3 コンピュータリソースの拡張として

ベア メタル (ソフトウェアを備えていないコンピュータ) はコンピュータ システムの物質的な基礎であり、ユーザーに提示されるコンピュータ システムは、いくつかのソフトウェア層によって変換されたコンピュータです。ベア メタルは最も内側の層であり、外側の層はオペレーティング システムは、リソース管理機能とさまざまなユーザーフレンドリーなサービス インターフェイスを提供し、ベア メタルをより強力で使いやすくします。したがって、ソフトウェアの対象となるマシンを拡張マシンまたは仮想マシンと呼ぶことがよくあります。

セクションの概要

ここに画像の説明を挿入します

1.1.3 オペレーティングシステムの特徴

オペレーティングシステムはシステムソフトウェアの一種であり、他のシステムソフトウェアやアプリケーションソフトウェアとは大きく異なり、オペレーティングシステム独自の基本的な特徴をいくつか持っています。同時、共有、仮想、非同期が含まれますこれらの概念を理解することは非常に重要です。

1.1.3.1 同時実行性

同時実行とは、同じ時間間隔内に2 つ以上のイベントが発生することです。これらのイベントはマクロスケールでは同時に発生しミクロスケールでは交互に発生します。オペレーティング システムでは、同時実行性とは、コンピュータ システム内で同時に実行される複数のプログラムが存在することを指します。オペレーティング システムには、複数のプログラムの同時実行を処理し、スケジュールする機能があります。マルチプログラミング環境では、巨視的には一定時間内に複数のプログラムが同時に実行されますが、シングルプロセッサ環境では各瞬間に実行できるプログラムは1つだけであるため、微視的にはこれらのプログラムはつまり、オペレーティング システムの同時実行性は、タイムシェアリングによって実現されます。

注: 同時実行と並列処理は 2 つの異なる概念です。並列処理とは、2つ以上のイベントが同時に発生することを意味します

並列処理とは、システムが計算や演算を同時に実行する特性を持ち、2 つ以上のタスクを同時に完了できることを意味します。並列処理には、マルチプロセッサ ハードウェア環境などの十分なハードウェア サポートが必要です。

シングルコア CPU は一度に 1 つのプログラムのみを実行でき、各プログラムは同時に実行できます。

マルチコアCPUは複数のプログラムを同時に実行でき、各プログラムは並列実行できます。

次の図は、同時実行と並列処理の違いを例で示しています。

ここに画像の説明を挿入します

上の図で、シャオミンが左側のプロセスに従って宿題を書く、音楽を聴く、宿題を書くという順に実行すると、宿題を書くことと音楽を聴くという2つの行動が10時から10時まで同時に実行されることになります。 12:00。シャオミンが右のプロセスに従い、10時から11時まで音楽を聴きながら宿題を書くと、宿題を書くことと音楽を聴くという2つの行動が並行して実行されます。

1.1.3.2 共有

共有とはリソースの共有であり、システム内のリソースがメモリ内で同時に実行される複数のプロセスによって使用できることを意味します。

リソースの共有は、相互排他的共有と同時アクセスの2 つのタイプに分類されます

  • 相互排他的な共有モード

    システム内の一部のリソース(プリンタなど)は複数のプロセスで使用できますが、印刷結果の混乱を防ぐために、一定時間内にリソースにアクセスできるプロセスは 1 つだけであるように指定する必要があります。 。

    したがって、相互排他的共有を使用するリソースには、同時に 1 つのプロセスのみがアクセスできます。たとえば、プロセス A が特定のリソースにアクセスしたい場合、最初にリクエストを行う必要があります。この時点でリソースがアイドル状態の場合、リソースはプロセス A に割り当てられます。この時点でプロセス B もリソースにアクセスしたい場合、プロセス B はプロセス A がリソースの使用を終了して解放するまで待つ必要があります。この方法は相互排他的な共有です。

  • 同時アクセス方式

    システム内の一部のリソース (ディスクなど) では、複数のプロセスが一定期間内に「同時に」アクセスすることができます。ここで言う「同時性」は巨視的なものです。つまり、これらのリソースにより、複数のプロセスによる同時アクセスが可能になります。たとえば、複数のプロセスが同時にディスク デバイスにアクセスし、ファイルを読み取ることができます。

同時実行性と共有は、オペレーティング システムの 2 つの最も基本的な機能です。この 2 つの関係は、相互の存在条件です。システムがプログラムの同時実行を許可していない場合、リソース共有の問題は当然発生しません。 ; システムがリソース共有を実装できない場合 効果的な管理はプログラムの同時実行に影響します。

1.1.3.3 仮想

仮想化とは、物理エンティティを複数の論理的な対応物に変えることを指します。物理的な実体は実際に存在し、論理的なものは存在せず、ユーザーが感じるものです。

オペレーティング システムでは、仮想テクノロジを使用して、仮想プロセッサ仮想メモリ仮想周辺デバイスなどの機能が実装されます。

  • 仮想プロセッサ

    仮想プロセッサは、マルチプログラミング技術を使用して複数のプログラムを同時に実行し、1 つのプロセッサを時分割で使用します。現時点では、プロセッサは 1 つしかありませんが、マクロの観点から見ると、同時に複数のユーザーにサービスを提供できるため、各エンド ユーザーは、専用の CPU があるように感じます。

  • 仮想メモリ

    仮想メモリは、コンピュータの実際の物理メモリを仮想メモリに変換して論理的にメモリ容量を拡張するものであり、このときユーザーが認識するメモリ容量は仮想的なものである。

  • 仮想周辺デバイス

    仮想外部デバイスは、仮想テクノロジーを使用して物理 I/O デバイスを複数の論理 I/O デバイスに仮想化し、各ユーザーが 1 つの論理 I/O デバイスを占有できるようにし、元のデバイスは一定期間のみ許可されるようにします。一定期間内に 1 人のユーザーがアクセスしたデバイスは、複数のユーザーが一定期間同時にアクセスできる共有デバイスになります。

オペレーティングシステムの仮想化技術は、時分割多重化技術(仮想プロセッサ)と空間分割多重化技術(仮想メモリ)に要約できます。

オペレーティング システムの仮想テクノロジの前提条件は同時実行性です。同時実行性がなければ、一定期間システム内で 1 つのプロセスしか実行できず、仮想性は意味を失います。つまり、同時実行性がなければ、仮想性はありません

1.1.3.4 非同期

OSのマルチプログラミング環境では、複数のプログラムが同時に実行されるため、各プロセスの実行が一貫性を持たずストップアンドゴーとなり、各プロセスが予測できない速度で進みます。プロセスの非同期性。

同時に実行されるプロセスは限られたシステム リソースをめぐって競合するため、プロセスの実行は一貫性がなく、システムに同時実行性がある場合にのみ非同期が発生します。

セクションの概要

ここに画像の説明を挿入します

1.2 オペレーティングシステムの開発の歴史

1.2.1 手動操作ステージ (オペレーティング システムなし)

手動操作の初期段階では、プログラムのロードと実行、結果の出力など、コンピュータを使用するすべての作業に手動の介入が必要です。以下の図は手動フェーズの通常の流れを示しています。

ここに画像の説明を挿入します

上の図からわかるように、コンピューターによる計算の速度は、プロセス全体における他の手動介入の速度と比較して非常に高速です。プロセス全体を通じて、コンピュータはすでに計算を完了しているのに、人間はまだゆっくりと次のプログラムを入力したり、演算結果を読んだりすることがよくあります。

手動操作ステージには 2 つの主な欠点があることがわかります。

  • ユーザーがマシン全体を独占し、リソース使用率が低下する
  • CPU は手動操作を待機しているため、十分に活用されていません

1.2.2 バッチ処理段階(オペレーティングシステムの登場開始)

手動段階における 2 つの重大な問題を解決するために、バッチ処理システムが登場しました。バッチ処理システムは、シングル チャネル バッチ処理システムマルチ チャネル バッチ処理システムに分けられます

1.2.2.1 シングルチャネルバッチ処理システム

シングルチャネルバッチ処理システムでは、オフライン入出力技術(周辺機器+テープ)が導入され、監視プログラムがジョブの入出力を制御する責任を負い、人間と機械の間の矛盾と不一致を解決します。 CPUとI/O機器の速度についての質問です。

ここに画像の説明を挿入します

  • 特徴

    • 自動化: 通常の状況では、テープ上のジョブのバッチは、手動介入なしで 1 つずつ自動的に実行できます。

    • シーケンシャルでは、テープ上のジョブがメモリに入力され、1 つずつ順番に実行されます。

    • シングルトラックでは、監視プログラムは 1 つのプログラムだけをテープからメモリに転送して実行します。

  • アドバンテージ

    人間と機械の間の対立によって引き起こされる資源の無駄をある程度解決します。

  • 欠点がある

    シングルチャネルバッチ処理システムのシングルチャネルの性質により、プログラムの実行中に I/O リクエストが発行された場合、高速 CPU は低速 I/O デバイスが完了するまで待機する必要があります。実行を続けることができます。これにより、CPU リソースが無駄に消費されます。

1.2.2.2 多チャンネルバッチ処理システム

シングルチャネルバッチ処理システムの欠点を解決するために、マルチプログラミング技術を使用して複数のプログラムを同時にメモリに入れ、交互に実行できるようにするマルチチャネルバッチ処理システムが登場しました。このように、あるプログラム A が実行中に I/O デバイスを要求しても、CPU はすぐに他のプログラムを実行し、I/O デバイスが終了した後もプログラム A を実行し続けることもできます。処理が完了しました。

ここに画像の説明を挿入します

  • 特徴

    マルチプログラミングとは、システムのメモリ内で複数のプログラムが同時に実行されることを意味します。

    マクロ レベルではパラレル、ミクロ レベルではシリアル。マクロ レベルではメモリ内のすべてのプログラムが実行されます。ミクロ レベルでは 1 つのプログラムだけが同時に CPU を占有します。

  • アドバンテージ

    複数のプログラムが同時に実行され、コンピューター リソースを共有することで、CPU およびその他のリソースが完全に「ビジー」になり、リソース使用率が大幅に向上します。

  • 欠点がある

    ユーザーの応答時間は長く、人間とコンピューターの対話機能はありません (ユーザーがジョブを送信すると、システムが自動的に処理するのを待つことしかできず、手動で介入することはできません)。

1.2.3 タイムシェアリングオペレーティングシステム

タイムシェアリング オペレーティング システムは、タイムシェアリング テクノロジを使用してプロセッサの実行時間を短いタイム スライスに分割し、タイム スライスに従ってプロセッサを各オンライン ジョブに順番に割り当てます。各ユーザーはタイムシェアリング オペレーティング システムを使用できます。コンピュータが対話する場合、ジョブ A がタイム スライス内に完了できない場合、ジョブ A は一時停止され、CPU は他のジョブを処理して次のラウンドを待ってからジョブ A の実行を続行します。CPU が非常に高速であるため、ジョブ ローテーションも非常に速く、各ユーザーは専用の CPU がサービスを提供しているように感じます。

  • 特徴

    タイムシェアリング オペレーティング システムでは、複数のエンド ユーザーが同時にコンピュータを使用できるようになり、これらの端末上のユーザーは同時に、またはほぼ同時にコンピュータを使用できます。

    インタラクティブなため、ユーザーはシステムと人間と機械の対話を行い、ジョブの操作を制御できます。

    独立性とは、タイムシェアリングシステムにおける複数のユーザー間の操作が互いに独立しており、相互に干渉しません。

    適時性があり、ユーザーのリクエストに短時間で対応できます。

  • アドバンテージ

    タイムシェアリング システムは、マルチチャネル バッチ処理システムにおける人間とコンピュータの対話が不可能であるという問題を解決します。複数のユーザーが端末を介して同時にホストに接続することができ、各ユーザーの操作は互いに独立しており、他のユーザーには感じられません。

  • 欠点がある

    タイムシェアリング システムはタイム スライスをローテーションして各プログラムを実行するため、タイムシェアリング システムは一部の緊急事項を優先できなくなります。システムが指定された時間内に外部情報を処理する必要がある一部のシナリオでは、タイムシェアリング システムがシステム システムは適用されません (例: 航空機の予約、航空機のリアルタイム監視、その他のシステム)。

1.2.4 リアルタイム オペレーティング システム

タイムシェアリングシステムでは緊急の業務に対応できないという問題を解決するために、リアルタイムシステムが登場しました。リアルタイム システムは、ハード リアルタイム システムソフト リアルタイム システムの2 種類に分類されます。

  • ハードリアルタイムシステム

    ハード リアルタイム システムでは、アクションは指定された時刻または指定された時間範囲内に絶対に発生する必要があります。(例:自動運転システム)

  • ソフトリアルタイムシステム

    ソフト リアルタイム システムでは、アクションは指定された時間内に完了する必要があると規定されていますが、時折の時間規制違反は許容され、状況が発生した後に永続的な損害が発生することはありません。(例: 電車のチケット予約システム)

  • アドバンテージ

    リアルタイムシステムの制御下では、コンピュータシステムは外部信号を受信した後、時間内に処理し、厳密な時間範囲内で処理を完了することができます。

  • 欠点がある

    実装が難しい。

1.2.5 その他のオペレーティング システム

上記のオペレーティング システムに加えて、ネットワーク オペレーティング システム、分散コンピュータ オペレーティング システム、およびパーソナル コンピュータ オペレーティング システムもあります。

  • ネットワークオペレーティングシステム

    コンピュータネットワークの発展に伴って登場したオペレーティングシステムは、さまざまなコンピュータを有機的に組み合わせて、ネットワーク上のデータ伝送機能やさまざまなリソースの共有、さまざまなコンピュータ間の通信を実現します。

  • 分散コンピュータオペレーティングシステム

    分散コンピュータ オペレーティング システムは複数のコンピュータで構成され、次の条件を満たします。

    1.系统中任意两台计算机间能够正常通信
    2.系统中的每台计算机都具有同等地位,没有从机和主机之分
    3.每台计算机上的资源为所有用户共享
    4.系统中的任意一台计算机都可以构成一个子系统且可以重构
    5.任何工作都可以分布在几台计算机上,由它们并行、协同完成。
    

    その主な特徴は分散と並列処理です。

  • パーソナルコンピュータのオペレーティングシステム

    現在最も広く使用されているオペレーティング システムは、Windows、Linux、MacOS などです。

セクションの概要

ここに画像の説明を挿入します

1.3 オペレーティングシステムの動作メカニズム

1.3.1 序文

オペレーティング システムの動作メカニズムを学ぶ前に、ある程度の知識を蓄えておく必要があります。

つまり、プログラムはどのように実行されるのかを理解する必要があります。

プログラマがコードを書き終えてコンパイルのためにコンパイラに送信すると、バイナリ命令ファイルが形成され、このファイル内の命令は CPU が認識して実行できる命令になります。同様に、プログラムをコンピュータで実行するには、その内部プログラムを 1 つずつバイナリ命令にコンパイルし、CPU によって認識されて実行される必要があります。

ここに画像の説明を挿入します

オペレーティングシステムの動作メカニズムを理解するには、2種類の命令(特権命令と非特権命令)、2種類のプログラム(カーネルプログラムとユーザープログラム)、2つの状態(ユーザーモードとカーネルモード)を理解する必要があります。そして 4 つのオペレーティング システム カーネル、これは 1 つの側面にすぎません。

1.3.2 カーネルプログラムとユーザプログラム

オペレーティング システムでは、CPU は性質の異なる 2 つのプログラムを実行します。1 つは「カーネル プログラム」と呼ばれるオペレーティング システムのカーネル プログラムで、もう 1 つは「ユーザー プログラム」と呼ばれるシステムの外層アプリケーション プログラムです。プログラム"。

カーネルプログラムはユーザプログラムの管理者であり、カーネルプログラムでは特権命令のみ実行可能、ユーザプログラムでは非特権命令のみ実行可能です

当社のプログラマーが作成するプログラムは通常、ユーザー プログラムです。

1.3.3 特権命令と非特権命令

CPUが認識できる命令には、権限に応じて特権命令と非特権命令の2種類があります。

  • 特権命令

    I/O命令、割り込み設定命令、ユーザーメモリ保護レジスタへのアクセス命令、プログラムステータスワードレジスタへのプログラムステータスワードの送信命令など、ユーザーが直接使用することを許可されていない命令。

  • 特権のない指示

    ユーザーが命令を直接使用できるようにする命令。非特権命令は、システム内のソフトウェアおよびハードウェア リソースに直接アクセスできません。ユーザーのアドレス空間へのアクセスに制限されているため、ユーザー プログラムによるシステム プログラムの損傷を防ぐことができます。

1.3.4 ユーザーモードとカーネルモード

CPUの動作モードは、ユーザーモード(アイモード)カーネルモード(コアモード、パイプモード)の2つに分かれます。カーネルモードの CPU は特権命令を実行できますが、ユーザーモードの CPU は特権命令を実行できません。

ユーザー モードとカーネル モードの内容に関して、読者は 2 つの主な問題を明確にする必要があります。

1.3.4.1 CPU は現在ユーザー モードであるかカーネル モードであるかをどのように識別しますか?

CPU にはプログラム ステータス レジスタ (PSW)と呼ばれるレジスタがあり、このレジスタにはバイナリ ビットがあります。1 はCPU が「カーネル モード」であることを意味し、0 は CPU が「ユーザー モード」であることを意味しますCPUがカーネルモードの場合は、カーネルプログラムが実行されており特権命令が実行可能であり、CPUがユーザーモードの場合は、ユーザープログラムが実行されており、非特権命令のみ実行可能です。

1.3.4.2 CPU の状態の切り替え方法

CPU がユーザー モードからカーネル モードに切り替えるには、ユーザー プログラムによって割り込みまたは例外をトリガーする必要があり、ハードウェア実装によって PSW フラグが 1 に設定された後、カーネル モードに切り替わります。

CPU がカーネル モードからユーザー モードに切り替えたい場合、カーネル プログラムは PSW を変更する特権命令を呼び出します。

割り込みと例外については後続の章で説明します。

1.3.5 オペレーティング システム カーネルに含まれるコンテンツ

1.3.5.1 クロック管理

クロックはオペレーティング システムの最も基本的かつ重要なデバイスであり、タイミング、割り込み、その他の機能を提供します。

  • タイミング機能により、オペレーティング システムがユーザーに標準時間を提供できるようになります。
  • クロック割り込み機能により、タイムシェアリングOSにおけるタイムスライスローテーション管理などのプロセス切り替えを実現できます。
1.3.5.2 割り込み機構

オペレーティング システムが割り込みタイミングを導入する本来の目的は、たとえ複数のプログラムを同時に実行できる場合でも、複数プログラム環境での CPU 使用率を向上させることです。時間が経つにつれて、割り込みメカニズムは徐々に現代のオペレーティング システムの基礎になりました。たとえば、キーボードまたはマウスの情報入力、プロセス管理とスケジュール、システム関数呼び出し、デバイス ドライバー、ファイル アクセスなど、これらの機能はすべて割り込みメカニズムに依存します。

1.3.5.3 プリミティブ

オペレーティング システムの最下層は、呼び出すことができるいくつかの公開された小さなプログラムです。それぞれが特定の操作を実行できます。これらの小さなプログラムはプリミティブと呼ばれます。これらのプログラムには次の特性があります:

  • これはオペレーティング システムの下部にあり、ハードウェアに最も近い部分です。
  • これはアトミックであり、一度に実行され、中断することはできません。
  • 実行にかかる時間は短く、頻繁に呼び出されます。

プリミティブを定義する直接的な方法は、割り込みをオフにし、プリミティブの実行が完了した後に割り込みをオンにすることです。デバイス ドライバー、CPU 状態の切り替え、プロセス通信、およびシステム内のその他の機能の一部の操作は、プリミティブとして定義できます。つまり、アトミック性を実現するために、「割り込み禁止命令」と「割り込みオープン命令」という 2 つの特権命令が使用されます。「オフ割り込み命令」を使用すると、CPU はプログラム実行時に割り込み信号の有無を検出しなくなります。「オープン割り込み命令」を使用すると、CPU はプログラム実行時に割り込み信号の有無を検出します。(割り込み関連の知識は後続の章で紹介します)

1.3.5.4 システム制御のデータ構造と処理

オペレーティング システムにステータス情報を登録するために使用されるデータ構造は、プロセス制御ブロック、ジョブ制御ブロック、メッセージ キュー、バッファなど、数多くあります。効果的な管理を実現するために、システムはいくつかの基本操作を定義します。

  • プロセス管理

    プロセスのステータス管理、プロセスのスケジューリングとディスパッチ、プロセス制御ブロックの作成とキャンセルなどを担当します。

  • メモリ管理

    メモリ空間の割り当てと再生、メモリ情報保護プログラム、コードスワッププログラムなどを担当します。

  • 端末管理

    バッファ管理、デバイスの割り当て、リサイクルなどを担当します。

上記の内容からわかるように、カーネル モード命令には、実際にはシステム コール命令と、クロック、割り込み、およびプリミティブの一部の操作命令が含まれています

セクションの概要

ここに画像の説明を挿入します

1.4 割り込みと例外

1.4.1 割り込みの役割

まず結論からお話しましょう。割り込みは、オペレーティング システム カーネルが CPU を使用する権利を取り戻す唯一の方法です

次のシナリオを想定してみましょう。

オペレーティング システムには、カーネル モードとユーザー モードという 2 つの状態が導入されており、ユーザーがユーザー プログラム A を起動すると、オペレーティング システムのカーネルは適切なタイミングでユーザー プログラム A への CPU 使用権を積極的に放棄します (つまり、 CPU はカーネル状態からユーザー プログラム A) に移行します。ユーザー モードに切り替わります。このとき、割り込み機構がなければ、CPU はユーザー モードのままになり、オペレーティング システム カーネルは権限を取得できません。 CPUを使用します。

したがって、オペレーティング システムには割り込みメカニズムが導入されました。

上の章では、CPU が割り込みメカニズムを通じてユーザー モードからカーネル モードに切り替わることにも言及しました。(割り込みによってトリガーされ、ハードウェアは CPU の状態を自動的に切り替えます)。

1.4.2 割り込みの種類

割り込みには、外部割り込み内部割り込みの2 種類があります。

1.4.2.1 外部割り込み

外部割り込み (割り込みとも呼ばれます) は、CPU 実行命令の外部からのイベントを指します。通常、情報の入出力に使用されます。たとえば、デバイスによって発行される I/O 終了割り込みは、デバイスの入出力が完了したことを示します。

外部割り込みの例:

クロック割り込み。クロック コンポーネントが 100ms ごとに CPU に割り込み信号を送信すると仮定すると、次の状況が発生します。

1.CPU依次执行应用程序A的每一条指令(CPU每执行完一条指令后,就会检查是否接收到了中断信号,如果没有则继续执行下一条指令)。
2.CPU接收到由时钟部件发送的中断指令,则转换为内核态,操作系统将CPU交给处理时钟中断指令的内核程序(此时一般会将CPU内核交给另外一个应用程序B)
3.CPU由内核态转换为用户态且应用程序B占有了CPU,CPU依次执行应用程序B的每条指令...

同様に、上記の状況は、I/O デバイスが CPU に割り込み信号を送信する状況にも適用できます。

1.4.2.2 内中断

内部割り込みは例外とも呼ばれ、プログラム内の不正なオペコード、範囲外のアドレス、特殊なトラップ命令によって引き起こされるイベントなど、CPU の命令実行内からのイベントを指します。例外はブロックできないため、例外が発生したらすぐに処理する必要があります

内部割り込みの例:

1.应用程序A试图在用户态下执行特权指令,这个指令是非法的,会引起一个中断信号,CPU接收到该中断信号,则转换为内核态,交由处理该中断信号的内核程序占有CPU。
2.应用程序A试图请求操作系统内核提供的服务,此时应用程序A执行了一个特殊的指令(陷入指令),该指令也会引起一个中断信号。

トラップされた命令は、アプリケーションが CPU 使用権をオペレーティング システム カーネルにアクティブに返すことを意味します。(システムコールはトラップ命令によって実装されます)

1.4.2.3 分類図

ここに画像の説明を挿入します

1.4.3 割り込みの基本原理

割り込みと例外の処理は大まかに以下のとおりです。

ここに画像の説明を挿入します

ユーザープログラムの i 番目の命令の実行中に CPU が異常イベントを検出した場合 (または i 番目の命令の実行後に割り込み要求メッセージを検出した場合)、CPU は現在のアプリケーション プログラムを中断し、カーネル状態に変換して処理を実行します。対応する割り込みまたは例外ハンドラーの実行に移ります。割り込みまたは例外ハンドラで解決できる場合は、割り込みまたは例外ハンドラの実行終了後、割り込みまたは例外復帰命令を実行して、CPUを割り込みが発生したユーザプログラムのi番目の命令またはi+1命令に戻します。実行は続行されます。割り込みまたは例外ハンドラーがこれが回復不可能な致命的なエラーであると判断した場合、ユーザー プログラムは終了します。

その中で、CPU は割り込みまたは例外を検出した後、さまざまな割り込み信号の種類に応じて、「割り込みベクタ テーブル」内の対応する割り込みハンドラーの位置を見つけます。

セクションの概要

ここに画像の説明を挿入します

1.5 システムコール

1.5.1 システムコールとは

システムコールとは、「プログラマ」に提供される一連のインターフェースの総称です。システム内のさまざまな共有リソースはオペレーティングシステムによって一元管理されており、ユーザープログラムはシステムコールを通じて関連サービス(ストレージ割り当て、I/O入出力など)を要求できます。

システム コールは、セクション 1.1.2.2 で説明したオペレーティング システムによって提供されるプログラム インターフェイスです。

1.5.2 システムコールとライブラリ関数の違い

システムコールとライブラリ関数の違いを次の表に示します。

レベル 説明する
ユーザープログラム システムコールを直接行うことも、ライブラリ関数を使用することもできます
プログラミング言語 ライブラリ関数を上向きに提供します。一部のライブラリ関数はシステム コールをカプセル化し、システム コールの詳細を隠します。
オペレーティング·システム 上位層プログラムがカーネルの特定のサービスを要求できるように、システム コールを上向きに提供します。

1.5.3 システムコールの必要性

システム コールがない場合、つまりオペレーティング システムがコンピュータのさまざまな共有リソースを均一に管理していない場合、次のシナリオでエラーが送信されます。

プリンターでファイルを印刷したい場合は、マウスを使用して Word の「印刷」ボタンを押すと、プリンターがファイルの印刷を開始します。

しばらくして、別の同僚が WPS の「印刷」ボタンを押すと、プリンターが彼のファイルの印刷を開始しました。その後、2 つのプロセスが同時に実行され、あなたのファイルの内容と彼のファイルの内容が混合されます。 。

上記のシナリオは、共有リソース プリンターが均一に管理されていないためです。

このため、システムコールの必要性が反映されており、オペレーティングシステムカーネルは共有リソースを一元管理し、上流に「システムコール」を提供しているが、ユーザープロセスがプリンタなどの共有リソースを使用したい場合には、システムを通じてシステムカーネルにメッセージを送信する必要がある。リクエストを呼び出すと、システム カーネルがこれらのリクエストを調整して処理します。

1.5.4 システムコールに適用できるシナリオ

共有リソースに関連するすべての操作 (I/O 操作、ファイル管理など) は、システム コールを通じてオペレーティング システム カーネルにリクエストを行う必要があり、オペレーティング システム カーネルがユーザーに代わってリクエストを完了します。これにより、システムの安定性とセキュリティを確保し、ユーザーによる不正操作を防止することができます。

システムコールの分類を次の表に示します。

関数 説明する
端末管理 デバイスの要求、解放、起動などの完全な機能
ファイル管理 ファイルの読み取り、書き込み、作成、削除などの完全な機能
プロセス制御 プロセスの作成、キャンセル、ブロック、ウェイクアップなどの完全な機能
プロセスコミュニケーション プロセス間のメッセージ受け渡しやシグナル受け渡しなどの完全な機能
メモリ管理 メモリの割り当て、リサイクル、ジョブが占有するメモリ領域のサイズと開始アドレスの取得などの機能を完了します。

1.5.5 システムコール処理

具体的な手順は次のとおりです。

  1. CPU はアプリケーション プログラムを実行し、アプリケーション プログラムの一部の命令はいくつかのシステム コール パラメータを渡し、トラップされた命令を実行します。
  2. CPU がトラップ命令を実行した後、割り込み命令が割り込み信号をトリガーし、CPU はカーネル状態に移行し、対応する割り込みハンドラー (システム コール エントリ プログラム) が占有します。レジスタ内の特定のパラメータに従って、CPU はカーネル状態に移行します。システムコールの種類を特定します。
  3. 本システムから呼び出されたハンドラはCPUを占有して命令を実行し、実行終了後はアプリケーションプログラムに戻り、後続の命令を実行し続けます。

上記のプロセスは次のように要約できます。

システムコールパラメータを渡す -> トラップされた命令を実行する -> 対応するハンドラを実行してシステムコールを処理する -> アプリケーションに戻る

セクションの概要

ここに画像の説明を挿入します

1.6 オペレーティングシステムの構造

オペレーティング システムの成長に伴い、さまざまなオペレーティング システム アーキテクチャが登場し、現在、オペレーティング システム アーキテクチャは、階層構造、モジュール化、マクロカーネル、マイクロカーネル、アウター コアの 5 種類に分類できます。

1.6.1 階層構造

1.6.1.1 定義

階層構造とは、オペレーティング システムをいくつかの層に分割することを指し、最下層 (層 0) はハードウェア、最上位層 (層 N) はユーザー インターフェイスであり、各層は下位層の機能とサービスのみを呼び出すことができます。上位層はそのすぐ隣、つまり下位層から上位層に上がっていき、上位層はその下の層に一方的に依存してサービスを提供します。詳細を以下の図に示します。

ここに画像の説明を挿入します

1.6.1.2 利点
  • システムのデバッグと検証が容易になり、システムの設計と実装が簡素化されます。

    一方向の依存関係であるため、下位層から上位層に向かって層ごとにデバッグが可能であり、ある層で問題が見つかった場合でも、下位層のエラーが確認されているため、その層のエラー箇所をすぐに特定できます。提供されている機能に問題がないことを確認するためにデバッグが行われます。

  • 拡張とメンテナンスが簡単です。

    特定の層の機能を簡単に変更でき、その層の層間インターフェースが変更されない限り、他の層には影響を与えません。

1.6.1.3 欠点
  • さまざまなレベルの間で定義するのは困難です。
  • 効率が悪く、高レベルの関数が実行されるたびに、下位レベルのサービスを下から上に呼び続ける必要がある場合があります。

1.6.2 モジュール化

1.6.2.1 定義

モジュール化とは、オペレーティングシステムを機能に応じて複数の独立したモジュールに分割することを指し、各モジュールは特定の機能を担当し、各モジュールはさらにサブモジュールに分割できます。以下に示すように

ここに画像の説明を挿入します

1.6.2.2 利点
  • オペレーティングシステム設計の正確性、理解性、保守性の向上
  • オペレーティング システムの適応性の強化
  • OS開発効率の向上
1.6.2.3 欠点
  • モジュール間のインターフェースは実際のインターフェース需要を満たすのが難しい
  • 各モジュール設計者は連携して作業し、各決定は以前に証明された正しい決定に基づくことができないため、(階層構造とは対照的に) 信頼できる決定順序を見つけることができません。

1.6.3 マクロカーネル

1.6.3.1 定義

マクロ カーネルは、単一カーネルまたは大規模カーネルとも呼ばれ、コア状態で実行されるオペレーティング システムの主要な機能を密接に関連した全体として指し、それによってユーザー プログラムに高性能のシステム サービスを提供します。概略図は以下の通りです。

ここに画像の説明を挿入します

1.6.3.2 利点

マクロカーネルはモジュール間で情報を共有するため、モジュール間のサービスを素早く呼び出すことができ、非常に高いパフォーマンスを発揮します。

1.6.3.3 欠点
  • カーネル関数は複雑で、保守が困難です。
  • カーネル内の特定の機能モジュールに障害が発生すると、システム全体がクラッシュする可能性があります。

1.6.4 マイクロカーネル

1.6.4.1 定義

マイクロカーネルとは、オペレーティング システム カーネルの最も基本的な機能をカーネル内に保持し、コア状態で実行する必要のない機能をユーザー状態に移動して、カーネルの設計の複雑さを軽減することを指します。カーネルの外に移動されたサービスは、原理に従って階層化され、いくつかのサービス プログラムに分割され、それらの実行は互いに独立しており、相互作用はマイクロカーネルの助けを借りて通信されます。

マイクロカーネル構造は、オペレーティング システムをマイクロカーネル複数のサーバーの2 つの部分に分割します。

マイクロカーネルは、次の機能を含む、オペレーティング システムの最も基本的な機能を実装できる小さなカーネルです。

  1. ハードウェア処理と密接に関係する機能
  2. クライアントとサーバー間の通信機能
  3. いくつかの基本的な機能

オペレーティング システムの機能のほとんどは、マイクロカーネルの外側のいくつかのサーバーに配置されています。例えば、プロセス管理サーバー、I/Oデバイスサーバーなどです。これらのサーバーはユーザー モードで実行され、サーバー間の通信はマイクロカーネルによって提供されるメッセージ パッシング メカニズムを通じて行われます。概略図は以下の通りです。

ここに画像の説明を挿入します

1.6.4.2 利点
  • 拡張が容易で、多くの関数がカーネルの外部にあるため、一部の関数を変更したり追加したりするのが非常に簡単です。
  • 移植性に優れています。CPU および I/O ハードウェアに関連するコードはカーネル内に配置されます。その他のさまざまなサーバーはハードウェアから独立しているため、オペレーティング システムを別のプラットフォームに移植する場合は最小限の変更で済みます。
1.6.4.3 欠点

マイクロカーネル構造の主な欠点はパフォーマンスです。これは、コア状態とユーザー状態の間で頻繁に切り替える必要があるためです。

1.6.5 外核

外核についての知識を少しだけ持っておいてください。

外部カーネルは、カーネル状態で実行されるプログラムであり、そのタスクは、仮想マシンにリソースを割り当て、これらのリソースの使用試行をチェックして、他のマシンが他の人のリソースを使用しないようにすることです。

1.6.6 要約と比較

構造名 特性 アドバンテージ 欠点がある
階層構造 カーネルは複数のレベルに分割されており、上位レベルは下位レベルに一方向に依存します。 デバッグが簡単、拡張と保守が簡単 各層の境界を判断するのが難しく、効率が低く、層をまたいで使用することはできません。
モジュラー カーネルをモジュールに分割する メンテナンスが簡単、モジュールは相互に通信可能、新しいモジュールの動的な読み込みをサポート モジュール間のインターフェイス定義が適切でない可能性があり、モジュールは相互に依存しており、デバッグが困難です。
マクロカーネル すべての機能はカーネルに配置されます 高性能、各モジュールは相互に直接呼び出します カーネル関数は複雑で保守が難しく、特定の関数でエラーが発生するとシステム全体がクラッシュする可能性があります。
マイクロカーネル 基本的な機能のみをカーネルに配置し、残りは他のサーバーに配置します。 カーネルは機能が少なく保守が容易で、移植性が高いです。 パフォーマンスが低く、ユーザー モードとコア モードを頻繁に切り替える必要がある
外核 カーネルはプロセスのスケジューリング、プロセス通信、その他の機能を担当し、外部カーネルは抽象化されていないハードウェア リソースをユーザーに割り当て、リソース使用の安全性を確保する責任を負います。 アウターコアは「抽象的な」ハードウェアリソースをユーザーに直接割り当て、ユーザープロセスがハードウェアリソースをより柔軟に使用できるようにします。 システムの一貫性の低下

セクションの概要

ここに画像の説明を挿入します

1.7 オペレーティング システムのブート プログラム

1.7.1 概要

これまでの章の学習から、オペレーティング システムは本質的にプログラムであることがわかりました。そのため、コンピュータでは、プログラムはデータの形でハードディスクに保存されます。コンピューターの電源ボタンを押すと、ハードディスクにインストールされているオペレーティング システムがどのように実行されるのでしょうか? この問題を解決するには、このセクションで紹介するオペレーティング システムのブート プログラムが完了する必要があります。これは、コンピュータが CPU を使用して特定のプログラムを実行する -> プログラムを通じてハードディスクを識別する -> ハードディスクのパーティションを識別する - ディスク パーティション上のオペレーティング システムを識別する -> 最終的にプログラムによってオペレーティング システムを起動する、ということです上記のプロセスは、オペレーティング システムのブート プログラムの指示に従って段階的に完了します。

1.7.2 オペレーティング システムの起動プロセス

オペレーティング システムの起動プロセスを学ぶ前に、まずハードディスクにどのようなデータが保存されているかを理解する必要があります。

下の図は空のディスクを示しています

ここに画像の説明を挿入します

買ったばかりの新しいディスクには何も入っていない、まるで空箱のようです。

下の図は、オペレーティング システムがインストールされた後のディスクを示しています。
ここに画像の説明を挿入します

以下の図にメインメモリの概略図を示します。

ここに画像の説明を挿入します

上記の関連する構造を理解した後、一般的なオペレーティング システムのブート プロセスを学習し始めます。このプロセスは次の 8 つのステップに分かれています。

  1. CPU を起動します。起動された CPU は ROM 内のブート プログラムを読み取り、命令レジスタを BIOS (基本入出力システム) の最初の命令に設定し、BIOS 命令の実行を開始します。
  2. ハードウェアのセルフテストBIOS プログラムを起動した後、まずハードウェア セルフテストを実行して各ハードウェアに障害がないかどうかを確認し、障害が発生した場合、マザーボードは異なるビープ音を発して起動を促し、終了します。障害がない場合は、次のステップに進みます。
  3. ハードディスクにオペレーティング システムをロードすると、BIOS はブート シーケンスの読み取りを開始し (CMOS に保存されたブート シーケンス、またはユーザーとの対話を通じて)、ブート シーケンスで最初にランク付けされたストレージ デバイスに制御を渡します。 CPU はストレージデバイスのブートセクターの内容をメモリにロードします。
  4. マスター ブート レコード MBR をロードしますハードディスクは特定の識別子を使用して起動ハードディスクと非起動ハードディスクを区別し、マスター ブート レコード MBR の機能は、どのハードディスクのどのプライマリ パーティションでオペレーティング システムを検索するかを CPU に指示することです。
  5. ハードディスクのパーティション テーブルをスキャンし、ハードディスクのアクティブ領域をロードしますMBR にはハードディスク パーティション テーブルが含まれており、ハードディスク パーティション テーブルでは、アクティブなパーティションと非アクティブなパーティションが特定の識別子によって区別されます。マスター ブート レコードは、ハード ディスク パーティション テーブルをスキャンし、オペレーティング システムを含むハード ディスク パーティション (アクティブ パーティション) を見つけて、アクティブ パーティションのロードを開始し、アクティブ パーティションに制御を渡します。
  6. パーティション ブート レコード PBR をロードしますパーティション ブート レコード (PBR) と呼ばれる、アクティブ パーティションの最初のセクターを読み取ります。その機能は、パーティションのルート ディレクトリでオペレーティング システムの起動に使用されるプログラム (ブート マネージャー) を検索してアクティブ化することです。
  7. ブート マネージャーをロードし、アクティブ パーティション内のブート マネージャーのパーティション ブート レコードを検索して、ブート マネージャーをロードします。
  8. オペレーティング システムをロードします

ここに画像の説明を挿入します

上図の実行プロセスは次のステップに要約できます。

1. CPU は特定のメイン メモリ アドレスから命令のフェッチを開始し、ROM 内のブート プログラムを実行します (最初にハードウェア セルフテストを実行し、次にコンピュータの電源を入れます)。

2. ディスクの最初のセクターの MBR をメモリに読み取り、ディスク スキャン プログラムを実行し、ディスク パーティション テーブルをスキャンします。

3. アクティブ パーティション (プライマリ パーティション、つまりオペレーティング システムがインストールされているパーティションとも呼ばれます) からパーティション ブート レコードを読み取り、その中でプログラムを実行します。

4. ルート ディレクトリから完全なオペレーティング システム初期化プログラム (スタートアップ マネージャー) を見つけ、オペレーティング システムをロードしてブートを完了します。

1.8 仮想マシン

1.8.1 概要

仮想マシンとは、仮想化テクノロジーを使用して、特定のコンピューティング プラットフォームの実際の物理特性を隠すことによって、抽象的で統合されたシミュレートされたコンピューティング環境をユーザーに提供する論理コンピューターを指します。

現在、仮想マシンには 2 つの仮想化方法があり、第 1 タイプの仮想マシン第 2 タイプの仮想マシンに分類できます

1.8.2 最初のタイプの仮想マシン

最初のタイプの仮想マシンはオペレーティング システムに似ており、コンピュータ システム内で最高の特権レベルで実行される唯一のプログラムであり、ベア メタル上で実行され、マルチ プログラミング機能を備えています。

仮想マシンはユーザー モードのプロセスとして実行され、機密性の高い命令の実行は許可されません。ただし、仮想マシン上のオペレーティング システムは仮想マシンがカーネル モードであると認識します。これは仮想カーネル モードと呼ばれます。仮想マシンのオペレーティング システムが特権命令を実行すると、ハイパーバイザがトラップされます。仮想化をサポートする CPU では、ハイパーバイザがこの命令をチェックします。命令が仮想マシンのオペレーティング システムによって実行される場合は、この命令を次のように調整します。通常どおりに実行されます。そうでない場合は、ユーザー モードで特権命令を実行する実際のハードウェアの動作をシミュレートします。

概略図は次のとおりです

ここに画像の説明を挿入します

1.8.3 2 番目のタイプの仮想マシン

2 番目のタイプの仮想マシンは通常のプロセスと同様で、Windows や Linux などのオペレーティング システムによって提供されるリソースに依存します。

たとえば、VMware を Windows オペレーティング システムにインストールし、次に Linux オペレーティング システムのイメージを VMware にインストールすることで、Windows システム上で Linux システムを使用し、Windows システム上で他のプロセスを実行できます。同時。

概略図は次のとおりです

ここに画像の説明を挿入します

セクションの概要

ここに画像の説明を挿入します

参考文献

《2023年操作系统考研复习指导》-王道论坛

この記事がお役に立ちましたら、いいね、転送、保存していただければ幸いです~

おすすめ

転載: blog.csdn.net/weixin_42584100/article/details/126090180