Linuxカーネルとは何か

ryichk
·

カーネルとはカーネルモードで動作するプログラムである。

CPUにはカーネルモードユーザモードの2つがある。

CPUアーキテクチャによってはモードが3つ以上あり、x86_64アーキテクチャは4つのCPUモードがあるが、Linuxカーネルは2つしか使わない

カーネルは、このモードという機能を使い、プロセスからデバイスに直接アクセスできないようにしている。

CPUがカーネルモードであれば何も制限がないのに対して、ユーザモードで実行中なら特定の命令を実行できないように制約をかけられる。

Linuxの場合はカーネルのみがカーネルモードで動作し、デバイスにアクセスできる。

それに対して、プロセスはユーザモードで動作するため、デバイスにアクセスできない。

そのため、プロセスはカーネルを介して間接的にデバイスにアクセスする。

カーネルは、デバイス制御に加え、システム内のすべてのプロセスが共有するリソースを一元管理し、システム上で動作するプロセスに配分する。

参照

[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】

@ryichk
wanna be a good hacker.