Input/Output Management
manage various input/output (I/O) devices, including
mouse
keyboards
touch pad
disk drives
display adapters
USB devices
Bit-mapped screen
LED
Analog-to-digital converter
On/off switch
network connections
audio I/O
printers
An I/O system is required to take an application I/O request and send it to the physical device, then take whatever response comes back from the device and send it to the application
I/O devices can be divided into two categories:
Block devices:
A block device is one with which the driver communicates by sending entire blocks of data.
For example, hard disks, USB cameras, Disk-On-Key, and so on.
Character Devices:
A character device is one with which the driver communicates by sending and receiving single characters (bytes, octets).
For example, serial ports, parallel ports, sounds cards, and so on.
The CPU must have a way to pass information to and from an I/O device.
Special Instruction I/O
This uses CPU instructions that are specifically made for controlling I/O devices.
These instructions typically allow data to be sent to an I/O device or be read from an I/O device.
Memory-mapped I/O
When using memory-mapped I/O, the same address space is shared by memory and I/O devices.
The device is connected directly to certain main memory locations so that the I/O device can transfer block of data to/from the memory without going through the CPU.
While using memory mapped I/O, the OS allocates buffer in the memory and informs the I/O device to use that buffer to send data to the CPU.
The I/O device operates asynchronously with the CPU, and interrupts the CPU when finished.
The advantage to this method is that every instruction which can access memory can be used to manipulate an I/O device. Memory-mapped I/O is used for most high-speed I/O devices like disks and communication interfaces.
Direct memory access (DMA)
Slow devices like keyboards will generate an interruption to the main CPU after each byte is transferred. If a fast device, such as a disk, generated an interruption for each byte, the operating system would spend most of its time handling these interruptions. So a typical computer uses direct memory access (DMA) hardware to reduce this overhead.
Direct Memory Access (DMA) means the CPU grants the I/O module authority to read from or write to memory without involvement.
The DMA module itself controls the exchange of data between the main memory and the I/O device. The CPU is only involved at the beginning and end of the transfer and interrupted only after the entire block has been transferred.
Direct Memory Access needs special hardware called a DMA controller (DMAC) that manages the data transfers and arbitrates access to the system bus.
The controllers are programmed with source and destination pointers (where to read/write the data), counters to track the number of transferred bytes, and various settings. These include the I/O and memory types and the interruptions and states for the CPU cycles.
Last updated
Was this helpful?