The PC AT has eight DMA channels, each of which can be hard-wired to a slave device on the bus. Assignments, therefore, cannot change unless the device adapter is reconfigured by changing jumpers. Because of this one-to-one relationship, there is no separate device driver for the DMA controller. Each device requiring DMA services programs the corresponding DMA channel directly in its device driver, as though the DMA channel were part of its own hardware.
In the PS/2, virtual DMA channels may also be assigned; two of the eight channels, channels 0 and 4, are virtual channels which can be dynamically assigned to any device. These channels can, therefore, be multiplexed to service more than one device. ABIOS serializes channel accesses to avoid contention.
Device drivers for hardware devices access the DMA channels directly, with no device driver required for the DMA controller itself. OS/2 Version 2.0, therefore, does not use a physical device driver for DMA access. The virtual DMA device driver VDMA.SYS supports access to DMA ports from DOS applications in virtual machines.
VDMA consists of port trap handlers which ignore IN/OUT commands. The supported DMA services are:
Note that VDMA does not support direct access to the DMA controller by DOS applications.