OSの仕事ってなんだ? [1]
- これは当初「川合のぼやき」に書こうかどうか迷った内容のものを書くことにしたわけだけど、ここは僕のホームページではなくOsaskWikiなので他の誰が書いてもいいものだと思う。
- ただこのシリーズの趣旨としては、OSASKの設計に関する話を書いているので、他の人が書く場合もそれには準じてほしい。で、僕以外の人がOSASKの設計に関する話を書くなんてことはまずないと思うかもしれないけど、そんなことはなくて、たとえばこういう考え方のもとでこうしたらどうかという提案はできる。
- 基本的に一つの話題に1ページ使ってしまうので、ちょっとした提案であれば、OSASK-MLやimpressions[4]を活用してもらうほうがいいと思う。
- たとえばQEMUやVMwareなどのエミュレータを使い、Windows上でLinuxを使っている人は結構いると思う。逆にLinux上でWindowsを使う人もいるかもしれない。Xenでおなじことをやってもいい。
- こういう状況だと、仮想マシン上で動いているOSは一体どういう「仕事」をしているといえるだろう。それはアプリケーションを実行することだ。つまり、Windows上でLinuxのツールやアプリを使いたいから、エミュレータを使ってLinuxを動かしているわけだ。
- かつてはOSの仕事は分かりやすかった。コンピュータが行う処理のうち、アプリケーションが担う上層の機能以外の全てが、OSの仕事だった。OSはその範囲の処理の全てに責任を持っていた。そしてそれらをシェル・カーネル・ドライバなどのモジュールに分割して、これ全体をOSと呼んでいた。
- しかし仮想マシン上で動くOSにあっては、実ハードウェアの制御はエミュレータとバックで動いているホストOSの仕事だから、結局APIの提供くらいしか仕事がない。
- また、今ではXen専用の、つまりXenがなければ動かないようなOSも少しは存在し、これも「OS」であると一般に理解されているらしい。確かに僕もこれをOSと呼ぶことに違和感を感じない。このタイプのOSは、煩雑なデバイスドライバ開発から開放されていて、それは現代にあっては悪くない設計方針だと僕も思う。
- ここまでを分かった上で、efg01について考えてみよう。これはまさにAPIのみを.g01アプリに対して提供している。機能的にはエミュレータとOSASK-HBを足したものがefg01に相当するといっていい。
- しかし先の仮想マシン専用のOSもOSと呼んでいいのなら、このefg01がOSといえない理由はあるのだろうか。つまりAPIを提供する能力があればそれはOSといっていいのか?
- うーん、なんかそれは言い過ぎと言うか、efg01を持ち上げすぎのような気がする反面、しかし有効な反論を思いつけない。むむむむう。
- 仮想マシンの上で動けばアリでしょう。Xenの上に乗せるんですか? -- 名無しさん[8]
- 何を持って仮想マシンと言うのでしょうか?それが分かりません。仮にefg01がXenのAPIを使って入出力するようになったら確かにOSっぽいです。BIOSを使って入出力するのもOSっぽいです。ではなぜ、POSIXやwin32を使って入出力したら、OSではなくなるのでしょうか?今までは入出力プロトコルの種類によらず、最下層レイヤ付近にいるものこそがOSでした。それは分かりやすい定義でした。しかし今では仮想マシンの上にいても、いやそれどころか仮想マシンがなければ満足に動かないようなものでもOSと言えるようになったので、定義があいまいになった気がするんです。 -- K[2]
- POSIX上でWindows APIを提供するWineはa translation layerと定義されています。それと似たようなものだと考えます。定義があいまいになったというのは同意します。 -- 名無しさん[8]
Last-modified: 2009-11-21 (土) 00:00:00 (JST) (319d) by k-tan
Links list
(This host) = http://osask.net
- (This host)/modules/osaskwiki/119.html#fae049df
- (This host)/modules/osaskwiki/144.html
- (This host)/modules/osaskwiki/119.html#l21c6033
- (This host)/modules/osaskwiki/354.html
- (This host)/modules/osaskwiki/119.html#ef96efd1
- (This host)/modules/osaskwiki/119.html#yffab92f
- (This host)/modules/osaskwiki/119.html#z396048c
- (This host)/modules/osaskwiki/223.html