カーネルとは
カーネルとは、カーネルモードで動作するソフトウェアのことです。
カーネルモードとは、ソフトウェアがハードウェアを操作するために利用する CPU の動作モードのことです。
以降では、以下の順番で説明を行います。
- ハードウェアとは(カーネルモード、ユーザーモードとは)
- ソフトウェアとは
- カーネルの機能とは
ハードウェアとは
ハードウェアとは、コンピュータで利用する物理的な処理を行うもの(機械)のことです。
ハードウェアは以下の要素から構成されます。

- CPU: 計算処理をハードウェア
- CPU には以下の2つの動作モードがあります
- ユーザーモード(ソフトウェア関連する処理のみを行うモードです)
- カーネルモード(ハードウェアにアクセスするためのモードです)
- システムコールでユーザーモードからカーネルモードに切り替えます
- CPU には以下の2つの動作モードがあります
- レジスタ:CPU の計算で使用する値を記憶する領域
- 電源を切るとデータが消える
- 小容量・高速
- CPU に内蔵されていることが多い
- メモリ: CPU の計算結果を保存する一時的に記憶する領域
- 電源を切るとデータが消える
- 中容量、中速
- メモリの詳細は以下の記事
- ストレージデバイス:メモリの情報を永続的に記憶する領域
- 電源を切ってもデータが消えない
- 大容量、低速
- ネットワークデバイス(NIC):データを他のコンピュータに送信するデバイス
- ネットワークは昔、拡張カードの1つだった
- 最近はマザーボードにデフォルトで搭載されている
- 入出力デバイス:データを入出力するデバイス
- 入力デバイス:マウス、キーボード
- 出力デバイス:ディスプレイ
ソフトウェアとは
コンピュータで利用する論理的な意味を持つデータのことです。
ソフトウェアは以下の要素から構成されます。

- プログラム:ソフトウェアのうち、実際に処理を行うソフトウェア
- プロセス:実行中のプログラム
- アプリケーション:やりたいことを実現するソフトウェア
(ソフトウェアアプリケーションソフトウェア、アプリとも呼ばれる)- メールアプリ
- ブラウザアプリ
- Youtube アプリ
- ミドルウェア:アプリケーションがよく利用するOSの機能をまとめたもの
- ストレージデバイス関連の操作をまとめた:データベース
- ネットワークデバイス関連の操作をまとめた:Web サーバー
- OS:ハードウェアを操作するための基本ソフトウェアの集合
(システムソフトウェアとも呼ばれる)- ユーザーモードで動作するソフトウェア:シェルなど
- カーネルモードで動作するソフトウェア:カーネル
- アプリケーション:やりたいことを実現するソフトウェア
※厳密な定義は諸説あるのでざっくりそんなもんだと理解してください
カーネルの機能とは
カーネルには様々な機能がありますが、一例を挙げます。
- プロセススケジュール(CPU の利用順を決める)
- メモリ管理(mmap() ファイルを仮想アドレス空間にマッピング)
- デバイス管理(uevents 外部デバイスの接続、解除を検知 ) Linuxカーネル(uevents)用のデバイス管理ツール udev
- デバイスドライバー(外部デバイスへのアクセスのルール)
- 入出力デバイスドライバー
- ストレージデバイスドライバー
- ネットワークデバイスドライバー
- ファイルシステム(ストレージデバイスへのアクセスを補佐)
以上のようにカーネルは、ハードウェア(CPU, メモリ, 外部デバイス)を操作するためのソフトウェアです。アプリケーションはカーネルを利用することで、自分でハードウェアを操作するソフトウェアを毎回作成しなくて済みます。
カーネルを利用してソフトウェアからハードウェアへのアクセス
ユーザーモードで動作するプロセスがシステムコールを利用してカーネルを呼び出すことでハードウェアにアクセスします。(ファイルを読み込んだり、ディスプレイに文字を表示したり)

カーネルの具体例は以下のとおりです。

0
コメント