OSとは何か:カーネルとユーザー空間
コンピュータが起動すると、最初に動き出す最も重要なソフトウェアがオペレーティングシステム(OS)です。Windows、macOS、Linux、iOS、AndroidなどはすべてOSです。OSは、ハードウェアの生々しい制御を隠蔽し、複数のアプリが互いを壊し合うことなく安全に動くための「舞台」を提供しています。OSが持つ本質的な役割と、安全性の防壁である「特権分離」について学びます。
1. もしもOSが存在しなかったら?
OSの役割を理解するために、もしOSが存在しない世界(ベアメタル)でゲームアプリを作ると想像してください。
OSがないと、ゲームアプリの開発者は以下のような低レベルなハードウェア制御コードを自前で書かなければなりません。
- 「キーボードの特定のピンの電圧変化を検知して入力を判断する」
- 「ディスプレイの特定のアドレスに直接ピクセルデータを送り込む」
- 「SSDの特定のセクター(物理的な位置)を指定してセーブデータを保存する」
これだけでも悪夢ですが、さらに深刻なのは「他のアプリと同時に実行することができない」という問題です。 もし、あるバグを含んだゲームアプリがメモリの変な場所にデータを書き込んでしまったら、同時に動いていた別の音楽再生アプリのデータを上書きしてしまい、システム全体が即座にクラッシュするでしょう。
このように、ハードウェアを直接制御させるのは非効率的で極めて危険です。そこで、ハードウェアの複雑な制御を一手に引き受け、アプリに対して安全で使いやすい「窓口」を提供する共通の管理プログラムが必要になりました。これがOSです。
2. カーネルとユーザー空間の分離
OSは、システムの安全を守るために、CPUが持つ「権限レベル」の機能を利用して、実行環境を厳格に2つに分離しています。
- カーネル空間(Kernel Space):特権モード
OSのコアである「カーネル」が動作する領域です。ハードウェア(CPU、メモリ、周辺機器など)への全権限を持っており、どんな命令でも直接実行できます。 - ユーザー空間(User Space):非特権モード
ブラウザ、ゲーム、テキストエディタなどの一般的なアプリケーションが動作する領域です。ハードウェアへの直接アクセスは完全に禁止されており、許可されていないメモリ領域を読み書きしようとすると、即座にCPUによって強制遮断されます。
3. 唯一の公式窓口:システムコール(System Call)
ユーザー空間のアプリが「ファイルをディスクに保存したい」「ネットワークで通信したい」「画面に文字を出したい」といったハードウェア操作を行いたい場合、自分で直接操作することはできません。
その代わりに、カーネルに対して安全に作業を依頼する公式の依頼窓口を利用します。この窓口のことをシステムコール(System Call)と呼びます。
システムコールが呼ばれると、CPUの権限レベルが一時的に「特権モード(カーネル空間)」に切り替わり、カーネルがリクエストを受け取ります。カーネルは、そのアプリに権限があるか(例:そのファイルを書き換えてもよいか)を厳格にチェックした上で、代わりにハードウェアを操作し、結果をアプリに返します。
このチェック機構があるおかげで、1つのアプリが暴走してもシステム全体が巻き添えでクラッシュするのを防ぐことができます。
4. まとめ
OSは、ハードウェアの生々しい操作を裏側でまとめて代行し、安全なセキュリティの壁(ユーザー空間とカーネル空間の分離)を作ることで、現代の安全なマルチタスク環境を支えています。
次のセクションでは、このOSの上でプログラムが「実行中」の状態になった最小単位である「プロセス」と「スレッド」の仕組みについて学びます。