いきなりですが、Linuxカーネルとは何でしょうか。ここは中級者向けの内容を記載するページですが、意識してこなかった方もおられることでしょう。カーネル(Kernel)とは「核」を意味します。つまりLinuxディストリビューションの核。これがあるからディストリビューションはLinuxを名乗れますし、OSとしてのLinuxが存在するわけです。このページではカーネルの仕組みとモジュールについて解説します。
Linuxカーネルには様々な機能が含まれています。
- メモリ管理
- CPUスケジューリング(プロセススケジューリング)
- ファイルシステム
- ビルトインデバイスドライバ etc...
デバイス…何でも構いませんのでイメージしてみてください。プリンタ、デジカメ、マウス、タブレット、キーボード。はたまたハードディスクコントローラやネットワークカードなんていうものもあります。そしてそれをPCに接続すると、昔はそのままでは使えませんでした。理由は単純で、「OS側がデバイスをどのようにコントロールすれば良いのかわからない」からです。当然OSがわからないとなると、その上で動作するソフトウェアにだってわかるはずもありません。つまり、「プリンタを接続してもOSから認識できず、メモ帳からも印刷できない」のは全くもって普通の話なのです。
で、こうなるとデバイスのコントロール方法をソフトウェアが把握していなければならなくなってしまうわけです。これは盛大な無駄であり、ソフトウェアごとにコントロールの仕組みを備えていては開発に時間もかかりますし、ソフトウェアそのもののサイズも大きくなってしまいます。
そこでデバイスドライバというものが登場します。その働きは、「ソフトウェアの代わりにOSがデバイスのコントロールを代行する」ことにあります。メモ帳で「印刷」メニューを表示させた場合と、Chromeなどで「印刷」メニューを表示させた場合に画面がほぼ共通しているのはこれが理由です。そのような、デバイスをコントロールしなければならないユーザ命令についてはOSに丸投げする。ソフトウェア側はOSに「これやっといて」とざっくり依頼する程度なイメージになる。これが抽象化を意味します。
で、こうなるとデバイスのコントロール方法をソフトウェアが把握していなければならなくなってしまうわけです。これは盛大な無駄であり、ソフトウェアごとにコントロールの仕組みを備えていては開発に時間もかかりますし、ソフトウェアそのもののサイズも大きくなってしまいます。
そこでデバイスドライバというものが登場します。その働きは、「ソフトウェアの代わりにOSがデバイスのコントロールを代行する」ことにあります。メモ帳で「印刷」メニューを表示させた場合と、Chromeなどで「印刷」メニューを表示させた場合に画面がほぼ共通しているのはこれが理由です。そのような、デバイスをコントロールしなければならないユーザ命令についてはOSに丸投げする。ソフトウェア側はOSに「これやっといて」とざっくり依頼する程度なイメージになる。これが抽象化を意味します。
コメントをかく