1. オペレーティングシステムの動作仕組み
カーネルには OS の中核部分が含まれています。たとえば、グラフィカル インターフェイスはカーネルに配置されていません。グラフィカル インターフェイスがなくても、コマンド ラインから OS を使用できます。
CPU は命令を受け取ると、それが特権命令であるか非特権命令であるかをすでに区別できます。
オペレーティング システムは、現在実行中のユーザー プログラムまたはカーネル プログラムが PSW に基づいているかどうかを判断します。
コンピュータの電源を初めて入れたとき、CPU はカーネル状態にあり、まず CPU 上でオペレーティング システムのカーネル プログラムが実行され、ブートが完了すると、ユーザーはアプリケーションを起動できるようになります。オペレーティング システムのプログラムは積極的に CPU を放棄し、ユーザー プログラムが CPU 上で実行できるようにします (CPU を放棄する前に PSW フラグをユーザー モードに設定します)。
特権命令がユーザーモードに埋め込まれている場合、CPU は次に実行される命令が特権命令であることを確認できますが、同時に現在のプログラムがユーザーモードプログラムであることを検出し、割り込みがトリガーされます。CPU が割り込みを検出すると、すぐにコア状態に変更され、現在のアプリケーションの実行が停止され、代わりにオペレーティング システムのカーネル コードが実行されます (割り込みにより、OS は CPU を再び使用する権利を獲得します)。 OS が割り込みを処理し、再び CPU 使用率を他のアプリケーションに引き渡します。
コアモード>ユーザーモード:PSWを変更するだけです。
ユーザー モード > コア モード: 割り込みによってのみトリガーされ、ハードウェアによって自動的に変換されます。割り込みがトリガーされた後、OS は CPU を使用する権利を取り戻し、コア モードの関連機能を実行して応答します。割り込み要求に応じます。
2. 中断と例外
たとえば、整数を 0 で割るのはプログラミングのバグであり、OS では修正できません。OS を終了してください。
ユーザープログラムがトラップされた命令を実行するということは、ユーザープログラムが積極的にCPUの使用権をカーネルプログラムに返し、オペレーティングシステムのカーネルに何らかのサービスを提供してもらうことを意味します。完了すると、トラップ命令はユーザー プログラムによって実行されるため、特権命令ではありません。つまり、ユーザー モードで動作します。
内部割り込みと呼ばれる理由は、この割り込みが CPU 内部から発生するためであり、CPU が現在の命令を実行することによって生成される割り込みです。
外部割り込みは、現在実行中の命令とは何の関係もありません。
内部割り込みか外部割り込みかに関係なく、割り込みが発生すると、カーネルプログラムの実行に切り替えて割り込みを処理します。
各命令の実行終了時に、CPU は処理が必要な外部割り込み信号があるかどうかを定期的にチェックし、割り込み信号の種類に基づいてどの割り込み処理サブルーチンを使用するかを決定します。
3. システムコール
GUI: フォーム上でユーザーが実行するすべての操作は、OS の GUI モジュールのコードを実行することによって実行する必要があります。GUI は ker32 モジュールには含まれていません。マルチ タスクなどの別個のタスクを実行する独立したモジュールです。 -core CPU. 提供できます. 1 つのコアは主に GUI モジュールによって使用されます
オペレーティングシステムが上位層に提供するインターフェースはシステムコールです
共有デバイスが関与する操作では、通常、OS がリソースを合理的に割り当てられるようにするシステム コールが必要です。
たとえば、C 言語の printf 関数は結果をカプセル化するのに役立ち、最終的にコンパイルされると、上図に示すような一連のコマンドになり、トラップされた命令のアセンブリ コードが含まれます。
例: CreateProcess 関数が実行されると、フォーク コードが埋め込まれます。フォーク関数が実行される前に、システム コール番号を含む値をレジスタに割り当てる必要があります。その後、実行は命令にトラップされ、割り込みが発生し、渡されたパラメータに基づいてエントリ番号が決定されます No. 割り込みハンドラ (システムコール)
システム コールは、OS カーネルの一部にすぎず、ユーザーが呼び出すことができるインターフェイスのほんの一部にすぎません。
システムコールはレジスタ内のパラメータを検出し、さらに割り込み処理サブルーチンを実行します。
4. オペレーティング システムのアーキテクチャ (パート 1)
Ubuntuは主に非カーネル機能を実装しており、主要な機能のカーネルは依然としてLinuxを使用しています。
ビッグ カーネルは OS の従来の機能をすべて保持しますが、マイクロカーネルは最も重要な機能を分離してマイクロカーネルを作成します。
4. オペレーティング システム アーキテクチャ (パート 2)
階層構造:各階層が直接密に結合しているため、デバッグや検証には便利ですが、階層が多く、階層を越えて呼び出すことができないため、システムコールに時間がかかります。
モジュール化: オペレーティング システムを機能に応じていくつかのモジュールに分割し、各モジュールのインターフェイスを指定して、メッセージ メカニズムを必要とせずにモジュール間の通信を容易にすることで、新しいモジュール/ファイル システムの導入時に再コンパイルする必要がなくなります。カーネル全体。
マイクロカーネル: 割り込み、プリミティブ、プロセス通信などのコア機能のみがカーネルに配置され、残りはユーザー モードに配置されます。
アウター コア: カーネルはプロセスのスケジューリングと通信を担当します。アウター コアは、抽象化されていないハードウェア リソース (仮想でも抽象でもない) をユーザー プロセスに割り当て、頻繁なマッピングのオーバーヘッドを削減します。
デバイス ドライバーはロード可能なカーネル モジュールです。システムが正常に実行できるかどうかには影響しません。システムのスケーラビリティにのみ影響します。ドライバー モジュールをロードすると、システムは新しいモジュールをサポートできるため、ロードされたカーネル モジュールはケーキのアイシング
5. オペレーティングシステムの起動
コンピューターの電源を入れたときに、オペレーティング システムをどのようにして実行しますか?
オペレーティング システムが C ドライブにインストールされており、オペレーティング システムの起動に使用される場合、C ドライブはディスクのアクティブ パーティションと呼ばれます。
本質は、起動管理プログラムを見つけて実行し、OSの起動作業を完了することです
ROMブートプログラム/ブートローダー/ブートプログラム
ディスク ブート プログラムは、パーティション テーブルに基づいて C ドライブの場所を決定します。
ハードウェア セルフテストでは、ホスト ハードウェアが正常かどうかを確認し、2 番目のステップを実行します。
6. 仮想マシン
カテゴリ 1: 上位層のオペレーティング システムが特権付き命令を使用したい場合、基盤となる VMM が命令をインターセプトして合理的に実行し、上位層 OS に特権があると認識させます。
カテゴリ 2: OS はホスト OS 内の通常のプロセスとほぼ同じです
別のオペレーティング システム用のイメージ ファイルをダウンロードする
2 番目のタイプは簡単に移行でき、自分の仮想マシンの ISO イメージ ファイルを他の人に送信すると、他の人がそれを使用するとき、コンピュータ環境は自分のものとまったく同じになり、内部のソフトウェアも変更されません。
特権命令は細分化され、少数の機密命令のみが VMM によってインターセプトされるため、システム実行の効率が向上します。
カテゴリ 2: VMM の一部はユーザー モードで実行され、その一部はカーネル モードで実行されます。カーネル モードのこの部分は、仮想マシン ドライバーの形式でオペレーティング システムのカーネルにロードされます。すべてのシステム コールユーザーによる書き込み (書き込みなど) は VMM によって呼び出され、アプリケーションに代わって基盤となるホスト OS へのシステム コールをインターセプト、処理、発行します。