この項目では、コンピュータ用語について説明しています。その他の用法については「カーネル (曖昧さ回避)」をご覧ください。
カーネルはアプリケーションソフトウェアとコンピュータのハードウェアを結び付ける。
カーネル(英: kernel)は、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する[1]。
オペレーティングシステムの基本コンポーネントとして、カーネルはメモリ、CPU、入出力を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、プロセス間通信、システムコールなどを提供する。
これらのタスクはカーネルによって方式が異なり、設計も実装も異なる。モノリシックカーネルは全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。マイクロカーネルはサービスの大部分をユーザー空間で実行し、コードの保守性とモジュール性を向上させようとする[2][3]。多くのカーネルはこの二つのカテゴリのいずれか、あるいは中間である。
目次
1 概要
2 カーネルの機能
2.1 プロセス管理
2.2 メモリ管理
2.3 デバイス管理
2.4 システムコール
3 カーネル設計の観点
3.1 保護(プロテクション)のサポート
3.1.1 ハードウェアによる保護と言語による保護
3.2 プロセスの協調作動
3.3 入出力デバイス管理
4 カーネル全体の設計方針
4.1 モノリシックカーネル
4.2 マイクロカーネル
4.3 モノリシックカーネルとマイクロカーネル
4.3.1 性能
4.4 ハイブリッドカーネル
4.5 ナノカーネル
4.6 エクソカーネル
5 カーネル開発史
5.1 初期のOSカーネル
5.2 タイムシェアリングOS