カーネルとは
カーネル ( Kernel )は、階層型に設計された オペレーティングシステム (OS) の中核となる部分である。システムの リソース を管理し、 ハードウェア と ソフトウェア コンポーネントのやりとりを管理する。
オペレーティングシステムの基本コンポーネントとして、カーネルは メモリ 、 CPU 、 入出力 を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、 プロセス間通信 、 システムコール などを提供する。
これらのタスクはカーネルによって方式が異なり、設計も 実装 も異なる。 モノリシックカーネル は全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。 マイクロカーネル はサービスの大部分を ユーザー空間 で実行し、コードの保守性と モジュール性 を向上させようとする。しかし、初期化が完了すると、カーネルはいわゆるプロセスとしては存在せず、ディスクアクセスなどの高い特権レベルを必要とする処理を必要としたときに ユーザプログラム から呼び出される機能の集合体として存在することになる。カーネルの処理の流れはユーザープロセスの処理の流れの延長上にあり、 システムコール によってカーネルに処理が渡り、終了するとユーザーに戻っていく。初期化時のカーネルの処理の流れは「アイドルプロセス」とか「collects」と呼ばれ、プロセッサが何もしていないときに実行される。
カーネル開発はプログラミングの中でも複雑で難しいタスクのひとつと考えられる。オペレーティングシステムの中核部であるということは、高い性能を要求される最重要なソフトウェアであり、正しく設計し実装することは難しい。カーネルはユーザプログラムの互換性や移植性を考慮する必要などから、設計が制限されることもあり、そのことがさらに開発を難しくしている。
カーネルの機能
カーネルの仕事はコンピュータのリソースを管理し、他のプログラムがそれらのリソースを使って動作できるようにすることである。コンピュータの最も基本となる部品は CPU または マイクロプロセッサ...






