ここまで勉強してきて、思ったことがあります。
#OSってシステムコール(ソフトウェア割り込み)、ハードウェア割り込み、例外が発生した時に呼び出されるサブルーチンの集合体ですよね??
OSの本を読んでいると、プロセス、ファイルシステムなどたくさんの機能がありますが、どれもこれもシステムコールをトリガーとして呼び出されるプログラムですよね。
特別な場合があるとすれば、
・システムの起動時(ブートストラップ)
・カーネルスレッド
でしょうか・・・
カーネルスレッドがよくわからないのですが、デーモンのようにシステム常駐して動いてるプログラムのことかな・・・と思いますが・・・
以前は、アセンブリ言語レベルの命令の処理をするのに毎回OSの機能を呼び出しているものだと思っていましたが、どうも違うようですね。
プロセッサの違いを吸収しているのは、C言語からしてみるとコンパイラによるものと思います。
ハードウェア(周辺機器)はデバイスドライバ(OSの機能。システムコールによって起動する)
(CPUやメモリ用のデバイスドライバというものがあるのか分からないのですが、メインメモリなどもOSの制御下なんですかね)
ハードウェアの差分を吸収するものなら、BIOSもありますよね?
最近、開発中のエクソカーネルとかなら、カーネルを作らないで、CPUの機能としてハードウェアで埋め込んでしまえば多少CPUのサイズが大きくなってもできるのではないでしょうか?
ハードウェアだけで分岐予測とかもできるようですので・・・
将来はその役割をBIOSとプロセッサのハードに分ければ、カーネルがなくなるかもしれないですね。
(正直、ここからはOSの役割、ここからはプロセッサの役割、ここからはBIOSという境界が見えません。)
えーーと。
つまり、OSの機能は・・・
割り込みや例外を処理するためのプログラムの集合体と考えて良いのでしょうか?
その役割は・・・「ハードウェアの差分を吸収するため」ということですかね?
ハードウェアの差分を吸収するのは、割り込みや例外のためのプログラム群というのも、なーーーんかピンと来ないんですよね・・・
間違いがあったらご指摘ください。
「追記」
カーネルスレッドとは
initはプロセスだと思っていたのですが、カーネルスレッドに分類されるようですね!!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/02 12:10
2017/07/02 12:16
2017/07/02 12:22
2017/07/03 09:46
2017/07/04 00:57
2017/07/04 01:17
2017/07/04 03:29
2020/01/29 22:51
2020/01/29 23:51 編集
2020/01/30 00:39
2020/01/30 01:09
2020/01/30 02:41