Linux入門 その1 そもそもLinuxとは

Linux

Linuxとは

カーネル

そもそもLinuxとはなんだということですが、ずばりそれはカーネルのこと見たいです。
カーネルが何をしているのか、それはユーザーの命令をハードウェアに伝えることです。
つまりユーザーとハードウェアの仲介役です。

大雑把にカーネルとは

アプリケーションがハードウェアを動かす手助けをする。
OSがハードウェアを動かすのに必要な処理を全て抽象化してくれているのでアプリケーションの製作者や利用者がハードウェアの細かい使い方を知る必要がない。
例えばアプリケーションはこのファイルを取ってこいとOSに命令するだけです。
アプリケーションはそのファイルや場所や大きさや所有者を知る必要はありません。
OSが勝手にそれを調べて検査してくれます。
もしファイルが存在しなかったり利用する権利がない場合はそれを通知してくれます。

ハードウェアとは

ハードウェアとはCPUやメモリ、HDDなどのストレージ、ディスプレイやキーボードなどです。
つまりコンピューターの実体です。
ただ、アプリケーションの命令通りに実行するだけでは危険な操作によってプログラムなどを破壊してしまうかもしれません。
そのためカーネルはアプリケーションから受け付けた入力をチェックし危険な操作があればそれをユーザーに伝えるといった機能も実装されています。

大雑把にデバイスドライバーとは

デバイスと一言で言ってもいろんなものがあります。
そして同じデバイスでも色んな会社が開発しているので色んなモデルがあります。
もちろん統合された規格はありますが、各社色んなアイディアを盛り込むので細部が違ってきます。

Linuxは様々なデバイスを操作しますが、同じ種類のデバイスの微妙な違いを吸収しなければなりません。
あるデバイスでは出力できてもあるデバイスでは出力できないということがあり得ます。
そうなってくるとユーザーがカーネルに命令した処理がデバイス側で拒否されてユーザーが入力してもうんともすんとも言わないということが発生してしまいます。
これではコンピューターは機能を果たすことが出来ません。

カーネルはデバイスに合わせてプログラムを切り替えて対応しています。
ただ、デバイスは常に新しいものが出てきてモデルが更新されていくのでその度にカーネルを更新していくのは効率的ではありません。

じゃあどうするか。カーネルのデバイスを操作する部分だけをカーネルから切り離してしまいます。
こうすることで新たなデバイスに合わせて切り離した部品だけを更新するだけでよくなります。
それらはデバイスドライバーと呼ばれています。
ユーザーから受け付けた命令をカーネルはデバイスドライバーに伝えます。
そしてデバイスドライバーはデバイスが理解できる内容にカーネルからの命令を変換しデバイスに伝えます。
デバイスからの出力はその逆に進んでいきます。

Linuxはこうすることで新たな技術や概念に対して個別の部品の改造だけで対応できるような設計にしています。

続きはまた時間がある時に。


UNIXという考え方―その設計思想と哲学


ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道


詳解 Linuxカーネル 第3版


Linuxカーネル2.6解読室

プログラミングおすすめ書籍

おすすめ書籍

なぜプログラムが動くのか。
平易な言葉で学べますが、初心者には難しいかもしれません。
でも読み終わった頃にはなんとなく理解しているでしょう。
初心者には家にあって損はありません。

UNIXの思想を学べます。
高尚なタイトルですが、コードはおろか難しい言葉も殆どありません。取っ掛かりに最適でその後のプログラミングに対する理解を一変させます。
なぜならこの思想はプログラミングそのものだからです。
一読の価値ありで、これは良書なので今後紹介したいと思っています。

まだまだありますがまたの機会に紹介したいと思います。

Linux コンピューター プログラミング
スポンサーリンク
himazinをフォローする
私の頭の上の消しゴム

コメント

タイトルとURLをコピーしました