Linuxとは
カーネル
そもそもLinuxとはなんだということですが、ずばりそれはカーネルのこと見たいです。
カーネルが何をしているのか、それはユーザーの命令をハードウェアに伝えることです。
つまりユーザーとハードウェアの仲介役です。
大雑把にカーネルとは
アプリケーションがハードウェアを動かす手助けをする。
OSがハードウェアを動かすのに必要な処理を全て抽象化してくれているのでアプリケーションの製作者や利用者がハードウェアの細かい使い方を知る必要がない。
例えばアプリケーションはこのファイルを取ってこいとOSに命令するだけです。
アプリケーションはそのファイルや場所や大きさや所有者を知る必要はありません。
OSが勝手にそれを調べて検査してくれます。
もしファイルが存在しなかったり利用する権利がない場合はそれを通知してくれます。
ハードウェアとは
ハードウェアとはCPUやメモリ、HDDなどのストレージ、ディスプレイやキーボードなどです。
つまりコンピューターの実体です。
ただ、アプリケーションの命令通りに実行するだけでは危険な操作によってプログラムなどを破壊してしまうかもしれません。
そのためカーネルはアプリケーションから受け付けた入力をチェックし危険な操作があればそれをユーザーに伝えるといった機能も実装されています。
大雑把にデバイスドライバーとは
デバイスと一言で言ってもいろんなものがあります。
そして同じデバイスでも色んな会社が開発しているので色んなモデルがあります。
もちろん統合された規格はありますが、各社色んなアイディアを盛り込むので細部が違ってきます。
Linuxは様々なデバイスを操作しますが、同じ種類のデバイスの微妙な違いを吸収しなければなりません。
あるデバイスでは出力できてもあるデバイスでは出力できないということがあり得ます。
そうなってくるとユーザーがカーネルに命令した処理がデバイス側で拒否されてユーザーが入力してもうんともすんとも言わないということが発生してしまいます。
これではコンピューターは機能を果たすことが出来ません。
カーネルはデバイスに合わせてプログラムを切り替えて対応しています。
ただ、デバイスは常に新しいものが出てきてモデルが更新されていくのでその度にカーネルを更新していくのは効率的ではありません。
じゃあどうするか。カーネルのデバイスを操作する部分だけをカーネルから切り離してしまいます。
こうすることで新たなデバイスに合わせて切り離した部品だけを更新するだけでよくなります。
それらはデバイスドライバーと呼ばれています。
ユーザーから受け付けた命令をカーネルはデバイスドライバーに伝えます。
そしてデバイスドライバーはデバイスが理解できる内容にカーネルからの命令を変換しデバイスに伝えます。
デバイスからの出力はその逆に進んでいきます。
Linuxはこうすることで新たな技術や概念に対して個別の部品の改造だけで対応できるような設計にしています。
続きはまた時間がある時に。
コメント