Skip to content

オペレーティングシステム:コンピュータに「大管家」を雇う

はじめに

完璧な CPU と無限のメモリがあれば、コンピュータはすぐに使えるのか? 前章では、トランジスタがどのように組み合わさって強力な CPU になるのかを見てきました。しかし、たとえ最高級のハードウェアを手に入れても、それを直接操作しようとすると、画面にたった一文字を表示するだけでも何百行もの難解な機械語命令を書かなければなりません。面倒なだけでなく、極めて危険でもあります——ほんの少しミスをするだけで、自分のコードが他人のデータを上書きしてしまう可能性があります。

こうした悪夢を解決するために、オペレーティングシステム(Operating System、略称 OS)が誕生しました。それは、あなたと冷たいハードウェアの間にある、最も偉大な「ソフトウェア」の層です。本章では、難解なコードを脇に置き、わかりやすい比喩を使って、この「スーパー管家」がどのように雑然としたハードウェアを見事に手なずけているのかを見ていきます。

この記事で学べること

本章を学び終えると、以下の力が身につきます:

  • トラブルシューティング能力:「プログラムがフリーズした」「メモリが足りない」といった問題に遭遇したとき、OS レベルで原因を分析できる
  • 用語の深い理解:「マルチプロセス」「仮想メモリ」「ファイルパーミッション」がどのような問題を解決するのかを理解できる
  • システム思考:プログラムは孤立して動作するのではなく、OS、他のプロセス、ハードウェアリソースと密接にやり取りしていることを理解できる
  • 後続学習の基礎:並行プログラミング、システムチューニング、コンテナ技術のための土台を築ける
内容コアコンセプト
第 1 章プロセス管理CPU 時分割多重、タイムスライスローテーション
第 2 章メモリ管理仮想メモリ、ページング機構
第 3 章ファイルシステムファイル構成、ディレクトリ構造

0. 全体像:OS がないとどうなるのか?

想像してみてください。あなたは大きな可能性を秘めた「計算工場」(あなたのコンピュータ)を経営しています。工場には、オールマイティで疲れ知らずのトップクラスの働き手(CPU)がおり、巨大な倉庫(メモリ)と無数のコンテナ(ハードディスク)を備えています。

もしあなたが雇わないとしたら——工場長(OS)を雇わなかったら:

  1. CPU 独占危機:CPU は一度に一つのことしかできません。誰かが音楽を聴いていると、他の誰かがウェブを見たい?すみません、音楽を聴いている人が自発的に CPU を明け渡すまで、皆で列を作って待たなければなりません。
  2. メモリ踏みつけ事故:WeChat もゲームも倉庫(メモリ)を使っています。もし警備員がエリアを区画していなければ、ゲームがうっかり装備データを WeChat の箱に入れてしまい、WeChat がその場でクラッシュします。
  3. ハードディスクの迷宮:ハードディスクのハードウェアは、0 と 1 でびっしり刻まれた巨大な光ディスクに過ぎません。昨日保存した写真を見つけるには、「第 1 プラッタ、第 56 トラック、第 8 セクタ」に保存されていると正確に記憶していなければなりません——こんな非人間的な座標を覚えられる人はいません。
📱 Applications
🎵💬🎮
🖥️ Operating System
Schedule CPU
Allocate memory
Manage files
💾 Hardware
🧠 CPU💾 Memory💿 Disk
The application is ready to send a request...

上記の三大悪夢を解決するために、OS は三種の神器を繰り出します:プロセス管理メモリ管理、そしてファイルシステムです。


1. プロセス管理:CPU の時分割多重

普段コンピュータを使うとき、WeChat を立ち上げながら音楽を聴き、さらに文字を入力したりしています。しかし、もしあなたが買ったコンピュータに CPU コアが一つしかなかったとしたら、どうやってこの三つを同時に行っているのでしょうか?

答えは:同時にやっているわけではありません。OS が猛烈な「時間管理」を行っているのです。

⏱️ The CPU switches tasks so fast you cannot feel it
CPU
💬Chat
Time slice: 0ms
💬
Chat
Running
🎵
Music
Waiting
🌐
Browser
Waiting
💡 Principle: The CPU switches processes every 100ms. It happens so quickly that it feels like everything runs at the same time, even though each process is actually executing in slices.

1.1 「プロセス」とは?

実行中のすべてのプログラムは、プロセスと呼ばれます。これは「プロジェクトチーム」のようなものと理解してください。独自のコード(作業リスト)、独自のメモリデータ(プロジェクト資金)を持ち、CPU の面会を待つ列に並んでいます。

