Log in ....Tribune

Monday, August 12, 2002
Feature

User-hardware interface
Sarabjeet Singh Kanwal

AN operating system (OS) is the first software you see when you turn on your computer and the last one when you turn the PC off. It is the software that actually manages the raw hardware, hence acting as an interface between the user and hardware. It directly operates on the hardware and fabricates an environment for the execution of the other programs.

The goals of OS are to:

1) Use hardware in an efficient way — User programs rely on the facilities provided by OS to gain access to resources of a computer system, such as processor, memory, files, disk space and I/O devices. It keeps track of the status of each resource and decides which application gets the resource, for how long and when. In a multiprogramming system (eg: Windows), where multiple programs competes simultaneously for a limited set of resources, OS resolves conflicting requests for resources in a way to optimise performance and increase productivity of the overall system, keeping the integrity of system preserved.

2) Make system convenient to use — This is done by providing a stable and consistent way to the application programs to deal with hardware without knowing the details of the hardware. The OS works in a primitive way on the hardware. The code to directly manipulate the hardware (especially I/O devices) is very detailed, tough and awkward, and is a major source of programming difficulty.

To make this point clear, let us take an example of a floppy disk driver. The operating system provides a simple and a nice interface of files and folders of the floppy disk, each with a name. Using the name of a file we can open, read, write and finally close it. How a controller chip of a floppy drive performs this read/write is really complex. The controller chip accepts read/write commands and the commands to move disk arm to the place where read/write is to be done. A laser-beam checks whether the write-protect tab is on or off. When an operation is complete, the controller chip returns status and error information. Hence, a programmer must be aware of these much of details whenever he writes a simple program for I/O. Besides, he should constantly keep track whether the motor is on or off. If it is off, it must be turned on, before read/write function is performed. Also, it can’t be left on for long time as it may cause wearing out. This makes programming a nightmare. What an average programmer wants is a simple high-level abstraction to work upon. An abstraction is a concept of hiding too much of the unnecessary details from a user and present a view that is easy to understand and operate. A typical abstraction is just a disk with an interface of files and folders. Details of motor status, laser beam working and disk space management etc should not appear before the user.

OS not only hides these unpleasant hardware details from a programmer, but also saves his time and energy from dealing with interrupts, timers, conflicts, scheduling and errors. OS manages this using a subroutine library called device driver. This view is the equivalent of an extended machine or virtual machine that is easier to program than the underlying hardware.