Software Organization Structure:
Definitions and Explanation:
Operating system implements supervisor calls for processes to request device
input and output services. The same set primitive may be available for all
Some characteristics of devices affect the supervisor call that are as follows:
1. Device Speed:
The speed of device I/O can be slow. Some operating systems provide the facility
to issue nonblocking I/O operations that can be handled as follows:
Using data received and buffered before the system call, the return can be
immediate using the data in the input buffer. The return value indicates the
amount of supplied data.
The process can be notified at the completion of input operation. It can be done
by sending a signal to process. Signal is sent by setting the value of a process
variable or by providing a special system call.
Notification can be ignored in nonblocking outputs. The reason is that it is not
relevant to the application when the data is output by the device.
2. Mutual Exclusion:
Operating system provides the following protection for non-sharable devices:
- It may allow only one process to open the device at one time.
- It may assign the ownership of the device to the user who opened it and may
deny access to other users.
- A spooling scheme may be used to handle the problem at application level.
- It may do nothing and leave the problem to the user.
3. Unidirectional Devices:
Some devices are unidirectional i.e. input-only or output-only. The devices can
only be used for specific purpose. The devices must be opened before I/O can be
performed on them. The open call can include a parameter that indicates the type
of access. An attempt to open a device for wrong kind of I/O should not be
Some operating systems provide separate mechanism for network devices. These
operating systems provide the support for network protocols for complex network
communication. A popular network I/O abstraction is sockets.
Socket is connected to your computer on one side and to a remote computer on the
other side. Applications create sockets, establish connections to sockets on
remote machines, and send and receive messages on established connections.
Logical I/O level uses semi-device-independent kernel I/O objects. The Objects
are not always totally device-independent. I/O requests from other modules of
operating system access the capabilities of this level.
Two commonly device types are block devices and character devices. A disk is a
block device. I/O operations transfer the number of disk blocks i.e. sectors.
Character devices like printer and modem transfer single character or byte at a
Logical I/O provides buffering for I/O data for the following reasons:
- I/O operation can occur at any time. If no process requests input from
buffers are used to store data typed by the user.
- Block devices perform I/O
in blocks. Buffers package the requests in block-size units.
- In DMA transfers, buffers are used as destination or source of transfer.
- In asynchronous write operation, data is copied in buffer and application
continues to execute.
Cache is a fast storage device to hold a copy the data stored on a slower
device. If the information to be read from a slower device is present in cache,
the request en be executed faster. I/O caches store device data in main memory.
Systems that implement caches create a buffer to be used as cache.
I/O objects generated in the logical I/O software are passed to device drivers
that are built for the needs of different devices. They operate on one or more
Operating system may require a set of functions implemented for that device as follows:
open: Perform startup function before the use of device.
close: Perform any function to shut down the device.
schedule: Perform scheduling on I/O request.
interrupt: The routine executed when device send an interrupt to CPU.
ioctl: Implements any special functions that can be applied to this device.