OS とは
OS(Operating System)は、ハードウェアとアプリケーションの間に立ち、リソースを管理するソフトウェアです。代表例は Windows, macOS, Linux です。
OS の主要機能
プロセス管理
複数のプログラムを同時実行(マルチタスク)するために、CPU 時間をプロセスに割り当てます。
プロセス A: 実行 → 待機 → 実行 ...
プロセス B: 実行 → 待機 → 実行 ...
スケジューリングアルゴリズムの例:
- ラウンドロビン:各プロセスに均等な時間を割り当てる
- 優先度ベース:優先度の高いプロセスを先に実行
メモリ管理
各プロセスに独立したメモリ空間を提供します。
- 仮想メモリ:物理メモリより大きなアドレス空間をプロセスに提供
- ページング:メモリを固定サイズ(ページ)に分割して管理
- スワップ:使われていないページをディスクに退避
ファイルシステム
ストレージ上のデータをファイルとディレクトリの階層で管理します。
| OS | ファイルシステム |
|---|---|
| Windows | NTFS, FAT32, exFAT |
| macOS | APFS, HFS+ |
| Linux | ext4, XFS, Btrfs |
デバイス管理
ハードウェアとのやり取りをデバイスドライバ経由で抽象化します。アプリケーションはハードウェアの詳細を知らなくてよくなります。
システムコール
アプリケーションは OS の機能をシステムコール(syscall)を通じて利用します。
// ファイルを開く(C言語の例)
int fd = open("/etc/hosts", O_RDONLY);
主なシステムコール:
read/write:ファイル読み書きfork/exec:プロセス生成・実行socket/connect:ネットワーク通信malloc/free( libc 経由):メモリ確保・解放
カーネルとユーザ空間
OS はカーネル空間とユーザ空間に分離されています。
┌─────────────────────────────┐
│ ユーザ空間 │ アプリケーション
│ アプリA アプリB アプリC │
├─────────────────────────────┤
│ カーネル空間 │ OS の中核
│ プロセス管理 / メモリ管理 │
│ ファイルシステム / ネットワーク │
├─────────────────────────────┤
│ ハードウェア │ CPU / RAM / ディスク
└─────────────────────────────┘
まとめ
- OS はプロセス・メモリ・ファイル・デバイスを管理する
- プロセスはスケジューリングにより CPU を交代で使う
- アプリケーションはシステムコールを通じて OS 機能を利用する