CHAPTER 1
Introduction and Structure of Operating System
1.1 What is Operating System?
Operating System is software that controls the hardware. Different applications may interfere with each other, if not programmed carefully. Therefore, as a result, a layer of software called operating system was introduced that allows each application to execute without any interference. The kernel is the software which consists of core of the operating system. The operating system behaves like a manager that manages software and hardware to get the required result. The primary goal of an operating system is to manage resources and hardware like Memory, Processors, Input/Output devices, and Communication devices.
1.2 History of Evolution of Operating System
1940s and 1950s
In the 1940s, the digital computers did not have an operating system. The programmers used machine language and used to enter the machine language program 1 byte at a time by using punch cards. The programming process geared up by using assembly language. It used symbols in machine language.
The first operating system was implemented by General Motors Research Laboratories in the early 1950s for its IBM 701 computer. The 1950s system executed only one job at a time, which involves a set of program instructions related to a particular computational task such as payroll or inventory. These systems were called Single-Stream batch processing systems. The 1950s operating system reduced inter-job transition time by using job stream, in this reader automatically read the next job after finishing up of the current job. But the programmer had to control system resources like Memory and Input/Output devices directly. This was a quite difficult and slow process. Also, in early systems, the entire program needs to be loaded in memory for the program to run.
1960s
The computers of 1960s used the concept of batch processing but executed several jobs at a time. These systems introduced peripheral devices like card readers, card punches, printers, tape drives, and disk drives. Systems improved resource utilization, thus allowing one job using the processor (CPU bound jobs) and another for peripheral devices (Input/Output jobs).
The concept of multiprogramming was also introduced in the 1960s i.e., managing several jobs at a time. The primary goal of these systems is Resource Sharing. In the 1960s, the program submission for execution was done by using punch cards or computer tapes manually. The programmer had to sit for hours or even for days before it could be processed. Even a minor mistake like comma could create a blunder because after correction again the programmer had to sit for hours until the processing completes.
In 1964, IBM introduced its system/360 family of computers where “360” indicates all points on the compass to show universal applicability. Then over the years, IBM announced the family of system 370 series, 390 series, and then z series. Then, more advanced systems provided the service for multiple interactive users at once. In the 1960s, the users interacted with the operating system through “dumb terminals” (devices that provided user interface without processor power) that were online (directly connected to the computer through the active line).
Time-Sharing Systems and Real-Time Systems were also introduced in the 1960s. Real-time systems were bound to a specific time period. The operating system needed to distinguish between the type of users and the level of services provided to the particular user. Batch processing jobs could tolerate delay up to a certain limit. Interactive jobs needed some higher level of performance. Real-time systems could not tolerate the delays as they are time-critical systems.
1970s
Primarily, the systems of the 1970s were multimode multiprogramming systems supporting batch processing, time-sharing, and real-time applications. The development in microprocessor technology was in progress. TCP/IP communication standard was used to improve communication in the Department of Defense (DOD). The concept of Local Area Network (LAN) was introduced in the 1970s by Ethernet standard developed at Xerox’s Palo Alto Research Center (PARC). With the increase of information transmission, the security problems also came in the picture.
1980s
Microprocessor technology evolved in 1981, when IBM released a personal computer. In 1984, Apple Macintosh released personal computers. The GUI and Mouse were introduced by Xerox’s Palo Alto Research Center (PARC). The GUI was embedded in Machintosh’s operating system. Distributed computer became popular via client-server model. The client is a user computer that send the request to the server machine and server fulfills the request.
1990s
In 1990s, the development in hardware technology was on the boom. By the end of the decade, the storage capacity of hard disk increased up to gigabyte and the personal computer was able to execute hundred Million instructions per second (MIPS). The distributed computing also got popular during 1990s. The operating system support for networking became standard with the increased demand for the Internet connections. During the 1990s, Microsoft made its hold in the software industry. Microsoft released the first Disk operating system (DOS) in 1981 for IBM personal computer.
Microsoft developed windows operating system in the mid-1980s and it was graphical user interface built on top of DOS. In1990, Microsoft released another version of windows operating system with rich functionalities named as Windows 3.1, then Windows 95 followed by Windows 98. In 1993, Microsoft released Windows NT. During the 1990s, object-oriented technology became popular with the increased popularity of C++ and Java.
During 1990s, the development in computing introduced open source software. The usage of free and open source software became common. Examples are the Linux operating system and Apache web server. Linux was created by Linus Torvalds. In 1980s, Richard Stallman made improvements in UNIX operating system to make the code available for free of cost. Then, Stallman created GNU (GNU’s Not Unix) project for the same purpose of not selling the code. To protect open source software and promote the advantages of open source programming, open source initiative was founded in the late 1990s. In the 1990s, the operating system became user-friendly by introducing the concept of Graphical user interface (GUI) and “plug and play” capability that allows the user to add and remove the hardware components without manually reconfiguring the operating system.
2000 and Beyond
In 2000, middleware was introduced. It is software to link two separate applications. Middleware behaves like a courier to pass messages between database and web server. It simplifies communication between different architectures. Parallel computing got the fame in the current decade. Linux became more popular and introduced Portable Operating System Interface (POSIX) to improve the compatibility with other UNIX based operating systems. Apple introduced MacBook air (personal computer) in 2008. In October 2011, Acer, HP, Lenovo, LG, Asus, Toshiba, and Samsung release their ultra-books.
1.3 Operating System Environments
There are various operating system environments related to general purpose computers. Embedded systems provide a different operating system design challenge. In embedded environments, resource management is the major consideration to build a successful operating system. Because of limited storage capacity, an operating system must provide services by using a minimum amount of code.
Real-time systems are time-critical systems. The task needs to be finished within a given time frame. An example is an autopilot feature of aircraft. There may be soft real-time systems and hard real-time systems. In soft real-time systems task is finish within a given time limit, delay up to some limit is affordable. However, in hard real-time systems the task must be finished on time, no delay is affordable in this.
Business critical systems are databases and servers. The business does not necessarily fail if a business-critical system does not meet its objectives.
1.4 Operating System Components and Goals
Initially, there was no operating system in computer systems. Then as machines progressed to multiprogramming, time-sharing systems, personal computers, up to distributed computer systems. With the increased demand for features, the operating system evolved to fill new roles.
1.4.1 Core Operating System Components
The kernel is software that contains core operating system components. The core components of operating systems are:
- Process scheduler:...