1.2 タイムスライスローテーション

特定の悪質なソフトウェアが CPU を独占し続けるのを防ぐために、OS は CPU 時間を極めて小さな断片(約 10 ミリ秒)に切り分け、各プロセスに順番に割り当てます。切り替え速度があまりにも速いため、あなたには「同時実行」されているように感じられます。


2. メモリ管理:仮想アドレス空間

CPU の交代利用の問題を解決したら、次はメモリ空間です。管理がなければ、すべてのソフトウェアが物理メモリモジュールに直接データを書き込むため、互いに上書きし合う踏みつけ惨事が必ず発生します。

🧠 The operating system gives each program an illusion of memory
📱 Memory as the program sees it (virtual)
💬 Chat
1
2
3
4
🎮 Game
1
2
3
4
The operating system maps addresses ↓
💾 Real memory chips (physical)
1OS
2
3
4OS
5
6
7
8OS
💡 Principle: Each program thinks it owns a continuous block of memory on the left. In reality, the operating system spreads data across real memory on the right. The addresses a program sees are virtual, and the OS translates them.

2.1 仮想メモリ(Virtual Memory)

OS はすべてのプロセスに対して、大きな嘘をつきます:「おい、お前はこのコンピュータの利用可能なメモリをすべて独占しているんだ。好きに使っていいぞ!」

プロセスから見ると、自分のメモリモジュールは常に連続的クリーンです。プロセスは安心してそこにデータを書き込みます。

2.2 ページテーブルマッピング(Page Table)

実際はどうなっているのでしょう?OS はこっそりとデータを実際の物理メモリの中のさまざまな断片的な隙間に詰め込んでいます。これには二つの天才的な利点があります:

  1. 絶対的な安全性:WeChat は常に自分の空間だけを見ることができ、他人のデータを改ざんすることはできません
  2. 断片の活用:物理メモリがどんなに乱雑でも、プロセスにマッピングされる仮想空間は依然として整然としています

3. ファイルシステム:永続的ストレージの整理

もし真新しいハードディスクを購入したら、その中身は荒涼とした記憶媒体の集まりに過ぎません。写真を一枚保存したいと思っても、ハードディスクはただこう尋ねるだけです:「何バイト目に保存しますか?」

📁 The file you see vs fragments on disk
📂 What you see (folder)
📁Photos
🖼️pet.jpg2.5MB
🖼️trip.png1.8MB
💾 Real disk storage (data blocks)
1
2
3Pet-1
4
5Trip-1
6Trip-2
7Pet-2
8
9
10
11Pet-3
12
💡 Principle: The file system splits a file into fragments stored in different disk blocks, then keeps a table of their locations. The tidy folder you see is a view built from that table.

3.1 ファイルシステムは何をしているのか?

  1. ハードディスクの分割:ハードディスクを無数の固定サイズのブロック(通常 4KB)に切り分けます
  2. 帳簿の作成:どのブロックが使用済みで、どのブロックが空いているかを記録します
  3. パスの変換Dドライブ/写真/ペット.jpg を「第 3、7、11 ブロック」に変換します

これこそが、ファイル名の変更が瞬時に完了するのに(帳簿の名前を変えるだけ)、ファイルのコピーには長い時間がかかる(実際にハードディスクのデータブロックを読み書きする必要がある)理由です。


4. 三者連携:プログラム起動の完全な流れ

ここまで OS の三大モジュールをそれぞれ理解してきました。では、プログラムをダブルクリックして起動するとき、それらがどのように連携して動作するのかを見てみましょう:

🚀 What is the computer doing after you double-click an icon?
1👆
You double-click the icon
The operating system receives a request to start the browser
2📋
Create a process
3🧠
Allocate memory
4📁
Load files
5▶️
Start running
🖱️
Clicking...

デスクトップのアイコンをクリックするにせよ、コード内の一行の print("Hello World") にせよ、この複雑なブラックボックス操作を欠かすことはできません。私たちがこれほど気軽にデジタルの世界をサーフィンできるのは、すべて背後で OS が私たちに代わって重荷を背負ってくれているからです。


さらに読み進めるには

OS のさまざまな「管理学と騙しのテクニック」が面白いと感じたなら、以下の発展的なトピックもおすすめです:

  • プロセスとスレッド:プロセスがプロジェクトチームなら、「スレッド」はチーム内で実際に作業するメンバーです
  • 並行性とロック:二つのプロセスが同時に同じリソースを競合するとき、デッドロックを防ぐ方法
  • システムコール:OS が上位アプリケーションに提供する「サービス窓口」