OSの構成と機能とは?カーネル・デバイスドライバ・動作モードを基礎から理解しよう
はじめに
普段PCやスマートフォンを使うとき、
- Windows
- macOS
- Linux
- Android
- iOS
などの**OS(Operating System)**が動いています。
OSの役割を一言で表すと、
コンピュータのハードウェアやソフトウェアを管理し、アプリケーションが利用できる環境を提供すること
です。
例えば、アプリケーションがプリンタを使うたびに、
「このプリンタには、この命令をこの順番で送って……」
とハードウェアを直接制御するのは大変です。
そこで、
利用者
↓
アプリケーション
↓
OS
↓
ハードウェア
のようにOSが間に入り、コンピュータ全体を管理しています。
1. 基本ソフトウェアとは
コンピュータのソフトウェアは、大きく、
ソフトウェア
├─ 基本ソフトウェア
└─ 応用ソフトウェア
と考えることができます。
基本ソフトウェアは、
コンピュータを動作させるための基本的な機能を提供するソフトウェア
です。
代表的なものがOSです。
一方、
- Webブラウザ
- 表計算ソフト
- ゲーム
- メールソフト
など、利用者の目的に応じて使用するものを**応用ソフトウェア(アプリケーションソフトウェア)**と呼びます。
2. OSは何を管理している?
OSはコンピュータのさまざまな資源を管理しています。
代表的なものには、
CPU
メモリ
ストレージ
キーボード
マウス
ディスプレイ
プリンタ
ネットワーク機器
などがあります。
こうしたコンピュータが持つ資源を、
コンピュータ資源(リソース)
と呼びます。
複数のアプリケーションがCPUやメモリなどを勝手に使ってしまうと、コンピュータを安定して動かせません。
そこでOSが、
どのプログラムに、どの資源を、どのように使わせるか
を管理しています。
3. 基本ソフトウェアの構成
基本ソフトウェアは、役割によっていくつかに分けて考えることができます。
代表的には、
基本ソフトウェア
├─ 制御プログラム
│
├─ 言語処理プログラム
│
└─ サービスプログラム
があります。
制御プログラム
CPUやメモリ、入出力装置などを管理し、コンピュータ全体を制御します。
言語処理プログラム
プログラミング言語で書かれたプログラムを、コンピュータで実行できる形へ変換します。
代表例として、
- コンパイラ
- インタプリタ
- アセンブラ
などがあります。
これらは後の記事「言語処理ツール」で詳しく扱います。
サービスプログラム
ファイル操作やシステムの保守など、コンピュータを利用するための補助的な機能を提供します。
4. 制御プログラム
OSの中でも特に重要なのが、
制御プログラム
です。
制御プログラムは、
コンピュータのハードウェアやプログラムの実行を管理する部分
です。
例えば、
CPUをどのプログラムに使わせる?
メモリをどこまで使わせる?
ディスクからどのデータを読み込む?
プリンタをどう制御する?
といった処理を管理します。
5. カーネル
OSの中心部分を、
カーネル(Kernel)
と呼びます。
カーネルは、
CPU・メモリ・入出力装置など、コンピュータの重要な資源を管理するOSの中核部分
です。
イメージすると、
┌─────────────────┐
│ アプリケーション │
├─────────────────┤
│ OS │
│ ┌───────────┐ │
│ │ カーネル │ │
│ └───────────┘ │
├─────────────────┤
│ ハードウェア │
└─────────────────┘
となります。
6. カーネルの主な役割
カーネルはコンピュータの重要な資源を管理しています。
代表的な役割には、
プロセス管理
メモリ管理
入出力管理
ファイル管理
などがあります。
例えば複数のアプリケーションを同時に動かしているとき、
ブラウザ
動画
メール
ゲーム
がすべてCPUを使おうとします。
そこでカーネルがCPUやメモリなどを管理し、それぞれのプログラムが動作できるようにします。
プロセス管理やメモリ管理については、次の記事以降で詳しく見ていきます。
7. ジョブ管理
**ジョブ(Job)**とは、
コンピュータに実行させる仕事の単位
です。
例えば、
データを読み込む
↓
計算する
↓
結果を出力する
といった一連の処理を、1つの仕事として扱います。
ジョブ管理では、投入されたジョブについて、
- 実行の受付
- 実行順序の管理
- 実行状況の管理
- 終了処理
などを行います。
特に複数の処理をまとめて実行するバッチ処理などを理解するときに重要な考え方です。
8. デバイスドライバ
OSがハードウェアを利用するために重要なのが、
デバイスドライバ(Device Driver)
です。
デバイスドライバは、
OSから特定のハードウェアを操作するためのソフトウェア
です。
例えば、
- プリンタ
- GPU
- ネットワークアダプタ
- ストレージ
- USB機器
など、ハードウェアによって操作方法は異なります。
アプリケーションがそれぞれの機器を直接制御するのではなく、
アプリケーション
↓
OS
↓
デバイスドライバ
↓
ハードウェア
という形で利用します。
9. なぜデバイスドライバが必要?
例えばプリンタを考えてみましょう。
プリンタAとプリンタBでは、内部の制御方法が異なる場合があります。
アプリケーション側が、
プリンタAの操作方法
プリンタBの操作方法
プリンタCの操作方法
……
をすべて知るのは大変です。
そこで、各ハードウェアに対応したデバイスドライバが、
OSとハードウェアの橋渡し
を行います。
これによってアプリケーションは、ハードウェアごとの細かな違いを強く意識せず利用できます。
10. カーネルモードとユーザーモード
OSでは、プログラムが何でも自由にCPUやハードウェアを操作できるわけではありません。
大きく、
カーネルモード
と
ユーザーモード
という実行モードに分けて保護します。
11. カーネルモード
**カーネルモード(Kernel Mode)**は、
OSのカーネルなどが、重要な処理を実行するための高い権限を持つモード
です。
カーネルモードでは、CPUの特権命令を実行したり、ハードウェアなどの重要な資源へアクセスしたりできます。
カーネルモード
↓
高い権限
↓
CPU・メモリ・デバイスなどを制御
そのため、OSの中核となる処理が動作します。
12. ユーザーモード
**ユーザーモード(User Mode)**は、
一般的なアプリケーションを制限された権限で実行するモード
です。
例えば、
- Webブラウザ
- テキストエディタ
- ゲーム
などは、通常ユーザーモードで動作します。
ユーザーモード
↓
権限を制限
↓
重要なハードウェアなどを
勝手に操作できない
この仕組みによって、アプリケーションが誤動作しても、コンピュータ全体への影響を抑えやすくなります。
13. なぜ2つのモードに分けるの?
もしすべてのアプリケーションが自由にハードウェアやメモリを操作できたら、
アプリA
↓
間違って重要なメモリを書き換える
↓
OSまで動かなくなる
といった問題が発生しやすくなります。
そこで、
一般的なアプリ
↓
ユーザーモード
↓
できることを制限
し、
OSの重要な処理
↓
カーネルモード
↓
高い権限で実行
というように分離しています。
つまり、
OSやコンピュータを保護し、安全・安定して動作させるため
の仕組みです。
14. アプリからOSの機能を使いたい場合
ユーザーモードのアプリケーションでも、
「ファイルを読みたい」
「ネットワーク通信したい」
「デバイスを使いたい」
といった処理は必要です。
このような場合、アプリケーションはOSへ処理を依頼します。
アプリケーション
(ユーザーモード)
↓
OSへ処理を依頼
↓
カーネル
(カーネルモード)
↓
ハードウェアなどを操作
このとき利用される代表的な仕組みが、
システムコール(System Call)
です。
システムコールによって、アプリケーションはOSが提供する機能を安全に利用できます。
15. OSの構成を整理しよう
ここまでの内容をまとめると、
利用者
↓
アプリケーション
│
│ ユーザーモード
│
↓
システムコール
↓
────────────────
│ カーネルモード
│
↓
カーネル
├─ プロセス管理
├─ メモリ管理
├─ 入出力管理
└─ ファイル管理
↓
デバイスドライバ
↓
ハードウェア
というイメージになります。
OSは単に「WindowsやLinuxのこと」と覚えるだけではなく、
アプリケーションとハードウェアの間に入り、コンピュータの資源を安全に管理している
と理解すると、その後のプロセス管理や記憶管理も分かりやすくなります。
まとめ
この記事で覚えること
- OSはコンピュータのハードウェアやソフトウェアを管理する
- OSは基本ソフトウェアの代表例
- 基本ソフトウェアには制御プログラムなどがある
- カーネルはOSの中核部分
- カーネルはCPU・メモリ・入出力装置などの資源を管理する
- ジョブはコンピュータに実行させる仕事の単位
- デバイスドライバはOSとハードウェアの橋渡しをする
- カーネルモードは高い権限で重要な処理を実行する
- ユーザーモードでは一般的なアプリケーションを制限された権限で実行する
- アプリケーションはシステムコールによってOSの機能を利用できる
🍯 はちみつメモ
OSは「コンピュータ全体の管理役」。その中心がカーネルで、ハードウェアとの橋渡しにはデバイスドライバを使う。さらに、重要な処理はカーネルモード、一般的なアプリはユーザーモードに分けることで、安全にコンピュータを動かしている。