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

[b-free: 1165] Re: Memory Protection



みなさん深い話ではお久しぶりです。

えーっと、Segmentation は Paging より Memory Protection によい。ってはな
しなんですけど...どうでもいいと思います。

多重アドレス空間というのはプロセスごとに全く異なるアドレス空間が割り当て
られるものです。Win32や32ビット系のUNIXで使われているものです。

セグメント方式はWin16で使われているものです。
一つのアドレス空間を複数プロセスで共有するものです。

セグメント方式は一つのプロセスの影響が他に波及する可能性があるということ
からわりと嫌われています。
特に86000系CPUからは馬鹿にされてましたね>x86系

> flat model と、segment model では、どちらが、どのような利点があるのでしょうか?想像す

知ってることだけ書きます。
8086というCPUは言わずとしれた16ビットCPUですね。
この16ビットで表すことのできる最大の数値=64Kです。
本来、16ビットコンピュータのアドレス空間は64Kだったわけです。
しかし、多くのコンピュータに搭載されていたメモリーは1M(ROM含む)です
このトリックを実現するのがセグメント方式です。(CPU搭載の)
これにはアドレス空間を示すために2つのレジスタを使うことで実現しますが、
ここでの重要な問題は1つのレジスタの量を超えることはできない。
これが昔からDOS/Win16プログラマの悩みの種だった64Kの壁です。
OSから見たセグメント方式はこの2つのレジスタを上手に使って複数のプロセス
を動かすものです。(アドレス空間は一つ)

で、Win32が登場してからはこの64Kの壁が無くなったのですが...
最近では2Gでも足りないらしく...ついに64ビットアドレス空間が登場し
そうです...もちろんインテルからも...

OSの話のセグメント方式は...プログラムの各ブロック単位でディスクから読
み書きするので...32ビットのアドレス空間だと関係ないような気がします。

関係あるとすれば...2G単位のセグメント方式...ギャグでは聞いたこと
あるけど...

メモリー空間の共有は...Win32だとメモリマップドファイルですね
EXEなどで使われているようです。

まこたん

まだprogram ML参加してない...