up

メモリその1

    メモリについて

     以下の事は正確では有りません

通常メモリ というものは 番地が有って まあ最初〇から(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個の部分で取り扱うようになっていたようです

Conventional Memory

最初の 640KB ; 00000h to 9FFFFh 通常の DOS の プログラム というか DOS 自身も ここに 存在するという 場所。

Upper Memory Area (UMA)

384 KB 上記の最初の部分の後の 部分 合わせると (the first megabyte) 1MB に なる部分; A0000h to FFFFFh

この部分は 特定の プログラム システムデバイス ドライバー等が置かれて いる場所

High Memory Area (HMA)

次の 1MB の 最初の 64KB から 16 Bytes 少ない部分 extended memory とい うものの 最初の部分 100000h to 10FFEFh

10FFEFh-100000h = FFEFh ---> 65519
                         65535-65519=16

この領域はリヤルモード というものでも アクセス出来る 領域であるという ことです。へて リヤルモード とは ということですがここでは少しおいといて

Extended Memory

この部分はその後の部分を示すということで ものによっては この部分の方 が大きいばあいもある。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


up

Copyright © 2006.-2008. nyantarou All Rights Reserved.