How do you visualize the operating system, what do you think, what is it?
It is somewhat similar to a homemaker with a maid. Who manages everything at home.
Picture it like how she (Operating System) handles all the household chores and delegate some of her tasks to her maid (Kernel). Now you have a kind of vague picture, let’s get into the formal definition and its underlying details.
An operating system is a software that manages the computer hardware or you can say that it is software that acts as an interface between computer hardware and the user.
Now, relating it to the homemaker, a homemaker manages a home. And everything in the house must be in its proper condition so that the homemaker can make good use of it. Suppose you cook food; you don’t interrupt the process until it’s cooked. Otherwise, you’ll end up with food that is not eatable (error, that is of no use). Operating System helps to communicate with the computer without knowing the computer’s language. Each computer must have at least one Operating System to perform tasks and run other programs.
There are many systems for which Operating Systems are designed for such as Personal Computers(PC), Mobile Phones, Workstations, Servers, and WSCs(Warehouse scale computers). For each device, the main goal is shared in common with all types of an Operating Systems, managing something, making use of the hardware, and providing an interface to the user. (the way we ask our mother, the homemaker, to serve us food) to write application programs or, say, generally to compute something.
Now, some of you must be thinking, I serve my food myself, which means interacting with the hardware directly. It is possible to interact with hardware directly or bypass the Operating System. One can directly access the hardware ( ex-Registers) if you understand the system from a lower-level perspective (0s and 1s, Latches, Flip-Flops, and so on.). Okay, you may be among those people who ask their maid (kernel) to serve food for you (System Programmer). A system programmer interacts with the kernel and gets their task done.
A Kernel is a special program (a person like your maid), who has some extra privileges, which handles most of the tasks (Random-access memory, Input/Output devices, Resource Management, Memory Management, Device Management), and in case of your maid (mopping the floor, cleaning the bathroom and bringing the veggies, etc.) delegated by the Operating System (The Homemaker)
History of Operating System
Back in the days (1940’s to early 1950s), games and software used to run directly on the hardware when we had no Operating System. Whenever we had to switch games or software, we would restart everything entirely. In answer to this problem, the owners of the central computers began to develop system software that helped the writing and execution of the programs included in the computer. Thus the first Operating System were born.
The first Operating System came into existence in 1956, developed by General Motors for IBM Machine 701, called GMOs.
Operating Systems in the 1950s were called single-stream batch processing systems because the data was submitted in groups. These new machines were called mainframes, and professional operators used them in large computer rooms. Since there was a high price tag on these machines, only government agencies or large corporations could afford them.
By the late 1960s Operating Systems designers were able to develop the system of multiprogramming. A computer program will be capable of performing multiple jobs simultaneously. The introduction of multiprogramming was a significant part of creating Operating Systems because it granted a CPU to be busy about 100 percent of the time it was in operation.
Another significant development during the third generation was the phenomenal proliferation of mini-computers, starting with the DEC PDP-1 in 1961. The PDP-1 had only 4K of 18-bit words but at $120,000 per machine (less than 5 percent of the price of a 7094). These microcomputers help create a whole new commercial enterprise and the development of more PDPs.These PDPs helped steer the creation of personal computers, which were designed in the fourth generation.
The fourth generation of Operating Systems observes the conception of personal computing. Although these computers were very alike to the minicomputers created in the third generation, personal computers cost a tiny part of what minicomputers cost. A personal computer was so inexpensive that it made it possible for a single individual to own one for personal use. At the same time, minicomputers were still at such a high price that only corporations could afford to have them.
One of the significant factors in creating personal computing was the birth of Microsoft and the Windows Operating System. The Windows Operating System was built in 1975 when Paul Allen and Bill Gates had the vision to take personal computing to its pinnacle. They presented the MS-DOS in 1981; although it was effective, it created many difficulties for people who tried to understand its cryptic commands. Windows became the most extensive Operating System used in technology today with Windows 95, Windows 98, Windows XP (currently the most used Operating System to this day), and its newest Operating SystemWindows 11.
Along with Microsoft, Apple is the other primary Operating System created in the 1980s. Steve Jobs, the co-founder of Apple, created the Apple Macintosh, which was a massive success because it was so user-friendly. The Macintosh influenced Windows development throughout the later years, and it created intense competition among the two corporations.
Today all of our electronic devices run on Operating Systems, from our computers and smartphones to ATMs and motor vehicles. And as technology improves, so do Operating Systems.
Example of Operating Systems
Types of Operating System
There are various types of Operating Systems.
Let’s see a few types of OS:
Simple Batch Systems
As early computers used to be very expensive, we couldn’t afford to waste processor time, so to maximize processor utilization, Simple batch systems evolved. The central idea behind simple batch systems uses software known as monitor, which interfaces with the processor directly and refrains users from accessing the processors directly.
The user fed an input to the computer operator, who gathered similar jobs(tasks to be performed) and placed an entire batch (group of similar type tasks) for utilization by the monitor. Each program is built to branch back to the monitor when it completes processing. At this point, the monitor automatically begins loading the following program.
With a batch Operating System, processor times alternates between the execution of the user’s program and the execution of the monitor. However, now some main memory is given to the monitor, and the monitor consumes some processor time. Both of these are some forms of overhead. Despite this overhead, simple batch systems improve the utilization of the processor.
Multi-programmed Batch Systems
Regardless of automatic job sequencing provided by the Simple Batch OS, the processor is often idle. The problem is I/O devices couldn’t compete with the processors in terms of speed. Thus I/O devices are slow. The main idea of Multi-programmed batch systems is when one job/task needs to wait for I/O, OS could switch to a different task/job and start executing it; when the I/O devices finished their execution, then again, it switches back to the first job and resumes its execution where it left off.
You can refer to the below figure for a better understanding which shows multiprogramming with three programs.
It has been developed to provide user interaction directly with the computer. Since, In batch multiprogramming, we used to provide JCL (Job control commands) with the job. But things like transaction processing, we needed user-interaction. Therefore the concept of time-sharing has been introduced. In this, a system clock generated interrupts at a rate of around one every 0.2 seconds.
At each clock interrupt, the Opertaing System reclaims control and could assign the processor to another user. This technique is known as time slicing. Suppose n users interact with the same computer; each user will only see on average 1/n of the effective computer capacity. Thus, at regular time intervals, the current user would be preempted and another user loaded in.
To retain the old user program status for later continuation, the old user programs and data were saved to disk before the new user programs and data were read.
Subsequently, the old user program code and data were restored in the main memory when that program was next given a turn. The main motive of time-sharing systems was to allow many users to share the computer resources which means max utilization of resources.
Real-Time Operating System
In a real-time system, the time interval between input request and output is very small, so these systems can be used in time constraint places like military software systems, space softwares, etc.
Distributed Operating System
In distributed various computers, interconnected with each other communicate with each other through the shared communication network. Each machine has its own processors and memory unit for fast computation. These are also known as distributed systems.
Mobile Operating System
Mobile Operating Sytem are specifically designed for mobile smartphones, tablets, watches, etc. A few of the famous mobile OS are Android, IOS, watchOS, etc.
Features of Operating System
Program development: The Operating System comes up with some utility programs called application program development tools which aids the user in creating programs. Examples: Editor, Debugger, etc.
Program execution: A program execution consists of various steps which Operating System handles for us, such as loading the program into the main memory, linking external files, initializing files and I/O devices, and other required resources.
Access to Input/Output devices: Each I/O device needs its own set of instructions, such as operation signals. Operating System hides these details and provides an interface through which user programs can easily access these devices using easy writes and reads.
Controlled access to files: For file access, the Operating System must consider a detailed understanding of the nature of the I/O device (disk drive, tape drive) and the structure of the data contained in the files on the storage medium. In a system with multiple users, the Operating System may provide protection mechanisms to control access to the files.
System access: Whether public or shared, the Operating System controls the system as a whole and specific system resources. The access functions must ensure data protection from unauthorized users and resolve resource access conflicts during concurrent access.
Error detection and response: Several errors can arise while the system is running. These errors include division by zero, accessing forbidden memory location or files, or any malfunction or device failure. The Operating System must handle all these errors and respond that clears all the error conditions with the most negligible impact on running applications in each case.
Accounting: A good Operating System will gather usage statistics for various resources and monitor performance parameters such as response time. This information helps anticipate the need for future enhancements and tuning the system to improve performance on any system. On a multiuser system, the data can be used for billing purposes.
Functions of Operating System
User Interface: One of the relevant features of the Operating System is the User Interface, which gives users a sense of a friendly environment through which users can easily interact and get their work done. Creating a Graphical user interface makes the overall system appealing and retains the user for a more extended period. One can access the system via a pointer on a screen and open any application with just a click.
File Management: It is also an essential feature of the operating system which handles the data storage technique. The Operating system manages all the files, directories, and folders on a system. It can be manipulated via user command such as renaming a file, changing a directory location, modifying a file access privilege/permission, and so on. There are several types of file management techniques such as FAT, NTFS, MacOs-Extended, and so on.
Memory Management: It is the process that is responsible for assigning/allocating memory blocks (memory spaces) to several running applications and coordinating with the computer’s main memory to optimize the overall performance of a system. The Operating System is responsible for the following activities in connection with memory management:
Keeping record of which blocks of memory are currently in use and who is using them.
Figuring out which processes (or parts of processes) and data to move in and out of memory.
Allocation and deallocation of memory blocks as needed by the program in main memory. (Garbage Collection)
Security Management: The Operating System supports a variety of protection and security mechanisms. In general, we are concerned with controlling access to computer systems and the information stored in them. Most of the work in security and protection can be clustered into four class:
Availability: Concerned with protecting the system against interruption.
Confidentiality: guarantee that users cannot read data for which access is unauthorized.
Data integrity: Protection of data/information from unauthorized modification/access.
Authenticity: concerned with the appropriate verification of the identity of users and the validity of messages or data.
Resource Management: The OS’s key responsibility is to manage the several resources available to it (main memory space, I/O devices, processors) and schedule their use by the several active processes. Every resource allocation and scheduling policy must consider three factors:
Fairness: Generally, we would like all processes competing for the use of a specific resource to be given approximately equal and fair access to that resource. It is mainly for jobs of the same class, that is, jobs of similar demands.
Differential responsiveness: Contrarily, the OS may need to discriminate among different classes of jobs with varying service requirements. The OS should try to make allocation and scheduling decisions to meet the entire set of requirements. The OS should also make these decisions dynamically. For example, if a process is waiting for an I/O device, the Operating System may wish to schedule that process for execution as soon as possible; the process can then immediately use it and then release it for later demands from other users processes.
Efficiency: The Operating system should attempt to maximize throughput, lower the response time, and accommodate as many users as possible in the case of time-sharing. These criteria conflict; finding the right balance for a particular situation is an ongoing problem for OS research.
Advantages of Operating System
Reduces startup time of application.
Operating System promotes abstraction by hiding irrelevant details of computer hardware from user
Improve system performance by maximizing processor utilization.
Provides memory protection by not letting any other processes intervene and alter the memory area containing the monitor.
It handles all the overhead of setting up an application to run.
Provides an interface through which client/user can access the system.
It also comes up with utility programs that assist programmers in developing application programs.
Disadvantages of Operating System
It has broadened memory access times, for example, page table query.
Need improvement with utilizing Translation Lookaside Buffer
It required protected page tables. Need more memory for the memory board.
The language used behind the Operating System makes it more complex.
Page Table Length Register needs to be bound with virtual memory size.
It required more significant improvement in staggered page tables and variable page sizes.
Some Operating Systems are really costly which makes them more expensive.
Fragmentation is another disadvantage of the Operating System.