メモリについて
以下の事は正確では有りません
通常メモリ というものは 番地が有って まあ最初〇から(1からかもしれな いが) 有るメモリまで 連続に ということのように 考えられます。
色々と 過去のものとの 互換性を優先する場合は そうも いかないようです。
最初のころは CPU の アドレスを決めるのは 20個 の もので有ったようで す。すなわち
2^20 1048576
ということで 1,048,576 個 の 番地まで を扱えたようです。
これを 特定するのに x86 CPUs というものは segment address と offset の 2個の値で 決めるようになっていたとのことです。16進数の 値で 最初の segment の値を 10h (16 倍する)倍し その残りの 部分に offset を 加える ということです 表示方法は segment:offset というように コロンで分けられた 2組の 16進数で表すということです。これは こういうことです
C8000h C000:8000 ----- > C0000+8000 C800:0000 ----- > C8000+0000
どちらでも 同じ ということです。まあ色々な経緯が有ったのでしょう。初 期の計算機のメモリは4個の部分で取り扱うようになっていたようです
最初の 640KB ; 00000h to 9FFFFh 通常の DOS の プログラム というか DOS 自身も ここに 存在するという 場所。
384 KB 上記の最初の部分の後の 部分 合わせると (the first megabyte) 1MB に なる部分; A0000h to FFFFFh
この部分は 特定の プログラム システムデバイス ドライバー等が置かれて いる場所
次の 1MB の 最初の 64KB から 16 Bytes 少ない部分 extended memory とい うものの 最初の部分 100000h to 10FFEFh
10FFEFh-100000h = FFEFh ---> 65519 65535-65519=16
この領域はリヤルモード というものでも アクセス出来る 領域であるという ことです。へて リヤルモード とは ということですがここでは少しおいといて
この部分はその後の部分を示すということで ものによっては この部分の方 が大きいばあいもある。10FFF0h から システムのメモリーの最後まで
10FFEFh+1h=10FFF0h
おおよそ以下のようになっているようです
Top of memory Extended Memory 1064KB 1MB + 64KB High Memory Area (HMA) 1000KB 1MB Upper Memory Area (UMA) 640KB Conventional Memory 0KB
ここでは リヤルモード と プロテクトモードというものに ついては 保留と なっています。
にゃんたろう 拝!
2008年 3月20日 (木) 21:42:12 JST