Kernel単語

3件
カーネル
2.4千文字の記事
  • 6
  • 0pt
掲示板へ

カーネル(英: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

【スポンサーリンク】

  • 6
  • 0pt
記事編集 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Kernel

1 ななしのよっしん
2011/04/23(土) 00:09:36 ID: lrUabHfegt
>>アカデミックの分野では色々提案されているが、まともに使えるものはい。
それは間違い。QNXなどの立な実用例がある。

ミッションクリティカルで安全性最重視の場合、
コアの堅性が高いマイクロカーネルは悪くない選択。
👍
高評価
0
👎
低評価
0
2 ななしのよっしん
2013/05/26(日) 05:48:59 ID: 3blLY/EsNT
QNXは組み込み用OSとしてそれなりに高い地位にあるわけじゃないな。
もしマイクロカーネルが本当に「まともに使える」のであれば、メモリの乏しいスマホで使われてもおかしくないのだが、実際にはそうなっていない。
👍
高評価
0
👎
低評価
0
3 ななしのよっしん
2013/06/05(水) 00:34:53 ID: lrUabHfegt
>>2
QNXに産業系のカーネルだから、スマホ辺りはちょっと守備範囲が違うと思う。
もっともBlackBerryのTablet OSがQNXベースらしいから採用がないわけじゃないが。

コアの堅性が本気で必要なのは、自動車制御とか医療機器みたいな人の生き死にが掛かるレベルの話な。もちろんこういう世界でも組み込みLinuxとかはあるけど、マイクロカーネル系のシステムはちゃんと健闘してるよ。
👍
高評価
1
👎
低評価
0
4 ななしのよっしん
2013/11/03(日) 01:50:03 ID: mfO7f5SDQT
自動車制御でカーネルパニックしたら1大事だからなwwww
👍
高評価
0
👎
低評価
0
5 ななしのよっしん
2013/11/30(土) 11:09:58 ID: lrUabHfegt
ちなみに英語だけど、こんなドキュメントもあります。
http://nptel.iitm.ac.in/courses/Webcourse-contents/IISc-BANG/Operating%20Systems/pdf/PPTs/Mod_8.pdfexit

マイクロカーネル部分の要約:
ハードリアルタイムを実現したいRTOSの場合、カーネルは小さい方がいい。マイクロカーネルはそういうのに合ってる。

と。

メジャーPC OS等でマイクロカーネルれたのは、マイクロカーネルの「メリット」とされるものがPC的には大して重要でなかったこと、
また初期Windows NTが示すように、グラフィックドライバのような性第一の要を満たすには不向きだったことが原因かな。
もしNTがそのままマイクロカーネル実装されていたら、性は出なかっただろうが、代わりにWindows名物BSODの頻度はずっと下がっていたはず。結局こういうのはトレードオフなのよ。
👍
高評価
1
👎
低評価
0
6 ななしのよっしん
2020/11/03(火) 09:08:19 ID: n4p5jpu4aV
>>5
つまり、Windows NTBSoDが出ない代わりに、覇権OSは別の不安定なOSだった可性が高いな
👍
高評価
0
👎
低評価
0
7 ななしのよっしん
2021/08/30(月) 22:20:48 ID: JxV4LQG4K7
頻出だけどさっぱりわからない単語
👍
高評価
0
👎
低評価
0
8 ななしのよっしん
2024/10/29(火) 21:50:38 ID: JxV4LQG4K7
コンピューターの勉強を諦めさせた単語
👍
高評価
0
👎
低評価
0

おすすめトレンド