OSの基礎
OSとは
OS(Operating System / 基本ソフト)は、ハードウェアとアプリケーションの間に立ち、コンピュータ全体を管理するソフトウェアです。Windows、macOS、[[Linux]] などが代表例です。
OS が無ければ、アプリは自分で CPU の割り当てやディスクの記録位置まで面倒を見なければなりません。OS がその共通部分を引き受けることで、アプリ開発者は「ファイルを開く」「メモリを確保する」といった簡単な指示だけで済みます。この窓口をシステムコールと呼びます。
OSの主な役割
| 役割 | 内容 |
|---|---|
| プロセス管理 | プログラムの起動・終了・CPU 時間の割り当て |
| メモリ管理 | 各プログラムへのメモリ割り当てと保護 |
| ファイルシステム管理 | ディスク上のデータをファイル・ディレクトリとして扱う |
| デバイス管理 | ドライバを介してキーボード・ディスク・ネットワーク機器を制御 |
| ユーザー・権限管理 | 誰が何にアクセスできるかを制御する |
このうちプログラム実行の単位を扱うのが [[プロセスとスレッド]]、ファイルへのアクセス制御を扱うのが [[ファイルシステムとパーミッション]] です。
カーネルとユーザー空間
OS の中核部分をカーネル(kernel)と呼びます。メモリは2つの領域に分けて扱われます。
- カーネル空間 — ハードウェアを直接操作できる特権的な領域。OS の中核だけが動く
- ユーザー空間 — アプリが動く領域。ハードウェアを直接触れず、必ずシステムコール経由で依頼する
この分離があるため、アプリが暴走してもシステム全体が巻き込まれにくくなっています。アプリのクラッシュで OS ごと落ちないのは、この保護の仕組みのおかげです。
マルチタスクの正体
1つの CPU コアが同時に実行できる処理は1つだけです。それでも複数のアプリが同時に動いて見えるのは、OS が非常に短い時間で処理を切り替えているためです。この切り替えをコンテキストスイッチ、切り替えの方針を決める仕組みをスケジューラと呼びます。
初学者向けポイント
- サーバーの世界では Linux が主流。Windows Server はグループウェアや業務システムでよく使われる
- OS の上にデータベースや Web サーバーといった [[ミドルウェア]] を載せ、その上でアプリが動く、という三層のイメージを持つと構成図が読める
- 1台のハードウェアの上で複数の OS を動かす技術が [[仮想マシンとハイパーバイザ]] — クラウドの土台になっている
関連技術とのつながり
- [[プロセスとスレッド]] — OS が管理する実行単位そのもの
- [[Linux]] — サーバーで最も広く使われる OS
- [[ファイルシステムとパーミッション]] — OS のファイル管理と権限制御の具体像
- [[仮想マシンとハイパーバイザ]] — OS を仮想的に複数動かす技術
- [[ミドルウェア]] — OS とアプリの間を埋める共通ソフトウェア
Q: OSの役割として本文で挙げられていないものはどれ?
- [ ] プロセス管理
- [ ] メモリ管理
- [x] Webサイトのデザイン作成
解説: OS が担うのはプロセス・メモリ・ファイル・デバイス・権限の管理です。デザイン作成はアプリの仕事です。
Q: アプリケーションがハードウェアを利用するときに通す OS の窓口を何と呼ぶ?
- [x] システムコール
- [ ] コンパイラ
- [ ] リポジトリ
解説: ユーザー空間のアプリはハードウェアを直接触れず、システムコールで OS に依頼します。
Q: 1つのCPUコアで複数のアプリが同時に動いているように見える理由はどれ?
- [ ] アプリが1つずつ終わるまで他は起動できないから
- [x] OSが非常に短い時間で処理を切り替えているから
- [ ] メモリを暗号化しているから
解説: コンテキストスイッチによる高速な切り替えをスケジューラが制御することで、同時実行しているように見えます。