banner
ShuWa

ShuWa

是进亦忧,退亦忧。然则何时而乐耶?
twitter

操作システムの基礎

オペレーティングシステム#

1. オペレーティングシステムとは#

本質的には、コンピュータ上で実行されるソフトウェアプログラムであり、コンピュータのハードウェアとソフトウェアリソースの管理に主に使用されます。
カーネル(Kernel)はオペレーティングシステムの中核部分であり、システムのメモリ管理、ハードウェアデバイスの管理、ファイルシステムの管理、およびアプリケーションの管理を担当しています。カーネルはアプリケーションとハードウェアをつなぐ橋であり、システムのパフォーマンスと安定性を決定します。

2. 機能は何ですか#

  • プロセスとスレッドの管理:プロセスの作成、終了、ブロック、ウェイクアップ、プロセス間通信など。
  • ストレージ管理:メモリの割り当てと管理、外部ストレージ(ディスクなど)の割り当てと管理など。
  • ファイル管理:ファイルの読み取り、書き込み、作成、削除など。
  • デバイス管理:デバイス(入出力デバイスや外部ストレージデバイスなど)の要求や解放、デバイスの起動などの機能を実行します。
  • ネットワーク管理:オペレーティングシステムはコンピュータネットワークの使用を管理します。ネットワークは異なるコンピュータを接続する方法であり、オペレーティングシステムはコンピュータネットワークの構成、接続、通信、セキュリティなどを管理して、効率的で信頼性の高いネットワークサービスを提供します。
  • セキュリティ管理:ユーザーの認証、アクセス制御、ファイルの暗号化などを行い、不正なユーザーによるシステムリソースへのアクセスや操作を防止します。

3. ユーザーモードとカーネルモード#

ユーザーモードとカーネルモードとは何ですか?#

  • ユーザーモード (User Mode) : ユーザーモードで実行されるプロセスは、ユーザープログラムのデータに直接アクセスでき、低い権限を持っています。アプリケーションプログラムがディスクの読み書き、ネットワーク通信などの特殊な権限を必要とする操作を実行する場合、オペレーティングシステムにシステムコールリクエストを送信してカーネルモードに移行する必要があります。
  • カーネルモード (Kernel Mode):カーネルモードで実行されるプロセスは、システムのメモリスペース、デバイス、ドライバなど、ほぼすべてのコンピュータリソースにアクセスでき、制限がありません。オペレーティングシステムはプロセスのシステムコールリクエストを受け取ると、ユーザーモードからカーネルモードに切り替わり、対応するシステムコールを実行し、結果をプロセスに返し、最後にユーザーモードに戻ります。
    ユーザーモードとカーネルモード

なぜユーザーモードとカーネルモードを区別する必要があるのですか?カーネルモードだけではダメですか?#

  • CPU のすべての命令の中には、メモリの割り当て、クロックの設定、IO 処理など、危険なものがあります。これらの命令をすべてのプログラムが使用できると、システムの正常な動作に壊滅的な影響を与える可能性があります。したがって、これらの危険な命令はカーネルモードでのみ実行できるように制限する必要があります。これらの操作システムカーネルモードでのみ実行できる命令は、特権命令とも呼ばれます。
  • コンピュータシステムにカーネルモードしかない場合、すべてのプログラムやプロセスはシステムリソース(メモリ、CPU、ハードディスクなど)を共有する必要があります。これにより、システムリソースの競合や衝突が発生し、システムのパフォーマンスと効率が低下します。また、すべてのプログラムやプロセスが同じ特権レベルとアクセス権を持つため、セキュリティが低下します。

!!ユーザーモードとカーネルモードの切り替えはどのように行われますか?#

ユーザーモードからカーネルモードへの切り替えは、次の 3 つの方法で行われます:

  1. システムコール(Trap):ユーザーモードプロセスがカーネルモードに切り替えるよう要求する場合、システムコールが使用されます。システムコールのメカニズムの核心は、ユーザープログラムが操作システムがユーザーに特別に開放した割り込みを使用して実現されることです。
  2. 割り込み(Interrupt):外部デバイスがユーザーの要求操作を完了した後、CPU に対応する割り込み信号を送信します。この時、CPU は現在実行中の命令を中断し、割り込み信号に対応する処理プログラムを実行します。もし前の命令がユーザーモードのプログラムであれば、ユーザーモードからカーネルモードへの切り替えが自動的に行われます。例えば、ハードディスクの読み書き操作が完了した場合、システムはハードディスクの読み書きの割り込み処理プログラムに切り替わり、後続の操作を実行します。
  3. 例外(Exception):CPU がユーザーモードで実行されているプログラムを実行しているときに、予期しない例外が発生した場合、現在の実行プロセスを処理するカーネル関連プログラムに切り替えるため、カーネルモードに切り替わります。例えば、ページフォールトの例外が発生した場合など。
    システムの処理では、割り込みと例外は似ていますが、中断はプロセッサの外部から発生し、特定の命令によって引き起こされるものではありません。一方、例外は現在の命令の実行結果によって引き起こされます。

システムコール#

これらのシステムコールは、次のような機能に大別されます:

  • デバイス管理:デバイス(入出力デバイスや外部ストレージデバイスなど)の要求や解放、デバイスの起動などの機能を実行します。
  • ファイル管理:ファイルの読み取り、書き込み、作成、削除などの機能を実行します。
  • プロセス管理:プロセスの作成、終了、ブロック、ウェイクアップ、プロセス間通信などの機能を実行します。
  • メモリ管理:メモリの割り当て、解放、ジョブのメモリ使用量とアドレスの取得などの機能を実行します。

システムコールと通常のライブラリ関数呼び出しは非常に似ていますが、システムコールはオペレーティングシステムカーネルによって提供され、カーネルモードで実行されます。一方、通常のライブラリ関数呼び出しは、ライブラリ関数またはユーザー自身によって提供され、ユーザーモードで実行されます。
まとめ:システムコールはアプリケーションプログラムとオペレーティングシステムの間の相互作用の一種であり、システムコールを使用することで、アプリケーションプログラムはファイル、デバイス、ネットワークなどのオペレーティングシステムの低レベルリソースにアクセスできます。

システムコールのプロセス#

システムコールのプロセスは次のように簡単に分けることができます:

  1. ユーザーモードのプログラムがシステムコールを発行すると、特権命令(オペレーティングシステムカーネルのみが実行できる命令)が関与するため、ユーザーモードプログラムの権限が不足しているため、中断が発生し、トラップ(トラップは一種の割り込み)が発生します。
  2. 中断が発生すると、現在実行中の CPU プログラムは中断され、中断処理プログラムにジャンプします。カーネルプログラムが実行され、システムコールの処理が開始されます。
  3. カーネルの処理が完了したら、トラップを発生させ、再び中断が発生し、ユーザーモードに切り替わります。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。