Question- Explain Goals of I/O Software
o It should be possible to write programs that can access any I/O devices without having to specify device in advance.
o 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.
o Name of file or device should be some specific string or number. It must not depend upon device in any way.
o In UNIX, all disks can be integrated in file system hierarchy in arbitrary way so user need not be aware of which name corresponds to which device.
o All files and devices are addressed the same way: by a path name.
o Error should be handled as close to hardware as possible. If any controller generates error then it tries to solve that error itself. If controller can’t solve that error then device driver should handle that error, perhaps by reading all blocks again.
o Many times when error occur, error solve in lower layer. If lower layer are not able to handle error problem should be told to upper layer.
o In many cases error recovery can be done at a lower layer without the upper layers even knowing about error.
Synchronous versus Asynchronous:
o Most of devices are asynchronous device. CPU starts transfer and goes off to do something else until interrupt occurs. I/O Software needs to support both the types of devices.
o User programs are much easier to write if the I/O operations are blocking.
o It is up to the operating system to make operations that are actually interruptdriven look blocking to the user programs.
o Data comes in main memory cannot be stored directly. For example data packets come from the network cannot be directly stored in physical memory. Packets have to be put into output buffer for examining them.
o Some devices have several real-time constraints, so data must be put into output buffer in advance to decouple the rate at which buffer is filled and the rate at which it is emptied, in order to avoid buffer under runs.
o Buffering involved considerable copying and often has major impact on I/O operformance.