[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2965] from OSASK BOARD



このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。


http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c482b8f_11e8d

From: 川合秀実
Message-ID: 3c482b8f_11e8d
Date: 2002/01/18 23:05
Subject: Re: ファイルの概念

[OSASK 2962]へのレスです。

>それは従来のインターフェイスとの互換性をライブラリが
>提供するかOSが提供するかの問題じゃないですか?

 ようするに、アプリケーションからみるとメモリとファイルのアクセスには違
いがあるが、より下のレベルではそうなっていないとおっしゃるわけですね。・
・・なるほど。

 じゃあ、それらのOSとOSASKの違いは些細なものです。その仕様(メモリマップ
トファイルなど)を素直にAPI仕様にしたかしなかったかです。それと、仮想記憶
管理とファイルキャッシュ制御が統合されているかどうかです(OSASKでは統合さ
れています・・・統合がより良い結果を生むかどうかは分かりませんが)。

>最近のOSはどれもページング(スワッピングではなくて)したり
>ファイルをキャッシュしたりしてますが、ファイルへのアクセスは
>メモリマップトで実装するのが素直だと思います。

 最近のOSではメモリマップトファイルが主流であるということは知りませんで
した。でも、それは僕の方針が間違っていないことのように思えるので、嬉しい
情報です。

>あとプログラムのテキスト領域のような変更されないコードは
>単純にメモリを開放されるだけでスワップアウトされませんが
>そのへんを間違えた記述もありませんでしたか?

 いえ、僕のいいたかったことはこれとは別のことです。

 まず変更されない部分についていちいち書き戻しを行わないというのは、それ
はそうでしょう。しかしOSASKはもっと過激(というか変則的)なのです。

 たとえばFD上のある実行ファイルを実行しているところを想定してください。
このコードがメモリに読み込まれて、その後にこのコードを含むページを追い出
さなければいけなくなった時に、普通のOSは間違いなくHD上のスワップファイル
への書き出しがあるでしょう。・・・そうでなければ必要になった時に再度FDか
ら読み込むことになりますが、そんな設定が可能なOSは聞いた事がありません。
しかしOSASKでは書き出さないこともありえます(FDは遅いデバイスなのでHD上へ
のキャッシュが設定されていて、普通なら結果的に書き出しはありますが・・・
ここでいう変な設定にしない限り)。

 もちろん普通のOSがこのコードを"再度"追い出す時には、書き戻しを行わない
というのは存じております。変化していないものを書き出すようなばかなOSは多
分ないでしょう。

 OSASKにスワップファイルが不要であるというのは、結局常に元のファイルか
ら読むからです。そしてこれでは遅くなる場合があるので、デバイスによっては
ファイルがHD上にキャッシュされるわけです。僕はこういう設計のOSを一つも知
らないのですが、もしかして似たようなアイデアのOSは既にあるのでしょうか?

>質問と回答のページに変な記述があったので疑問に思ってしまいました。

 ああ、そういえば、そういうことを書きました。2001.06.05のやつですね。・
・・確かに誤解を招きやすい書き方にはなっていますが、「モノリシック=モジ
ュール化されていないこと」という前提に立って書かれているわけではありませ
ん(分けて書いたつもりです)。そんなわけでこの記述を修正することはしません
が、しかし誤解を減らすために先のページへのリンクもあわせて示しておくこと
にします。

 ご指摘ありがとうございました。

>リング0ということはメモリ保護にはセグメンテーションを
>使ってるのでしょうか。

 そうです。僕はセグメンテーションによる速度低下はごくわずかだと考えまし
た。OSASKは積極的にセグメンテーションを使えます(アプリケーションの作成に
際しては、セグメンテーションを意識しないこともできます)。

 しかしセグメンテーションを積極的に使わないようなOSでも、IA-32上で走る
限り、カーネルはリング0で、アプリケーションはリング3で走るでしょう。そう
でないとシステムが猛烈に不安定になります。WindowsやLinuxもリング0とリン
グ3を使い分けていると聞いています。