It is responsible for moving the data between the peripheral devices that it is controls and its local buffer storage.
The operating system has a device driver for each device controller
This device driver understands the device controller and presents a uniform interface to the device to the rest of the operating system
Interrupt Driver IO
The device driver loads the appropriate registers within the device controller.
The device controller, in turn, examines the contents of these registers to determine what action to take.
The controller starts the transfer of the data from the device to its local buffer.
Once the transfer of data is complete, the device controller informs the device driver via an interrupt that it has finished its operation.
The device driver then returns control to the operating system, possibly returning the data or a pointer to the data if the operation was a read.
High overhead when used for bulk data movement such as disk I/O.
To solve this problem, directed memory access (DMA) is used.
Directed Memory Access (DMA)
After setting up buffer, pointers and counters for the I/O device, the device controller transfers an entire block of data directly to or from its own buffer storage to the memory, with no intervention by the CPU.