[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1175] Re: Memory Protection
隆一です。
# 雑談モード
From: Takanori Hayashi <takanori@ohsaki.meidensha.co.jp>
Subject: [b-free: 1168] Re: Memory Protection
Date: Mon, 30 Mar 98 10:11:04 +0900
> 林です。
>
> In message <199803290730.QAA18821@a2.mbn.or.jp>
> "[b-free: 1165] Re: Memory Protection"
> "makotan@a2.mbn.or.jp" wrote:
> makotan> えーっと、Segmentation は Paging より Memory Protection によい。ってはな
> makotan> しなんですけど...どうでもいいと思います。
>
> 何というかAkiちゃんのいうsegmentationの用法がいまいち分からないですが
> 実装ベースでx86アーキテクチャのセグメントを使うのは絶対やめた方が良い
> です。理由は特にメリットがない上に他のアーキテクチャへの移植に難が出る
> からです。
>
...[snip]...
>
> makotan> セグメント方式はWin16で使われているものです。
> makotan> 一つのアドレス空間を複数プロセスで共有するものです。
>
> こちらは誤解があります。もともとsegmentationはセグメント/オフセットに
> よる二次元のアドレス空間を提供する機能です。8086でおかしなセグメントの
> 概念が作られて以来誤解されているようですけど。
そういえば、Macintosh にもセグメントの概念がありましたね。
こちらのサイズは 32K バイトでしたけど。
> 実際のところはsegmentationはページングや多重仮想空間より概念的には上位
> にあるもので、x86プロテクトモード(286以降)のようにハードウェアで実装の
> なされているものもありますけど、リニアアドレスのページングサポートだけ
> あれば十分に実装できます。現実問題としてx86のセグメンテーションは重い
> ので使わない方が良いでしょう。
> UNIXでもセグメントの概念は使われています。コードセグメント、データセグ
> メント、スタックセグメントという分類でですけど。それでコードセグメント
> はプロセス間で共有できるように書き込み禁止とかするわけです。最終的には
> セグメントをリニアアドレスに割り付けるわけですけど。
セグメントという技術の発祥は、Multics のようです。
Multics というと名前だけは聞いたことがあると思います。今だと、大きくと
思い OS というイメージ残っていない Multics ですが、中身を見ると、なか
なか(当時としては)最新の技術が投入されていたりします。
セグメント方式のメモリ管理の他に、TSS だったり、リング形式による保護な
ど。そういえば、ファイルシステムもツリー構造を採用していました。
Multics が実装されたマシンは、GE 社の 645 というマシンで、セグメント長
が 12 ビット、オフセット 18 ビットのマシンでした。18 ビットというと、
ほとんど 8086 と変わらないサイズですが、物理メモリが最大 256 K バイト
のマシンなので相対的にはそんなに小さくはなかったと思います。
開発の主体は MIT でしたが、MIT は世界ではじめての TSS 方式の OS を作っ
たところです。面白いことにこの世界で最初の TSS 方式の OS は、MIT の AI
Lab. が作っていました。人工知能の研究で、TSS のような対話性のある OS
が必要だったためのようです。もっとも、AI Lab. のハッカーたちにとっては、
CTSS は不評で、CTSS の対抗として ITS という OS を作ったりもしました。
(FSF の RMS は、この時代に AI Lab. にいました)
そのような経緯があったためか、Multics 上でも Lisp 言語(Mac Lisp)が最初
からついていたりします。
で、Multics のセグメントによる記憶管理に触発されて日本でも 5020 という
セグメント方式の OS が作られたようです。Multics は PL/I で書かれました
が、5020 の方は、PL/I コンパイラが動くまでプログラマが人間コンパイラを
やっていたそうです :-)
# 正確にいうと 5020 というのはマシンの名前ですが。。。
そういえば、マイコン用の OS である、CP/M も PL/M という PL/I のサブセッ
ト言語で書かれていましたね。
機能的に見ると、UNIX で実装された機能のほとんどは、Multics に載ってい
ました。シェルのようなコマンドラインインタプリタもありましたし、書き方
は違いますが入出力のリダイレクトもできたようです。
欠点は、Multics は大きく複雑だったことです。CPU の処理時間のうち 70%
ほどが OS の処理に費されていたそうです。
Multics は、結局汎用 OS としては失敗してしまったわけですが、それでも各
地で細々ながら使われていました。1995 年の段階で 6 つのサイトで稼働して
いたようです。ひょっとしたら、今もどこかのサイトで Multics が動いてい
るかもしれません。
# いかん、セグメントの説明になってない。。。
p----------------------------------------------------------------------q
| FROM R.Night |
| E-mail: |
| rnaitoh@st.rim.or.jp |
| Key fingerprint = 89 EB 77 95 40 C0 3C CC 37 A1 A7 FA 1C 66 FF D0 |
b----------------------------------------------------------------------d