Introduction
The PC of a business end-user will quite commonly provide a number of different application programs, but no program development tools. It is also possible (although unlikely) that the PC of a programmer could provide development tools only, and no other commercial applications. But the one thing that all these machines would definitely have is an operating system (OS). The operating system is an essential piece of software that resides on virtually every computer. It allows the computer to run a number of different applications apparently simultaneously, and shares resources such as printers between a number of different users, while at the same time performing those functions that are critical to the correct operating of the computer system, regardless of which application is running.
Different types of computers may require different operating systems. Most mainframe computers have a proprietary operating system, such as IBM’s MVS or Siemen’s BS2000. At the opposite end of the market, we find that the leading operating system for the IBM compatible Personal Computers is Microsoft Windows (having all but replaced its predecessor MS-DOS) although Mac-OS and Unix variants such as Linux also have strong followings.
Today’s operating systems are true marvels of engineering and rate among the most complex artifacts designed by humans. Their complexity stems from the increasing number of functions that an operating system is required to handle.
Multitasking
Today’s computers handle many applications at the same time: you could be downloading a file from the Internet at the same time as you update a spreadsheet that is embedded within a word-processing document (while at the same time your virus scanner is running in the background). Each application needs to share the CPU, main memory and all peripheral devices. The OS sees to it that all conflicts are resolved and each application gets a fair share of the common resources, often in accordance with a certain priority schedule. An important task, therefore, is that of the proper scheduling of different tasks. The OS also ensures that illbehaving applications do not impact on the integrity of the other applications and their data. (By the way, when a single application program runs multiple tasks simultaneously, this is known as multithreading.)
Multi-user management
Barring the personal computer, computers have more than a single user at any one time – a typical mainframe may have to handle many thousands of simultaneous users. Each of the users may operate a different application (see multitasking) but will not be prepared to wait for other users to finish their tasks. So the OS sees to it that each user gets a fair share of the CPU of the mainframe, by slicing each second in tiny fractions and allocating them to the different users. In addition, each user may have a different profile in terms of access to certain peripheral devices and data. This requires sophisticated security and data management.
Memory management
Apart from the CPU, primary memory is often the most expensive and scarcest component of a computer system. Efficient memory management is a key component of any OS, especially in multitasking and multi-user environment. The likelihood that there is sufficient memory to load all the data and software for all users simultaneously is extremely small. In practice, a technique of virtual memory is used whereby the available amount of main memory is extended by using secondary storage devices, usually the hard disk. During a typical program execution, not all program instructions and data are required at once. The OS will swap out all unused software and data segments onto disk, until they are actually required.
Secondary storage management
All applications require disk storage – if only to store the application software itself. The OS provides the common access routines to the secondary disk storage devices. It will keep track of data and program file names, physical locations and perform common functions such as the copying, erasing or backing up of data. It also makes the differences in physical hardware as transparent as possible: a data file will appear the same to an application whether the data is being loaded from a diskette, a hard disk or an optical CD-ROM.
Peripheral handler
Apart from managing the memory and secondary storage devices, the OS is usually also responsible for the handling of other peripheral devices. Again, a major objective is to relieve the application from the responsibility of having to cater for a multitude of different possible input and output devices. Thanks to the OS, a program (developer) does not need to cater for the differences between a trackball, mouse or other pointing device. The OS will also ensure that your document will be printed correctly, regardless of whether you have a colour inkjet, a laser or lowly dot-matrix printer attached. Equally, individual programs no longer have to worry about the resolution or capability of your computer monitor. The critical element is again that the applications do not have to worry about the actual hardware connected to the computer system. This is usually achieved by means of device drivers, small software routines that become part of the operating system and help it to interface correctly with specific hardware devices. The device drivers for popular or standard devices are usually already included in the operating system. More esoteric or very new hardware devices will come with a separate disk containing the proper device drivers. These then have to be installed as part of the operating system at the same time as connecting the hardware.
Communications Management
Communications software allows a computer to recognise the presence of other machines on a network, and to grant or restrict access to local files. It also manages network traffic, by monitoring communications lines and diagnosing problems, as well as sending and receiving data to and from remote devices. While PC operating systems include some basic networking and communications facilities, network operating systems (NOS) such as Novell and Unix provide sophisticated management tools for large networks.
User interface
Until the late 1980s, operating systems focussed on the efficient management of resources, tasks and secondary storage. The popularity of personal computers meant that a whole class of less-technical end-users entered the world of computing. This pressured the IT industry into developing a user-friendlier graphical user-interface and the user interface is quickly becoming a significant part of microcomputer operating systems. Different types of user interface have already been discussed earlier in this chapter.
System Utilities
As a logical extension of the operating system, additional system utilities are often required to assist with the proper and optimal use of the computer. Some system utilities may be provided along with the operating system, while others are marketed by independent third-party vendors. A number of system utilities focuses on improving the functionality of the operating system (e.g. better hard disk management) while others provide additional functions (e.g. anti-virus or encryption software). More examples of system utilities are editors, additional security utilities, performance monitors, file viewers, data compression software etc.