質問: OSの本を読んでいると、プロセス、ファイルシステムなどたくさんの機能がありますが、どれもこれもシステムコールをトリガーとして呼び出されるプログラムですよね。 特別な場合があるとすれば、 ・システムの起動時(ブートストラップ) ・カーネルスレッド でしょうか・・・ カーネルスレッドがよくわからないのですが、デーモンのようにシステム常駐して動いてるプログラムのことかな・・・と思いますが・・・ 以前は、アセンブリ言語レベルの命令の処理をするのに毎回OSの機能を呼び出しているものだと思っていましたが、どうも違うようですね。 プロセッサの違いを吸収しているのは、C言語からしてみるとコンパイラによるものと思います。 ハードウェア(周辺機器)はデバイスドライバ(OSの機能。システムコールによって起動する) (CPUやメモリ用のデバイスドライバというものがあるのか分からないのですが、メインメモリなどもOSの制御下なんですかね) ハードウェアの差分を吸収するものなら、BIOSもありますよね? 最近、開発中のエクソカーネルとかなら、カーネルを作らないで、CPUの機能としてハードウェアで埋め込んでしまえば多少CPUのサイズが大きくなってもできるのではないでしょうか? ハードウェアだけで分岐予測とかもできるようですので・・・ 将来はその役割をBIOSとプロセッサのハードに分ければ、カーネルがなくなるかもしれないですね。 (正直、ここからはOSの役割、ここからはプロセッサの役割、ここからはBIOSという境界が見えません。) えーーと。 つまり、OSの機能は・・・ 割り込みや例外を処理するためのプログラムの集合体と考えて良いのでしょうか? その役割は・・・「**ハードウェアの差分を吸収するため**」ということですかね? ハードウェアの差分を吸収するのは、割り込みや例外のためのプログラム群というのも、なーーーんかピンと来ないんですよね・・・ 間違いがあったらご指摘ください。 「追記」 カーネルスレッドとは initはプロセスだと思っていたのですが、カーネルスレッドに分類されるようですね!!
回答: 視点により回答が異なりそうではありますが、 > > つまり、OSの機能は・・・ > > 割り込みや例外を処理するためのプログラムの集合体と考えて良いのでしょうか? > > > そんな感じでいいです。 入出力、同時並行処理などを管理する基本プログラムです。 > > その役割は・・・「ハードウェアの差分を吸収するため」ということですかね? > > ハードウェアの差分を吸収するのは、割り込みや例外のためのプログラム群というのも、なーーーんかピンと来ないんですよね・・・ > > > ハードウェアの差分を吸収することが目的ではなく、ユーザーやアプリケーション・プログラムとハードウェアの中間にあるのがOSです。 差分を吸収する事が結果として含まれているものとしては各社の提供している言語処理系のAPIではないでしょうか。