[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 1159] Re: Memory Protection



お久しぶり。林です。

In message <351B109D.CA7A79B@bridgew.edu>
   "[b-free: 1158] Memory Protection"
   "Hideaki Suzuki <h1suzuki@bridgew.edu>" wrote:

h1suzuki> 今週の僕の Computer の授業では、普通の OS の Security Protection につい
h1suzuki> て話していました。
h1suzuki> で、そのなかで(まあ教科書に書いてあったのですが)、
h1suzuki> 
h1suzuki> 「Segmentation は Paging より Memory Protection によい。」
h1suzuki> 
h1suzuki> ということがありました。
h1suzuki> なぜ Seg. のほうが Pag. よりも良いかというのは、要するに、一つの共有
h1suzuki> memory(SMB) への access を考えた場合に、 program の種類により access
h1suzuki> privilege を変えられるからと云う話でした。
h1suzuki> たとえば、shared memory block M にたいして、program A は読み書きできる権
h1suzuki> 利を持つ segment Sa を通して操作し、program B は読み込みだけしかできない
h1suzuki> segment Sb を通じて操作すると云った場合です。

チップレベルで見ればpagingでも多重仮想空間を使えば同様のことはできますね。
ここでいうsegmentationはx86の機能じゃなくてOS上の概念だろうからソフトウェア
でsegmentationを実装するということかも知れないけど。

h1suzuki> x86 arch. のために、B-free は Paging による仮想記憶と Segmentation によ
h1suzuki> る code protection と同時にやっていると思うのですが、もし、SMB の access
h1suzuki> right を変更できたら面白いかもしれませんね。たぶん有用な、実現例としては
h1suzuki> SMB を獲得時に、獲得した process しか書き込めない(共有する process は読
h1suzuki> み込みのみ)とか、 SMB の属性を読み書き許可から読み込みのみ許可に切り替
h1suzuki> えるとかかな。より制限された権利で、segment を dup して、他の process に
h1suzuki> 渡すという使い方も出来るかも。

B-Freeの実装はきちんと見てないけどx86のセグメントは使ってないと思うな。厳密
にいうと使わないことはできないから、全部のセグメントをゼロベースで固定して
いるということだけど。フラット(32bit near)モデルという奴ね。
でも多重仮想空間は使っているから(コードのアドレスとか固定にするのに)上記の
ようなことはそのまま実現しているはずです。

h1suzuki> どちらにしても、まあ、特権命令を使うでしょうから中心核に入る必要があるで
h1suzuki> しょうし、需要が多くないと、あんまり実現しない機能ではある気がするけど
h1suzuki> 、、、。(笑)

需要が多いかどうかは知らないけれど共有メモリでは当たり前の機能だと思うな。
見るプロセスによってアドレスが違ったりアクセス権が違ったりするのは。
# アドレスは特に指定しない限り違う可能性があるのが普通です。

h1suzuki> 追伸:
h1suzuki>  ちなみに、記憶空間に正負の signed integer を
h1suzuki>  使うという話は書かれていなかった。
h1suzuki>  あんまり一般的ではないのかなぁ?<坂村教授の発案?

これは他では見ないですね。普通はアドレス空間は符号無しです。特許かも。


--
Takanori Hayashi
takanori@ohsaki.meidensha.co.jp