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

[b-free: 1286] 中間コードの実行ファイル化 (Re: Memory Protection)




隆一です。

B-Free ML と program ML の両方に出しています。
Reply に注意。


From: Akira Katagiri <killy@rigy.co.jp>
Subject: [b-free: 1281] Re: Memory Protection
Date: Tue, 07 Apr 1998 00:27:54 +0900

> Hideaki Suzukiさん、こんにちは。リギーコーポレーションの片桐です。
> 

...[snip]...

> 割り込みですみません。ちょっと思い出したもので。
> 以前にMindをOS/2に乗せた時(インタプリタ方式にした時)から気になっている
> ことがあります。
> 既存のOSでは「コード」「データ」といった概念があり、これはCPUネイティブ
> なコード(?)を走らせることが前提になっていますね。
> 
> 一方でインタプリタを使う時には、「OSが言うところのコードではないの
> だが、性質としてはコード」・・いわゆる「中間コード」の概念が出て
> 来ます。
> これはOSの言うところのコードでないため、細かいところでいくつか制約
> が出ることがありました。
> OS/2の場合ですと、本来なら破棄・再ロードというメモリ属性にするとこ
> ろなのにスワップ対象になってしまい、もったいないと思いました。

メモリが足りなくなったときに、実行ファイルのコード領域についてはページ
アウトせずに、実行ファイルの内容を単に再利用するという機能ですね。

たしかに、中間コードについてもこういう風にできたらページアウト用の領域
を節約できるのは確かです。

これを中間コードに対しても行うようにするには、スクリプト処理系(要は中
間コードの VM) をページアウトしないようにメモリに常駐させるという方法
があります。読み取った中間コードは、スクリプト処理系のデータ領域に入る
ります。このデータ領域を制御することによって、通常の実行ファイルと同じ
ようなことができます。

たとえば、メモリが足りなくなった時にはデータ領域の中に入っている中間コー
ドを破棄して、再び必要となったときに、中間コードファイルを読み込むよう
にします。

# メモリが足りなくなったことをどうやって知るかが問題ですが、大抵の場合、
# メモリの使用量は OS から教えてもらうことができるはずです。

ただ、スクリプト処理系が仮想メモリ管理のようなことをするので、処理が複
雑になってしまうかもしれません。


> BTRONが勉強不足で分かっておらず申し訳ないのですが、もし似たような
> 事情だとしたら何か対応がされると良いのですがね。

BTRON の場合だと、BTRON3 (正確には SIGB で使っている BTRON3 互換 OS) 
だけが仮想メモリの機能としてディスクへのスワップ(ページアウト?)をして
いるはずです。

BTRON3 では、中間コードを使うようなプログラムはなかったと思うので、
その辺の対処は多分考えられていないでしょう。
(マイクロスクリプトはどうかな?)


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