OSとカーネル 〜アプリたちの席取り合戦を裁く絶対的独裁者〜
1. 素朴な疑問:そもそも「OS」って何をしているの?
パソコンを買うと、最初から「Windows」や「macOS」、スマホなら「iOS」「Android」が入っています。 しかし、私たちが普段画面で見ているのは、ブラウザ(Chrome)やExcel、YouTube、LINE、ゲームなどの「アプリ」です。
文章を書くのも、動画を観るのも、すべてアプリの仕事です。OSそのもので文章を書くわけではありません。 「アプリさえ動けばいいのに、なぜわざわざギガ単位の容量を食う重たいOSというソフトウェアを間に挟まなければいけないのか?」と思いませんか?
かつてのファミコンや初期のパソコン(MS-DOSの時代など)は、カセットを挿すとゲームが直接パソコンの機械(ハードウェア)を操作していました。OSなどほとんどいらなかったのです。
その答えはシンプルです。 もしOSがいなかったら、複数のアプリが画面やメモリ、CPUを奪い合って殴り合いのケンカを始め、起動して1秒でパソコンがクラッシュするからです。
2. 概念の芯:無法地帯の教室を武力で支配する「絶対的独裁者」
第1話〜第5話で学んだとおり、パソコンの中には「CPU(作業員)」「メモリ(作業机)」「ストレージ(書類棚)」「画面(830万個の電球)」という限られた資源(ハードウェア)しかありません。
現代のパソコンは、「YouTubeで音楽を流しながら、Wordで文書を書き、裏でファイルをダウンロードする」というように、複数のアプリを同時に動かします。 もし、ここに公平な管理者がいなかったらどうなるでしょうか?
- ゲームアプリ:「俺は3Dグラフィックで忙しい! CPUもメモリも画面も、全部俺が独占する!」
- LINEアプリ:「おい、俺だって新着メッセージを受信したいんだ! CPUの計算を少し寄越せ!」
- バグったアプリ:「計算を間違えて無限ループに突入したぞ! でもCPUの席は絶対に誰にも譲らん!」
- ウイルス:「しめしめ、あいつが机(メモリ)に広げている銀行のパスワードを、横から盗み見て書き換えてやろう」
すべてのアプリは「自分のことしか考えていない我が儘な子ども」です。 この無法地帯に武力で法と秩序をもたらすために君臨しているのが、**OS(オペレーティングシステム)であり、その中枢で24時間体制で監視を続ける心臓部が「カーネル(Kernel=中核)」**という絶対的な独裁者です。
OSは、アプリたちから「ハードウェア(機械)を直接触る権利」を力ずくで取り上げます。 そして、**「CPUの席は1ミリ秒交代な」「お前のメモリはここからここまで、一歩でもハミ出したら処刑」「画面のこの枠線の中だけに描け」**と冷酷にルールを敷くことで、平和な同時並行世界(マルチタスク)を作っているのです。
3. 本題:勝手な行動は絶対に許さない「システムコール」と「割り込み」
では、独裁者(カーネル)は具体的にどうやってアプリたちを服従させているのでしょうか? カギを握るのが、**「システムコール」と「割り込み」**という2つの絶対的な仕組みです。
① 触りたいなら頭を下げて書類を出せ:「システムコール(陳情書)」
現代のCPUには、ハードウェアの回路レベルで**「一般市民モード(ユーザーモード)」と「王様モード(カーネルモード / 特権モード)」**という厳格な身分制度が刻まれています。
- アプリ(ブラウザやWord) =「一般市民モード」で動く。SSDに1文字書き込むことも、スピーカーを鳴らすことも直接は許されない。
- カーネル(OSの心臓) =「王様モード」で動く。コンピュータのすべての部品を直接動かせる。
アプリがファイルを保存したいときは、直接SSDに書き込むのではなく、OSの執務室のドアを叩いて**「すみません、この文章をファイルに保存させてください」と陳情書(システムコール)を提出**します。
プログラムの中で何気なく書く「ファイルを開く」「画面に文字を出す」「通信する」といった処理は、裏ではすべてこの**システムコール(身分切り替えの陳情)**に変換されています。 OSが門番として厳しく審査しているからこそ、アプリのプログラムミスでハードディスク全体が吹き飛ぶ事故が防がれているのです。
② 暴走アプリの首根っこを掴む:「タイマー割り込み」
「でも、もし行儀の悪いアプリがCPUを独占して、OSに処理を返さず無限ループで暴走したら、パソコンが乗っ取られてしまいませんか?」と思いますよね。
昔のOS(Windows 3.1やMac OS 9など)は、実は本当にこれでフリーズしていました。アプリ側の「親切な自主返却」に頼っていたからです(これをノンプリエンプティブ・マルチタスクと呼びます)。
これを力ずくで解決したのが、現代の**「プリエンプティブ・マルチタスク(強奪型)」であり、その武器が「割り込み(Interrupt)」**です。
マザーボードの上には、CPUとは独立して正確な時を刻む小さな時計(ハードウェアタイマー)が載っています。 CPUがどんなにアプリの計算に没頭していても、数ミリ秒(1,000分の数秒)ごとに時計が「ジリリリリ!」と非常ベル(割り込み信号)を鳴らします。
- 非常ベルが鳴る(タイマー割り込み発生):CPUは、計算途中であっても動かしていたアプリを強制停止させる。
- 独裁者(OS)への交代:主導権を取り戻したカーネルが「はい時間切れ! お前は机の書類を全部引き出しにしまえ!」と命じる(コンテキストスイッチ)。
- 次のアプリへ:別のアプリの書類を引き出しから机に並べ直し、「次はLINE、お前の番だ!」とCPUに座らせる。
1秒間に数百回〜数千回、この「強制交代」を猛スピードで繰り返すことで、人間には「すべてのアプリが同時に滑らかに動いている」ように見えているのです。
触って試す:スケジューリング・シミュレータ
🔄 スケジューリング・シミュレータ(CPUの席は1つだけ)
3つのアプリが、1つしかないCPUの席を取り合っています。「次へ」を押すたびにタイマー割り込みが鳴り、いま座っているアプリは強制的に席を立ち(コンテキストスイッチ)、次のアプリが座ります。少しずつ交代していけば、全部が同時に進んでいるように見えるはずです。
「次へ」を押して、タイマー割り込みで交代させてみてください。
4. 現実世界でのドラマ:なぜWindows 95はあんなに青画面になったのか?
この仕組みを知ると、パソコンの歴史上最大の事件である**「ブルースクリーン(青い画面)の激減」**の理由がはっきりと分かります。
1990年代、Windows 95や98を使っていた人たちは、毎日のように突然現れる真っ青な画面(BSoD)に泣かされていました。 Wordで何時間もかけて書いた論文が、突然のフリーズで一瞬で消えるのが日常茶飯事だったのです。なぜあんなに壊れたのでしょうか?
実はWindows 95は、昔の古いゲームやソフトをそのまま動かすために、「メモリの壁(保護)」をあえて緩く作っていました。 そのため、1つの出来の悪いゲームがメモリの番地を1文字書き間違えただけで、隣にあったOSの大事な心臓部を直接上書きしてしまい、裁判長(OS)ごと全員が即死していたのです。
現代のOS(Windows 2000/XP以降のNT系や、macOS、Linux)は、第1話で学んだ「仮想記憶」を使って、**アプリごとに完全に隔離された透明な個室(仮想アドレス空間)**を与えています。 アプリから見ると「自分ひとりで広大なメモリを独占している」ように見えますが、外の部屋には指一本触れられません。
だから現代のパソコンでは、たとえブラウザでタブを100個開いて暴走しても、「ブラウザが強制終了しました」とウィンドウがスッと消えるだけで、パソコン本体は何事もなかったかのように動き続けられるのです。
📝 3行で頭に入る「試験・実務の要点まとめ」
- OSとカーネル:OSの中核ソフトウェアがカーネル。ハードウェア資源(CPU、メモリ、入出力)を抽象化し、アプリの席取りを管理する。
- ユーザーモードと特権モード:アプリは制限されたユーザーモードで走り、ハードウェアの直接操作はシステムコールを介してOS(特権モード / カーネルモード)に委託する。
- プリエンプティブ・マルチタスク:OSがタイマー割り込みを使って強制的にCPU使用権を回収し、複数のプロセス(タスク)を細切れに切り替えて実行する方式。切り替え時の状態保存・復元をコンテキストスイッチと呼ぶ。