オペレーティングシステムの基本概念
すべてのコンピュータシステムには、「オペレーティングシステム(Operating System)」と呼ばれる基礎的なプログラムの集合があります。その中でも最も重要なプログラムが「カーネル(Kernel)」です。
カーネルは、システムの起動時にRAMへ読み込まれます。
カーネルは、システムの基本的な構造や機能を決定する重要な要素です。
ここでは、多くの場合「オペレーティングシステム」という用語を「カーネル」と同じ意味で使用します。
オペレーティングシステムには、次の2つの重要な役割があります。
- ハードウェアプラットフォームの一部である低レベルのプログラマブルなハードウェアを制御すること
- コンピュータシステム上で動作するアプリケーション(いわゆるユーザープログラム)に実行環境を提供すること
オペレーティングシステムの中には、すべてのユーザープログラムにハードウェアへの直接アクセスを許可するものもあります。典型的な例として、MS-DOSが挙げられます。一方、UNIX系のオペレーティングシステムでは、アプリケーションからコンピュータの物理的な構成や低レベルの詳細を完全に隠蔽します。プログラムがハードウェア資源を利用する際は、オペレーティングシステムを介して要求を発行しなければなりません。この要求はカーネルによって処理され、許可された場合に限り、カーネルがユーザープログラムに代わってハードウェアを操作します。
近代的なオペレーティングシステムは、この仕組みを実現するために、ハードウェアが提供する特定の機能を活用しています。これにより、ユーザープログラムがハードウェアを直接制御したり、許可なく任意のメモリ領域へアクセスしたりすることを防ぎます。
具体的には、CPUには少なくとも2つの異なる実行モードが備わっています。1つはユーザープログラムが動作する「非特権モード」、もう1つはカーネルが動作する「特権モード」です。UNIX系のオペレーティングシステムでは、それぞれ「ユーザモード」と「カーネルモード」と呼ばれています。この仕組みにより、システムの安全性と安定性が確保されています。
マルチユーザシステム
マルチユーザシステムとは?
マルチユーザシステムとは、複数のユーザが同時に独立したアプリケーションを実行できるコンピュータのことです。「並行して実行できる」とは、複数のアプリケーションが同時に動作状態になり、CPU・メモリ・ディスクなどのシステム資源を共有しながら処理を進められることを意味します。「独立して実行できる」とは、各アプリケーションが他のアプリケーションの影響を受けずに処理を進められることを指します。
ただし、複数のアプリケーションが同じシステム資源を共有するため、あるアプリケーションが動作している間に別のアプリケーションへ切り替わることで、全体の処理速度が低下し、ユーザの応答時間に影響を与えます。近代的なオペレーティングシステムが複雑化しているのは、この遅延を最小限に抑え、可能な限り高い応答性を提供するためです。
マルチユーザシステムに必要な機能
マルチユーザシステムには、以下のような機能が求められます。
認証機構
ユーザIDを確認し、正当なユーザのみがシステムを利用できるようにする。保護機構(アプリケーションの安定性確保)
バグを含むユーザプログラムが、他のアプリケーションの動作を妨げるのを防ぐ。保護機構(セキュリティ対策)
悪意のあるプログラムによる他のユーザの処理への干渉や盗み見を防ぐ。アカウンティング機構
各ユーザに割り当てるシステム資源の使用量を制限し、過剰な利用を防ぐ。ハードウェアによる保護の重要性
オペレーティングシステムがこれらの保護機構を安全に実現するには、ハードウェアの支援が不可欠です。特に、CPUの特権モードを利用することで、ユーザプログラムがシステムの重要な機能へ直接アクセスし、不正に制限を超えることを防ぎます。
UNIXは、このようなハードウェアの保護機構を活用してシステム資源を管理する代表的なマルチユーザシステムです。
今日の内容は理解できた!