- Operating Systems Course
- Operating System Tutorial
- History of the Operating System
- Personal Computer OS
- OS Processes
- OS Process Model
- OS Process Creation
- OS Deadlocks
- OS Deadlock Recovery
- OS Two-Phase Locking
- OS Memory Management
- OS Monoprogramming
- OS Shared Pages
- Operating System Input/Output
- OS Input/Output Devices
- OS Input/Output Software Layers
- OS Disk Hardware
- OS Files
- OS File Naming
- OS File Types
- OS Hierarchical Directory System
- OS Directory Operations
- OS File Operations
- Multimedia Operating System
- OS Multiprocessors
- Operating System Security
- OS User Authentication
- Computer Programming
- Learn Python
- Python Keywords
- Python Built-in Functions
- Python Examples
- Learn C++
- C++ Examples
- Learn C
- C Examples
- Learn Java
- Java Examples
- Learn Objective-C
- Web Development
- Learn HTML
- Learn CSS
- Learn SQL
- Learn PHP
Input/Output Software Layers in Operating System
This post was written and made public with the intention of educating readers about the input/output software layers that are present in operating systems.
In its most fundamental form, input/output software can be broken down into the following four layers:
- Interrupt handlers
- Device drivers
- Device-independent input/output software
- User-space input/output software
In every input/output software system, each of the four layers has a well-defined function to perform and a well-defined interface to the adjacent layers.
The figure given below shows all the layers, along with the hardware, of the input/output software system.
Here is another figure that shows all the layers of the input/output software system along with their principal functions.
Now let's briefly describe all four input/output software layers that are listed above.
The interrupt procedure will perform whatever actions are necessary in order to deal with an interrupt whenever one of those events takes place.
Device drivers, in their most basic form, are device-specific codes that are used solely for the purpose of controlling the input/output devices that are connected to a computer system.
The term "device drivers" is likely the most familiar to you out of the four layers described in this post; in fact, you have probably come across it at some point. It is not possible to use a device that is connected to a computer without the appropriate device driver. To give you an example, let's say that in order to use our computer to browse the internet, we need to connect a MODEM to it first. As a result, in order for our MODEM to work, the device driver that corresponds to our MODEM needs to be installed on our computer. It is possible that the MODEM will not work if its device driver is not installed.
Device-Independent Input/Output Software
Some of the input/output software is device-specific, and other parts of that input/output software are device-independent.
The exact boundary between the device-independent software and drivers is device-dependent, and just because of that, some functions that could be done in a device-independent way sometimes are done in the drivers, for efficiency or any other reason.
Here is a list of some functions that are done in the device-independent software:
- Uniform interfacing for device drivers
- Error reporting
- Allocating and releasing dedicated devices
- Providing a device-independent block size
User-Space Input/Output Software
Generally, most of the input/output software is within the operating system (OS), and some small part of that input/output software consists of libraries that are linked with the user programs and even whole programs running outside the kernel.
« Previous Topic Next Topic »