7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します
Kernel とは、オペレーティングシステム(OS)の中核を担うプログラムである。
OS と同様に、その定義には諸説あり、どこまでがKernelなのかは、時代や本や人や実装による。
一つの説明として、「CPUの特権モードで動くプログラム全体」という考えかたがある。
一般に CPU には、特権モードとユーザモードが存在する。
ユーザモードでは、ハードウェアへのアクセスや、他のアドレス空間へのアクセスは禁止されている。
特権モードでは、すべてのハードウェアへのアクセスが可能である。
プロセスは、このユーザモードで動くことで、暴走したとしても他のプロセスへ悪影響を防ぐことが可能になる。
しかし、ユーザモードだけではハードウェアへのアクセスやプロセス間の通信等ができず、特権モードが必要になる。
この時、特権モードで動き、適切なプロセスに正しいアクセスコントロールのみを許すのが、Kernel である。
例えば、一般のプロセスがHDDにアクセスする場合、システムコールを使ってカーネルを通してのみHDDにアクセスできる。
このプロセスは、ファイルやディレクトリは変更できるかもしれないが、「ファイルシステムを破壊する」という間違った行為は不可能である。
単一のアドレス空間内で実装されている。階層が少ない分うまくチューンすると実行効率に優れる。
昔のOSは全てモノリシックカーネルだった。現在は Linux や FreeBSD などのPC-UNIX系が有名である。
必要最低限の機能のみ、特権モードで実装されている。
ユーザモードで動かせるものは、できるかぎりユーザモードで動かす。設計は単純化できるが、層が増える分効率はやや低め。
コアの機能が小さく、かつ単純故に落ちにくいことから、超高安定性が要求される産業システムや、効率より応答性能が最優先のRTOS実装などで使用される。
「マイクロカーネル」という名前からはOSが小さくなるんじゃないかと期待しそうだが、あくまでも小さいのは特権モードで動くコアだけである。通常はこの周りにファイルシステムやら何やらの実用上必須機能が載ってくるわけで、そのOS全体が大きいか小さいかは設計による。
有名どころではMINIXやまだできてないけどGNUのHurdなど。
RTAIやRTLinuxのように、モノリシックの権化のようなLinuxも何気にマイクロカーネル移植されていたりする。
大抵はマイクロカーネルでは遅いので、適当な機能を特権モードで動かして高速化したものである。構造的にはマイクロカーネルに近い。
長所短所共それなり。モノリシックよりは融通が利くが、マイクロカーネル程安定しない。
現在PCでメジャーなWindows、Mac OS Xは共にハイブリッドカーネルである。PC-UNIX系ではDragonFly BSDがハイブリッドカーネルを採用している。
▲