Overview of Operating Systems and Kernels
- 商用オペレーティングシステムの、成長し続ける機能セットと、病的なデザインにより、オペレーティングシステムの概念は一般的なものではなくなっている。
なんか、Windowsがdisられてますね。そのあと、オペレーティングシステムの定義が述べられています。
- 技術的には、この本では、オペレーティングシステムとは、コンピュータの基本的な使用と管理に責任があるシステムの一部であると考えられる。
OSの定義が述べられています。
* これは、カーネル、デバイスドライバ、ブートローダー、コマンドシェルと他のインターフェース、基本的なファイルシステムと、システムユーティリティを含む
デバイスドライバもOSに含むようです。つまり、コンピュータの基本的な使用と管理に必要なソフトウェアは全て含むようです。
- もちろん、この本のトピックはカーネルである。
忘れてはいけません。この本の主題はカーネルです。
- ユーザーインターフェースはもっとも外部のOSの部分、カーネルはもっとも内部のOSの部分である。
CPUはハードウェアの中ではもっとも内部にあると思いますが、ソフトウェアでもっとも内部はカーネルなんですね。もっともハードウェアに近い部分と言え、もっとも技術的な部分とも言えるかもしれません。
- システムの他の部分に基本的なサービスを提供し、ハードウェアを管理し、システムの資源を配布しているのがもっとも内部にあるコアだ。
Linuxカーネルのこと言ってますね。コアとも言うんですね。
以下は、注目すべきステートメントのようです。
- 典型的には、カーネルのコンポーネントは、割り込み要求を制御する割り込みハンドラ、複数のプロセッサのプロセッサタイムをシェアするスケジューラ、アドレススペースを制御するメモリマネジメントシステム、ネットワークと、プロセス間通信のようなシステムサービスから構成される。
個人的には、「割り込み要求」ってあんまり理解できてないんですよね。と言うか、どれもはっきりとは理解できてないので、これからこの本で勉強していこうかと思います。
- 守られたメモリマネジメントユニットでは、カーネルは、普通のユーザーアプリケーションより、より高度なシステム状態を保つ。
このステートメントこれだけ見ると何言っているのかわからないですが、普通のユーザーアプリケーションは、C言語のアプリケーションでもない限り、メモリやハードウェアに直接アクセスすることはないです。なので、比較的野良で転がっていたアプリケーションを拾ってきて、実行させることができます。しかし、信用できないカーネルを拾ってきて、あるいは、信頼できない人がコンパイルしたカーネルを実行させることは、極めて危険な行為です。なぜなら、メモリ空間およびハードウェアに自由にアクセスできるからです。
なので、Linuxのディストリビューションは信頼できるところから持ってくる必要があります。
そう言う意味では、リーナスさんや他のLinuxカーネル開発者のセキュリティ上での責任って結構重大に思えるんですよね。
- カーネルのシステム状態やメモリースペースは総称して、カーネルスペースと呼ばれる
逆に言えば、ユーザーアプリケーションはユーザースペースの中で実行される。
カーネルのコードは、カーネルスペースで実行されます。それは、ハードウェアやメモリにフルでアクセスできます。それに対し、ユーザーアプリケーションのコードはユーザースペースで実行されます。システム上のアプリケーションはカーネルと、システムコールを経由して交信します。
システムコール出ましたね。システムコールって正直なんのことかよく分かっていないです。アプリを作っていて、「システムコール」ってのを使った覚えがあんまりないので、開発環境に隠蔽されているんだろうなとは思います。アプリケーションは典型的には、ライブラリの中の関数を呼びます。例えば、Cのライブラリを。それは翻って、システムコールインターフェースに依存して、カーネルにアプリケーションを代表してタスクをカーネルに教えることになります。
ライブラリの中の関数を呼ぶことになるので、それがシステムコールだと言いたいんですかね。それが、アプリケーションがカーネルにタスクを教える方法だと。
では、そろそろ疲れてきたので、次回