このメールは、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の数のみ現われるといっていいでしょう。メモリに対するファ クションがなくなるわけです。 この辺の事情を考えると、「透過」よりは「レス」のほうがイメージに近いよ うな気がしています。