Structure of the DOS Arena

The DOS arena is the range of linear addresses from MINDOSLADDR through MAXDOSLADDR, and is used for virtual machines (VMs). The DOS arena is divided into several areas, parallelling the organization of memory under MS-DOS in real mode. The following illustration shows the structure of the DOS arena: The V86 global area is used for MS-DOS system code, device drivers, and TSRs. Pages in the global area are mapped such that linear and physical addresses are identical. Data in the global area that is not shared by all VMs must be instanced using the _AddInstanceItem service.

The V86 private area is used for MS-DOS application code and data. Pages in this address range are mapped to different physical storage for each VM. The first page of the V86 private area depends on the size of the V86 global area. To get the page numbers of the first and last pages in the V86 private area, use the _GetFirstV86Page and _GetLastV86Page services.

The V86-Mode Memory Manager (V86MMGR) manages the pages in the V86 private area. During device initialization, the V86MMGR assigns the pages to itself by using the _Assign_Device_V86_Pages service.

Video memory is managed by the video display device (VDD). The VDD assigns the pages in this range to itself during device initialization. It then installs its own page fault handler for the pages by using the Hook_V86_Page service.

The VM control block heap is used by virtual devices to allocate memory that is local to each VM. To allocate memory from the VM control block heap, use the _Allocate_Device_CB_Area service.

See also _AddInstanceItem, _Allocate_Device_CB_Area, _Assign_Device_V86_Pages, Hook_V86_Page, _GetFirstV86Page, _GetLastV86Page