At first, computers lacked any form of operating system. The computer user had sole use of the machine. The user would arrive at the machine armed with his or her program and data, often on punched paper tape. The program would be loaded into the machine, and then the machine set to work, until the program stopped. Later, computers came with libraries of support code which were linked to the user’s program to assist in operations such as input and output. This would become the start of the modern-day operating system. However, these machines still only ran a single job at a time.
Originally, each user wrote all of the code necessary to implement a particular application, including the highly detailed machine level input/output instructions. Very quickly, this input/output coding needed to implement basic functions was consolidated into an input/output control system (IOCS). Users wishing to perform input/output operations no longer had to code the instructions directly. Instead, they used IOCS routines to do the real work. This greatly simplified and sped up the coding process. The implementation of input/output control system may have been the beginning of the concept of operating system. Under this system, the user has complete control over all of main storage memory and as a result, this system has been known as the single user contiguous storage allocation system. Storage is divided into a portion holding input/output control system (IOCS) routine, a portion holding the user’s program and an unused portion.
The first single-user real storage systems were dedicated to one job for more than the jobs execution time. Job’s generally required a lot of setup time during which the operating system loaded, tapes and disk packs were mounted, appropriate forms were placed in the printer and time cards been punched in. When the jobs were completed, they required considerable time to teardown, as tapes and disk packs were removed, time cards were punched out etc…. During the job setup and job teardown, the computer sat idle.
Computer users soon realized that they could cut down the amount of time wasted between the jobs, if they could automate the job-to-job transition. The first major such system, which was considered by many to be the first operating system, was designed by the General Motors Research Laboratories for their IBM 701 mainframe beginning in early 1956 . Its success helped establish batch computing – the groupings of the jobs into a single deck of cards, separated by control cards that instructed computers about the various specification of the job. The programming language that the control cards used was called job control language (JCL).
The Era of Timesharing and Multiprogramming 1960s:
The systems of the 1960s were also batch processing systems but they were able to take better advantage of the computer resources by running several jobs at once. It was observed by the operating system designers that when one job was waiting for an input/output operation to be completed before the job could continue using the processor, some other could use the idle processor. They realized that running a mixture of diverse jobs appeared to be the best way to optimize computer utilization. The process by which they do so is called multiprogramming. To take maximum advantage of multiprogramming, it is necessary for several jobs to reside in the computers main storage at once. Then, when one job requests input/output, the CPU maybe immediately switched to another, and may do calculations without delay.
One of the major developments was timesharing system which enabled many users to share computer resources simultaneously. In timesharing mode, the computer spends a fixed amount of time on one program before proceeding to another. Timesharing systems helped facilitate the software development process significantly. With turnaround time reduced to mere minutes, a person writing a new program will not have to wait hours or days to correct errors. With timesharing, a programmer could enter a program, compile it, receive a list of syntax errors, correct them immediately and re-execute this cycle until the program is free of syntax errors thereby reducing development time significantly.
The personal computer era
Early personal computer operating systems were very diverse. Each vendor was producing one or more operating systems specific to their particular hardware. Nearly every operating system could have radically different models of commands, operating procedures, and such facilities as debugging aids.
It was the development of microprocessors made inexpensive computing available for the small business and the hobbyist, which in turn led to the widespread use of interchangeable hardware components using a common interconnection (such as the S-100, Apple II, SS-50, ISA and PCI buses), and an increasing need for operating systems to control them. The most important of the early OS’s on these machines was Digital Research’s CP/M-80 for the 8080 / 8085 / Z-80 CPUs.
It was based on several Digital Equipment Corporation operating systems, mostly for the PDP-11 architecture. MS-DOS (or PC-DOS when supplied by IBM) was based originally on CP/M-80. Each of these machines had a small boot program in ROM which loaded the OS itself from disk. The BIOS on the IBM-PC class machines was an extension of this idea and has more functions and features in the 20 years since the first IBM-PC was introduced in 1981.
The decreasing cost of display equipment and processors made it practical to provide graphical use interfaces for many operating systems, such as the generic X Window, System that is provided with many UNIX systems, or other graphical systems such as Microsoft Window, the Radio Shack Color Computer’s OS-9 Level II, Apple’s Mac OS, or even IBM’s OS/2. The original GUI was developed at Xerox Palo Alto Research Center in the early ’70s (the Alto computer system) and imitated by many vendors.
The significant types of Operating Systems
Microsoft Windows has become the most widely used operating system for personal computers but there have been many others which have made a significant impact upon the development of the personal computer.
CP/M : Considered to be the ‘first’ operating system, CP/M was developed by Gary Kildall
DOS : A text based operating system developed into MS-DOS by Microsoft to run on IBM machines. MS-DOS (originally QDOS) is alleged by Gary Kildall to be based upon his CP/M operating system which IBM attempted, unsuccessfully, to buy from him, before they asked Bill Gates to create an operating system for their computers.
OS/2 : Released by IBM in 1987, OS/2 was perhaps the first real multitasking operating system. It was designed by IBM and the code written at Microsoft. Although OS/2 was expected to outsell and eventually replace MS-DOS, its actual sales figures were very poor perhaps due to an increase in memory costs at the time.
LINUX : An open-source operating system developed by Linus Torvalds. Linux was developed originally for use on home PCs but has grown to find homes on PowerPC, Macintosh, Amiga, Atari, DEC Alpha, Sun Sparc, ARM, and many other computer platforms. Linux offers a number of different Graphical User Interfaces and can be set to look like a Windows or Mac operating system. It has been praised for its stability and speed and is, in a relatively small way, offering an alternative to the Windows operating system for PCs.
MAC OS : The Apple operating system developed to run on Macintosh machines. The Mac operating system is unique to Apple computers and yet is the second most widely used after Windows. Macintosh computers have often been favoured by computer users working in graphical design fields. Apple and Microsoft have fought over the available market for operating systems with IBM machines often considered as mainly Windows machines. Apple have lost out in the past but are regaining customers with their innovative approach to computer design and the perceived reliability of Mac OS when compared to Windows.
Windows : Now the predominant operating system for personal computers, Windows offers a Graphical User Interface based upon a ‘desktop’ metaphor. Windows has also enabled applications to perform in a consistent manner which means that menu options look similar from one package to another.
The Functions of Operation Systems
Operating Systems are the software that makes the hardware usable. Operating Systems makes the Hardware conveniently available to users, by managing the hardware carefully to achieve good performance. You may consider Operating Systems to be managers of resources as it determines which computer resources will be used for solving which problem an the order in which they will be used.
The three principal types of functions an operating system has are :
Assignment and allocation of system resources such as input/output devices, software, central processing unit.
Scheduling : This Function coordinates the job an resources and follows certain giving Priority.
Monitoring : This function Monitors and keeps track of the activities in the computer system. It maintains logs of job operation, notifies the computer operators of any abnormal terminations or error conditions. This function also contains security monitoring features such as any authorized attempt to access the system as well as ensures that all the security safeguards are in place.
Modern operating systems often provide users and applications with a virtual machine, an interface to the underlying hardware that makes it appear as though the user is the only user of the machine and it’s hardware. Whether the computer has one CPU or several CPUs, it is usually the case that there are more processes than CPUs. Therefore, the operating system is responsible for scheduling the processes on the CPU. There is a finite amount of memory that must be shared among the processes. The way this is done varies between different operating systems, but a commonly used mechanism is that of virtual memory.
Several different processes may be trying to access a single IO device and the operating system must manage these accesses. This is a different issue than processes scheduling since often IO is being performed for processes that are not currently executing. Some devices (e.g. disks) have resources that can be shared among users and/or user processes. The operating system is responsible for managing and protecting these resources.
Another important operating system function is providing support services for processes.
Support for IO operations.
File system management.
Interrupts and Traps.
An interrupt is a CPU event that is triggered by some external device. The OS manages these devices. Each device has a diver which is used to communicate with the OS and the device. A trap is a CPU event that is triggered by a program. Traps are sometimes called software interrupts. They can be deliberately triggered by a special instruction, or they may be triggered by an illegal instruction or an attempt to access a restricted resource.
The reason why OS are so critical
The main reasons why operating systems are so critical is by the functions that it performs which i have expalined in the last few pages. It is also so critical as it provides a layer of abstraction between the user and the bare machine. Without an OS, it would be very hard and time consuming to do a lot of the jobs on the computer that we take for granted. The users and applications do not see the hardware directly, but view it through the operating system. It is the operating system that lets us to communicate with the external devices.
Operating systems influence the way in which we communicate with personal computers. They have been developed to manage new technologies. The development of the PC has seen Microsoft grow to be the largest supplier of operating systems.
The need for reliable and easy-to-understand operating systems has prompted development of suitable systems to progress at a very quick pace. It is possible that a greater number of competing operating systems will become available to the consumer in the future although this does mean that users may find it difficult to move from a machine running one operating system to a machine running something quite different. The market for operating systems will continue to grow as the number of devices that can use them increase and it is sure to be a competitive area.