Kernel 単語

3件

カーネル

2.4千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

カーネル(英:Kernel) とは、

  1. 植物の種、穀物
  2. 細胞核、中心部
  3. 物事の核心

などの意味を持つ単である。類義としてnuclear(こちらも種や核などの意味)がある。もしかしてcolonel(大佐カーネル)

そこから生して、

概要

OSとは「コンピュータハードウェアを管理し、プログラムが動作する環境提供するソフトウェア」と定義することができ、このソフトウェアを一般に「カーネル」と呼ぶ。カーネルには「システムコール」と呼ばれるソフトウェア層を介してアクセスする。[1]

OS のうちどこまでがカーネルなのかは、人や本や実装による。通常、カーネルの機とされることが多いのはプロセス管理、メモリ管理、ファイルシステムデバイスドライバネットワークなどである。これらを全て単一のカーネル実装したものがモノリシックカーネルであり、部分的に分離したものがマイクロカーネルハイブリッドカーネルである。

OSの機としてはこの他、ユーザーインターフェースシェル)、システムユーティリティライブラリ等があるわけだが、これらはカーネルとは分けられることが多い。

カーネルの説明の例

一つの説明として、「CPUの特権モードで動くプログラム全体」という考えかたがある。

一般に CPU には、特権モードユーザモードが存在する。
ユーザモードでは、ハードウェアへのアクセスや、他のアドレス間へのアクセスは禁止されている。
特権モードでは、すべてのハードウェアへのアクセスが可である。
プロセスは、このユーザモードで動くことで、暴走したとしても他のプロセスへ悪を防ぐことが可になる。

しかし、ユーザモードだけではハードウェアへのアクセスプロセス間の通信等ができず、特権モードが必要になる。

この時、特権モードで動き、適切なプロセスに正しいアクセスコントロールのみを許すのがカーネルである。例えば、一般のプロセスSSDアクセスする場合、カーネルシステムコールを使ってのみアクセスできる。このプロセスは、ファイルやディレクトリは変更できるかもしれないが、「ファイルシステムを破壊する」という間違った行為は不可能である。

カーネルの設計による分類

モノリシックカーネル

OSの全ての基本サービスが単一のアドレス間内で実装されている。うまくチューンすると実行効率に優れるが、例えばデバイスドライバなどにバグがあるとシステム全体を連れにクラッシュすることになる。

MS-DOSやCP/Mなど昔のOSは全てモノリシックカーネルだった。現在も広く使われているOSでは LinuxFreeBSD などが有名であるが、これらの現代的なモノリシックカーネルは、メンテナンス性や安定性を善させる的で全てのデバイスドライバを最初からロードせず、必要に応じてカーネルに結合させることができるようになっており(ダイナミックローディング)、マイクロカーネルの長所を部分的に取り入れている。

マイクロカーネル

メモリ管理やプロセス間通信など必要最低限の機のみ、特権モード実装されている。
ネットワークファイルシステムデバイスドライバなどユーザモードで動かせるものは、できるかぎりユーザモードで動かす。カーネルの設計が単純化でき、安定性は高いが、実行効率はやや低め。

マイクロカーネル高信頼性が要される産業システムや、効率より応答性が最優先のRTOS実装などで使用される。

マイクロカーネル」という名前からはOSが小さくなるんじゃないかと期待しそうだが、あくまでも小さいのは特権モードで動くコアだけである。通常はこの周りにファイルシステムやら何やらの実用上必須機が載ってくるわけで、そのOS全体が大きいか小さいかは設計による。

UNIX系ではMachやMINIXなど。TRONの一つであるT-Kernelもこの実装である(TRONの中にはモノリシック実装のものもある)。

RTAIやMkLinuxRTLinuxのように、モノリシックの権化のようなLinuxマイクロカーネル移植されていたりする。

ハイブリッドカーネル

大抵はマイクロカーネル生で、カーネル以外のいくつかのモジュールを特権モードで動かして高速化したものである。モノリシックよりは融通が利くが、マイクロカーネル程安定しない。

現在PCメジャーWindowsmacOSは共にハイブリッドカーネルである。PC-UNIX系ではDragonFly BSDハイブリッドカーネルを採用している。

近年のハイブリッドカーネルOSでは、信頼性とセキュリティの向上のため、ネットワークや一部の基本的なデバイスドライバのみ特権モードで動かすようになってきている。

WindowsVistaは従来全てカーネルモード(特権モード)で動かしていたデバイスドライバカーネルモードドライバユーザーモードドライバに分離。64ビット版のドライバカーネルモードで動かすにはデジタル署名を必須とした。また、Windows NT4.0でカーネルモードに移されたウィンウマネージャおよびグラフィックデバイスインターフェイス (GDI) の大半をユーザーモードに戻した。

macOSは特権モードで動くカーネル(kext)とユーザーモードで動くシステムの2通りの機モジュールを持つが、macOS Big Sur以降はサードパーティによるkextの使用は推奨されていない。

関連項目

脚注

  1. *「詳解UNIXプログラミング 第3版」 W.Richard Stevens/Stephen A.Rago 訳:大木 泳社 2014 p.1
この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2024/04/19(金) 07:00

ほめられた記事

最終更新:2024/04/19(金) 07:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP