[OSASK 6189] BOARD: Re: メモリレスアーキテクチャ

このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい
http://www.imasy.org/~mone/osask/index.cgi?REFER=3ed02bbe_54df

2003/05/25 11:34
川合秀実

[OSASK 6188]へのレスです。

>現行の一般的なOSではメモリ、ファイルといった2つのレベルの
>記憶階層があり、メモリレスアーキテクチャではメモリの記
>憶階層が透過になり、開発者はファイルシステムのみ意識すれば
>よいということになります。このような構成法を一般的には
>単一レベル記憶といいます。特に一般的な呼称にする必要な
>ど無いかと思うのですが、どうもメモリレスアーキテクチャ
>という名前は分かりにくいのではないかと思います。カーネ
>ルの説明に使う言葉としては「メモリレス」ではなく「メモ
>リ透過」が適切かと個人的に思います。

  「単一レベル記憶」という語がどれほど一般的なのかを調べてみましたが、僕
が検索した範囲では、IBMのAS/400の記憶管理アーキテクチャを直接指している
ようでした。そしてAS/400における「単一レベル記憶」を調べれば調べるほど、
これは単にAS/400におけるメモリマップトアクセスの実装名なのではないかと思
えてきます。

  僕の提唱しているメモリレスアーキテクチャでは、メモリ空間というものは、
全てI/Oアクセスのためのウィンドウでしかないと考えます。CPUのメモリアクセ
ス命令の実行は、ファイルをアクセスする手段であって、いわゆる仮想記憶をア
クセスすることではないわけです。

  AS/400では単一のスワップファイルが存在しないのでしょうか?メモリレスア
ーキテクチャが単一レベル記憶と同義であるかどうかは、第一にそこにかかって
いると思います。メモリレスアーキテクチャでは、メモリ空間上にあるアクセス
可能な領域は全てファイルアクセス用のウィンドウであり、どんなにくだらない
領域であってもそれは何らかのファイルの一部なのです(しかもスワップファイ
ルという特別なファイルではなく)。そしてそれぞれのファイルには当然何らか
のパスがあり、名前が与えられています。そしてAPI上でもファイルアクセス用
のファンクションだけがあり、仮想記憶用のファンクションはありません。

  「メモリ透過」についてはなるほどと思いました。「透過」と言えば、実際は
あるんだけど見えないというニュアンスが伝わります。実際OSASKといえどもメ
モリを使っていないわけではないので、この方が正しいといえるかもしれません
。

  しかし一方、メモリレスアーキテクチャにあっては、メモリというのはなんら
かの実体ではなくもはや手段でしかありません。つまり概念として存在している
のは「メモリアクセス」というアクセス方法だけであって、メモリはもうないの
です。きっと多くの人は「ファイルバッファにアクセスしているんだ」くらいに
考えているんだと思いますが、そういう考えは棄ててください。C言語でa = 10;
などの命令を実行することは、もちろん変数に10を代入することですが、これは
特定のメモリの内容を書き換える命令では「ない」のです。ファイルの一部を書
き換えているのです。while (*s++ = *t++);というのもメモリを転送しているの
ではなく、ファイルを転送しているのです(同一ファイル内のコピーなのかファ
イルをまたがるコピーなのかは知りませんが)。ポインタはメモリのどこかを指
しているのではなくファイルのどこかを指しているんです。CPUはメモリを読ん
で命令を実行しているのではなく、ファイルを読んで実行しているのです。

  一般的なOSでももちろん仮想記憶は結局スワップファイルの一部であって、だ
から実質的にはOSASKでの動作と一般的なOSの動作は大差ないともいえます。違
いは「メモリというものがあるんだけどね、実は内部でファイルに変換されてい
るんだ」と「メモリはないから、ファイルでやってくれ」の違いです。そしてこ
の違いは結局APIの数のみ現われるといっていいでしょう。メモリに対するファ
クションがなくなるわけです。

  この辺の事情を考えると、「透過」よりは「レス」のほうがイメージに近いよ
うな気がしています。



ML番号でジャンプ
ML単語検索