メモリ管理について DOSからブロック単位でメモリを取得し、そのブロック内でメモリ割り当てを 行う。このブロックをゾーンと呼び、ゾーンの大きさはEMSのページサイズに合わ せて16k bytes とする。 ゾーン内の割り当て単位はセグメント単位で、各メモリブロックの直前16bytes に 管理情報として次のメモリブロックと前のメモリブロックのアドレス、 メモリブロックの型などを格納する。したがって、メモリブロックは双方向 リストを構成する。 管理情報部構造 _Memlist_t struc _lastmem dw ? _nextmem dw ? _size dw ? _type dw ? db 8 dup (?) ; adjustment _Memlist_t ends またハンドルを使ったメモリブロックへのアクセスを高速におこなえるようにする ため、ゾーンの先頭にはメモリ管理領域へのポインタのテーブルを置いている。 このテーブルは256個分あり、各ゾーンは256個のハンドルをもつ。 ハンドルテーブルにおけるアドレス表現は現在セグメントアドレスである。 ハンドルの下位8ビットからこのテーブルを参照し直接管理ブロックのあどれすが えられる。 ゾーンの構造 _Heap_t struc _HandleTable dw 100h dup(?) _Heap db 4000h-200h dup(?) _Heap_t ends