[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1195] Re: Memory Protection
林です。
In message <352069A1.D3E8B8A@bridgew.edu>
"[b-free: 1188] Re: Memory Protection"
"Hideaki Suzuki <h1suzuki@bridgew.edu>" wrote:
h1suzuki> 皆さんこんにちは。
h1suzuki> ホンとは、いま、宿題をしなきゃいけないのですが、息抜きという感じで、res します。
^_^
ほんとは仕事をしなきゃいけないのですが・・・(以下略) (^_^;)
h1suzuki> > なおB-Freeでも多重仮想空間は使用されています。メモリマネージャの仕様を
h1suzuki> > 見れば分かるようにアプリケーションのコード領域が固定アドレスに割り付け
h1suzuki> > られているでしょう。多重仮想空間を使わなければ、プロセス間でアドレスが
h1suzuki> > 衝突してしまいます。
h1suzuki>
h1suzuki> なるほど。これを、固定 address ではなくすると、segmentation になるのですよね。
h1suzuki> 一時期、data の空間領域が狭すぎるとかいう話もありましたが、segmentation だと、いい
加
h1suzuki> 減にできるわけです。たぶん、それが一つの segmentation の(protection 以外の)利点で
し
h1suzuki> ょうね。
コードのスタートアドレスはともかく他は実質的には可変じゃないかなあ。
B-Freeの実装を知らないんで何ともいえないけど。コード領域の管理をSMB
と同様に実装すれば実質的にはsegmentationなんですよね。
h1suzuki> > UNIXでもセグメントの概念は使われています。コードセグメント、データセグ
h1suzuki> > メント、スタックセグメントという分類でですけど。それでコードセグメント
h1suzuki> > はプロセス間で共有できるように書き込み禁止とかするわけです。最終的には
h1suzuki> > セグメントをリニアアドレスに割り付けるわけですけど。
h1suzuki>
h1suzuki> この割付は、動的な物でしょうか?
詳細は知らない。少なくともデータセグメントはかなり自由になると思う
けど。コードセグメントについても、共有ライブラリなんかでアドレスが
衝突しないためには適当なアドレスにロードしないといけないからOSでは
自由に変えられるようになってると思うけど。
h1suzuki> というわけで今までの話。
h1suzuki>
h1suzuki> Segmentation:
h1suzuki> 固定 address 空間より、大きさの面で融通が利く。(4Gbyte max on 386)
これは、アプリケーションのメモリマップを予めコードに4MB、データに
1GBなどと設定するより、プログラムを読み込む際にプログラムサイズの
コードセグメントを割り当てた方がサイズ面で自由度が高くなるという
ことで良いかな。確かにその通りだけど実装コストとの兼合いもあるから
固定が悪いとは一概には言えないですね。
h1suzuki> 386 の Segmentation は、重いらしい。^^;
セグメントのロードに時間が掛かるそうなので。実際にどのくらい速いか
遅いかは細かく調べないと分からないけど、セグメントを使うことで実装
の手間を掛ける価値があるほど高速化するとは期待できないでしょうね。
# ハードウェアでやってもソフトウェアでやっても権限情報などをロード
# してチェックしなければならないのは同じで、386のセグメントセレクタ
# は286との互換性の兼合いで複雑なんで速度は期待できないでしょう。
# ソフトウェアで扱い易いデータ構造を作って使う方が速そうです。
h1suzuki> Memory block に対して、access 制御などを行う場合には必須の概念。
h1suzuki> (注:access 制御には tag とか色々方法がありますが、まあ妥当でしょう)
ただしセグメントというかどうかは別の話。メモリブロック自体に属性を
付けて扱えば良いわけだし。
h1suzuki> 多重仮想空間 with paging:
h1suzuki> 移植性がよい。
h1suzuki> Segmentation を実現するための下地になりえる。
...何とコメントするべきか
--
Takanori Hayashi
takanori@ohsaki.meidensha.co.jp