本章では、コンピュータ上でプログラムがどのように実行されているのかを理解するために、 OS(オペレーティングシステム)、プロセス、スレッドの仕組みを学ぶ。
これにより、「なぜ処理が遅くなるのか」「どこでボトルネックが発生しているのか」を 構造的に把握できるようになることを目的とする。
1. OS(オペレーティングシステム)の役割
OSは、ハードウェアとアプリケーションの間に位置し、 システム全体を管理・制御するソフトウェアである。
■ 主な役割
- プロセス管理(実行中プログラムの制御)
- メモリ管理(RAMの割り当て)
- ファイルシステム管理
- デバイス管理(I/O制御)
代表的なOS:
- Linux(サーバで主流)
- Windows
- macOS
OSがなければ、アプリケーションはハードウェアを直接操作できない。
2. プロセスとは
プロセスとは、「実行中のプログラム」を指す。
■ 特徴
- 独立したメモリ空間を持つ
- 他のプロセスと基本的に干渉しない
- OSによってスケジューリングされる
■ プロセスの状態
- New(生成)
- Ready(実行待ち)
- Running(実行中)
- Waiting(待機)
- Terminated(終了)
OSはこれらの状態を切り替えながら、複数のプロセスを同時に処理する。
3. スレッドとは
スレッドは、プロセス内で実行される処理の最小単位である。
■ 特徴
- 同一プロセス内でメモリを共有
- 軽量で高速な切り替えが可能
- 並列処理に適している
1つのプロセス内に複数のスレッドを持つことができる。
4. プロセスとスレッドの違い
| 項目 | プロセス | スレッド |
|---|---|---|
| メモリ | 独立 | 共有 |
| 生成コスト | 高い | 低い |
| 通信 | IPCが必要 | 直接共有可能 |
| 安定性 | 高い(分離) | 低い(影響しやすい) |
用途に応じて、プロセスとスレッドを使い分けることが重要となる。
5. コンテキストスイッチ
OSはCPUを複数のプロセス・スレッドで共有するため、 処理を切り替える必要がある。
■ コンテキストスイッチとは
- 実行中の状態(レジスタ・プログラムカウンタなど)を保存
- 別のプロセス/スレッドに切り替え
頻繁なコンテキストスイッチは、パフォーマンス低下の原因となる。
6. マルチスレッドと並列処理
マルチスレッドにより、複数の処理を同時に実行できる。
■ 利点
- CPUリソースの有効活用
- I/O待ち時間の削減
■ 注意点
- 競合状態(Race Condition)
- デッドロック(Deadlock)
- 同期処理の必要性(Lock / Mutex)
正しく設計しないと、バグや性能劣化の原因となる。
7. 実務における設計指針
システム設計では、以下の観点が重要となる。
- CPUバウンド vs I/Oバウンドの識別
- プロセス分離による安定性確保
- スレッドによる並列化
- 非同期処理(Async / Await)の活用
特にWebサーバやAPIでは、スレッド・非同期処理の設計が性能に直結する。
まとめ
本章では、OS・プロセス・スレッドの基本構造を理解した。
- OSがシステム全体を管理
- プロセスは独立した実行単位
- スレッドは軽量な並列処理単位
- コンテキストスイッチが性能に影響
- マルチスレッド設計には注意が必要
これにより、アプリケーションの実行構造とパフォーマンスの関係を 理解できるようになる。
次章では、これらの処理を支えるネットワークの仕組みへと進む。