The operating system is responsible for managing IO systems, the hardware and software necessary to handle input and output devices on a computer.
IO, or input/output, devices are physical, electronic devices that can receive and produce signals between a computer and the outside world.
IO devices can be categorized into three categories:
Driver devices provide support to both CPUs and IO devices so that they may communicate effectively with one another.
There are two types of device drivers:
Blocking refers to the method in which an application stops all other execution and waits for the current IO request to be completely executed.
Non-blocking refers to the method in which requests get placed into a queue when they are waiting for IO requests to be completed so that the CPU may allocate its resources to continue processing other requests.
Interrupts are a hardware mechanism that sends a signal to the CPU whenever an IO device needs the CPU’s attention
The interrupt handler is a pool or queue of interrupts being sent to the CPU.
DMA controllers are hardware devices that allow IO devices to transfer data to/from memory while bypassing the CPU.
Memory-mapped IO allows for an IO device and the main memory of a computer to share address space in their transfer of data
The three methods used by IO devices to read/write data are the character method, block method, and network method.
- The character method of reading/writing data looks like a sequential series of bytes and each byte is accessed one at a time.- The block method of reading/writing data allows for random access as memory is designed to store data in blocks of a fixed size.- The network method of reading/writing data is designed to use different types of interfaces (such as a socket interface) to access multiple devices over a network.
The role of IO software is to receive signals from physical devices, interpret them, and then perform tasks accordingly through the operating system.
The user-space is the place in memory in which user processes run. The kernel-space is the place in memory in which the kernel functions and manages system calls.
The kernel-space is the place in memory where the kernel performs its functionality. The kernel manages the scheduling of tasks, buffering (storing data in memory when transferring between a computer and IO devices), spooling (holding output data for an IO device), and more.
IO software consists of the following layers:
Device drivers are device-specific code that is added to a computer so that a device may interact with a computer.
Device independent software refers to the software components that handle functions that are not specific to any single IO device.