0% found this document useful (0 votes)
7 views4 pages

Operating System - I - O Softwares - Tutorialspoint

The document discusses I/O software in operating systems, detailing its layered structure including user-level libraries, kernel-level modules, and hardware. It explains the role of device drivers, interrupt handlers, and device-independent I/O software, emphasizing the need for a uniform interface across devices. Additionally, it outlines the responsibilities of the kernel I/O subsystem, such as scheduling, buffering, caching, spooling, and error handling.

Uploaded by

beebird234
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views4 pages

Operating System - I - O Softwares - Tutorialspoint

The document discusses I/O software in operating systems, detailing its layered structure including user-level libraries, kernel-level modules, and hardware. It explains the role of device drivers, interrupt handlers, and device-independent I/O software, emphasizing the need for a uniform interface across devices. Additionally, it outlines the responsibilities of the kernel I/O subsystem, such as scheduling, buffering, caching, spooling, and error handling.

Uploaded by

beebird234
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

3/25/2020 Operating System - I/O Softwares - Tutorialspoint

Operating System - I/O Softwares

I/O software is often organized in the following layers −

User Level Libraries − This provides simple interface to the user program to perform input and output. For example, stdio is a
library provided by C and C++ programming languages.
Kernel Level Modules − This provides device driver to interact with the device controller and device independent I/O modules used
by the device drivers.

Hardware − This layer includes actual hardware and hardware controller which interact with the device drivers and makes hardware
alive.

A key concept in the design of I/O software is that it should be device independent where it should be possible to write programs that can
access any I/O device without having to specify the device in advance. For example, a program that reads a file as input should be able to
read a file on a floppy disk, on a hard disk, or on a CD-ROM, without having to modify the program for each different device.

https://www.tutorialspoint.com/operating_system/os_io_software.htm 1/4
3/25/2020 Operating System - I/O Softwares - Tutorialspoint

Device Drivers
Device drivers are software modules that can be plugged into an OS to handle a particular device. Operating System takes help from device
drivers to handle all I/O devices. Device drivers encapsulate device-dependent code and implement a standard interface in such a way that
code contains device-specific register reads/writes. Device driver, is generally written by the device's manufacturer and delivered along with
the device on a CD-ROM.

A device driver performs the following jobs −


To accept request from the device independent software above to it.
Interact with the device controller to take and give I/O and perform required error handling

https://www.tutorialspoint.com/operating_system/os_io_software.htm 2/4
3/25/2020 Operating System - I/O Softwares - Tutorialspoint

Making sure that the request is executed successfully

How a device driver handles a request is as follows: Suppose a request comes to read a block N. If the driver is idle at the time a request
arrives, it starts carrying out the request immediately. Otherwise, if the driver is already busy with some other request, it places the new
request in the queue of pending requests.

Interrupt handlers
An interrupt handler, also known as an interrupt service routine or ISR, is a piece of software or more specifically a callback function in an
operating system or more specifically in a device driver, whose execution is triggered by the reception of an interrupt.

When the interrupt happens, the interrupt procedure does whatever it has to in order to handle the interrupt, updates data structures and
wakes up process that was waiting for an interrupt to happen.
The interrupt mechanism accepts an address ─ a number that selects a specific interrupt handling routine/function from a small set. In most
architectures, this address is an offset stored in a table called the interrupt vector table. This vector contains the memory addresses of
specialized interrupt handlers.

Device-Independent I/O Software


The basic function of the device-independent software is to perform the I/O functions that are common to all devices and to provide a uniform
interface to the user-level software. Though it is difficult to write completely device independent software but we can write some modules
which are common among all the devices. Following is a list of functions of device-independent I/O Software −
Uniform interfacing for device drivers
Device naming - Mnemonic names mapped to Major and Minor device numbers
Device protection
Providing a device-independent block size
Buffering because data coming off a device cannot be stored in final destination.
Storage allocation on block devices
Allocation and releasing dedicated devices
Error Reporting

User-Space I/O Software

https://www.tutorialspoint.com/operating_system/os_io_software.htm 3/4
3/25/2020 Operating System - I/O Softwares - Tutorialspoint

These are the libraries which provide richer and simplified interface to access the functionality of the kernel or ultimately interactive with the
device drivers. Most of the user-level I/O software consists of library procedures with some exception like spooling system which is a way of
dealing with dedicated I/O devices in a multiprogramming system.
I/O Libraries (e.g., stdio) are in user-space to provide an interface to the OS resident device-independent I/O SW. For example putchar(),
getchar(), printf() and scanf() are example of user level I/O library stdio available in C programming.

Kernel I/O Subsystem


Kernel I/O Subsystem is responsible to provide many services related to I/O. Following are some of the services provided.

Scheduling − Kernel schedules a set of I/O requests to determine a good order in which to execute them. When an application
issues a blocking I/O system call, the request is placed on the queue for that device. The Kernel I/O scheduler rearranges the order
of the queue to improve the overall system efficiency and the average response time experienced by the applications.
Buffering − Kernel I/O Subsystem maintains a memory area known as buffer that stores data while they are transferred between
two devices or between a device with an application operation. Buffering is done to cope with a speed mismatch between the
producer and consumer of a data stream or to adapt between devices that have different data transfer sizes.
Caching − Kernel maintains cache memory which is region of fast memory that holds copies of data. Access to the cached copy is
more efficient than access to the original.

Spooling and Device Reservation − A spool is a buffer that holds output for a device, such as a printer, that cannot accept
interleaved data streams. The spooling system copies the queued spool files to the printer one at a time. In some operating systems,
spooling is managed by a system daemon process. In other operating systems, it is handled by an in kernel thread.
Error Handling − An operating system that uses protected memory can guard against many kinds of hardware and application
errors.

https://www.tutorialspoint.com/operating_system/os_io_software.htm 4/4

You might also like