Unit 5 - Operating System

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Subject Name: Operating System

Subject Code: CS-5002


Semester: 5th
Downloaded from be.rgpvnotes.in

UNIT-V

Operating System - I/O Hardware

One of the important jobs of an Operating System is to manage various 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 etc.

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
de i es a e di ided i to t o atego ies −

 Block devices− A lo k de i e is o e ith hi h the driver communicates by sending entire

 Character devices− a ha a te de i e is o e ith hi h the d i e o


blocks of data. For example, Hard disks, USB cameras, Disk-On-Key etc.
u i ates se di g
and receiving single characters (bytes, octets). For example, serial ports, parallel ports, sound
cards etc.
Device Controllers

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.

The Device Controller works like an interface between a device and a device driver. I/O units
(Keyboard, mouse, printer, etc.) typically consist of a mechanical component and an electronic
component where electronic component is called the device controller.

There is always a device controller and a device driver for each device to communicate with the
Operating Systems. A device controller may be able to handle multiple devices. As an interface
its main task is to convert serial bit stream to block of bytes, perform error correction as
necessary.

Any device connected to the computer is connected by a plug and socket, and the socket is
connected to a device controller. Following is a model for connecting the CPU, memory,
controllers, and I/O devices where CPU and device controllers all use a common bus for
communication.

Page no: 1 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

Synchronous vs asynchronous I/O

 Synchronous I/O− I this s he e CPU e e utio aits hile I/O p o eeds


 Asynchronous I/O− I/O p o eeds o u e tl ith CPU e e utio
Communication to I/O Devices

The CPU must have a way to pass information to and from an I/O device. There are three
approaches available to communicate with the CPU and Device.

 Special Instruction I/O


 Memory-mapped I/O
 Direct memory access (DMA)
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 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 I/O device
can transfer block of data to/from memory without going through CPU.

Page no: 2 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

While using memory mapped IO, OS allocates buffer in memory and informs I/O device to use
that buffer to send data to the CPU. I/O device operates asynchronously with CPU, interrupts
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 IO is used for most high-speed I/O devices like
disks, communication interfaces.

Direct Memory Access (DMA)

Slow devices like keyboards will generate an interrupt to the main CPU after each byte is
transferred. If a fast device such as a disk generated an interrupt for each byte, the operating
system would spend most of its time handling these interrupts. So, a typical computer uses
direct memory access (DMA) hardware to reduce this overhead.

Direct Memory Access (DMA) means CPU grants I/O module authority to read from or write to
memory without involvement. DMA module itself controls exchange of data between main
memory and the I/O device. CPU is only involved at the beginning and end of the transfer and
interrupted only after entire block has been transferred.

Direct Memory Access needs a special hardware called 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 settings, which includes I/O and memory types, interrupts
and states for the CPU cycles.

Page no: 3 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

The ope ati g s ste uses the DMA ha d a e as follo s −

Step Description

1 Device driver is instructed to transfer disk data to a buffer address X.

2 Device driver then instruct disk controller to transfer data to buffer.

3 Disk controller starts DMA transfer.

4 Disk controller sends each byte to DMA controller.

5 DMA controller transfers bytes to buffer, increases the memory address,


decreases the counter C until C becomes zero.

Page no: 4 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

6 When C becomes zero, DMA interrupts CPU to signal transfer completion.

Polling vs Interrupts I/O

A computer must have a way of detecting the arrival of any type of input. There are two ways
that this can happen, known as polling and interrupts. Both of these techniques allow the
processor to deal with events that can happen at any time and that are not related to the
process it is currently running.

Polling I/O

Polling is the simplest way for an I/O device to communicate with the processor the processor.
The process of periodically checking status of the device to see if it is time for the next I/O
operation is called polling. The I/O device simply puts the information in a Status register, and
the processor must come and get the information.

Most of the time, devices will not require attention and when one does it will have to wait until
it is next interrogated by the polling program. This is an inefficient method and much of the
processors time is wasted on unnecessary polls.

Compare this method to a teacher continually asking every student in a class, one after
another, if they need help. Obviously the more efficient method would be for a student to
inform the teacher whenever they require assistance.

Interrupts I/O

An alternative scheme for dealing with I/O is the interrupt-driven method. An interrupt is a
signal to the microprocessor from a device that requires attention.

A de i e o t olle puts a i te upt sig al o the us he it eeds CPU’s atte tio he CPU
receives an interrupt; it saves its current state and invokes the appropriate interrupt handler
using the interrupt vector (addresses of OS routines to handle various events). When the
interrupting device has been dealt with, the CPU continues with its original task as if it had
never been interrupted.

Operating System - I/O Software’s

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

 User Level Libraries− this p o ides si ple i te fa e to the use p og a to pe fo i put


and output. For example, stdiois a library provided by C and C++ programming languages.

Page no: 5 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

 Kernel Level Modules− this p o ides de i e d i e to i te a t ith the de ice controller and

 Hardware− This la e i ludes a tual ha d a e a d ha d a e o t olle hi h i te a t ith


device independent I/O modules used by the device drivers.

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.

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.

Page no: 6 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

A de i e d i e pe fo s the follo i g jo s −

 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
 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 i te upt e ha is a epts a add ess ─ a u e that sele ts a spe ifi i te upt
handling routine/function from a small set. In most architecture, 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 Soft a e −

 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

Page no: 7 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

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− Ke el s hedules a set of I/O e uests to dete i e a good o de i hi h 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

 Buffering− Ke el I/O Su s ste


applications.
ai tai s a e o a ea k o as buffer that stores data
while they are transferred between two devices or between devices 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

 Caching− Ke el ai tai s a he e o
sizes.
hi h is egio of fast e o that holds opies

 Spooling and Device Reservation− A spool is a uffe that holds output fo a de i e, su h as


of data. Access to the cached copy is more efficient than access to the original.

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-

 Error Handling− A ope ati g s ste that uses p ote ted e o


kernel thread.
a gua d agai st a
kinds of hardware and application errors.

Page no: 8 Follow us on facebook to get real-time updates from RGPV


Downloaded from be.rgpvnotes.in

CS-5002

Operating System

Page no: 9 Follow us on facebook to get real-time updates from RGPV


We hope you find these notes useful.
You can get previous year question papers at
https://qp.rgpvnotes.in .

If you have any queries or you want to submit your


study notes please write us at
[email protected]

You might also like