An operating system is a collection of programs which provide a platform where users can execute their task in efficient & convenient manner. This is done by managing hardware resources and providing common services to other programs.
Why do we need operating systems?
- Provides a high level abstraction of physical resources and standard facilities like: file system, standard libraries, management (memory, device, processor, file, performance), security, error detecting aids..
- Enable the construction of more and more complex software systems.
- Share limited and expensive physical resources wisely.
- Enable portable code which makes MS-DOS v.1.0 boot even on latest high Ghz processors.
- They are every where: Single functioned devices (Gaming consoles) or Multi function/application devices (Servers and workstations)
Timeline of O.S. development:
Phase 1 (1955-1970) : Hardware is expensive, humans are cheap
- Single user systems : Make efficient use of system by moving the person away.
- O.S. becomes batching systems : Loads users job, runs it & move to next.
- If program failed, record the contents of memory and saves it somewhere and also allowed overlap of I/O and computation.
- Were written in assembly language so no structured programming and difficult to debug.
Phase 2 (1970-1980) : Hardware and humans are expensive
- Interactive time sharing : Users have shared server and cheap terminals.
- Attempted to provide reasonable response time by avoiding thrashing.
- CTSS (Compatible Time-Sharing System) and MULTICS (Multiplexed Information and Computing Service) came into scene by MIT and Bell Labs.
- Development of Unix (By programmers for programmers).
Phase 3 (1980-1990) : Hardware is cheap and humans are expensive
- Personal computing : One system per user, CP/M (Control Program for Microcomputers) being first 8-bit O.S.
- OS becomes a subroutine library and command executive.
- Distributed computing: Lots of systems per user.
- Business applications like databases, spreadsheets came into scene.
Phase 4 (1990-20__) : Networked Systems
- Ubiquitous computing/Cloud computing : Users want to share data and not hardware
- Protection and multi programming less important for personal machines but more for server machines.
- Overall, connectivity is paramount.
“I think there is a world market for maybe five computers” – Tomas
J. Watson, 1943 (president of IBM)
Now, taking a brief look on types of operating systems described in above timeline :
Batch operating system
- No direct interaction of users with computers. They prepare job lists on offline devices (like punch cards) and submit it to computer operator.
- CPU is often idle, because the speeds of the mechanical I/O devices is slower than electronic devices.
- No priority for job execution can be easily provided.
- Increases CPU utilization by organizing jobs so that the CPU always has one to execute.
- It is the first instance where O.S. make decisions for users and thus it is quite complex.
- CPU scheduling and job scheduling.
Time-sharing operating systems
- It is a logical extension of multiprogramming.
- Main objective is to minimize response time of different jobs.
- Avoids duplication of softwares.
- Problem in reliability, data communication and security.
Multiprocessor Systems (Parallel Systems)
- Increases throughput : More work done in less time.
- Economical : Can share hardwares like of storage & power supplies if several programs uses same data. Also, more reliable as failure of one processor will not halt but only slows down the system.
- It is the broadly classified in two categories SMP (Symmetrical Multiprocessing) in which each processor runs identical copy of O.S. and AMP(Asymmetrical Multiprocessing ) in which each processor is assigned a specific task and there is master-slave relationship.
Distributed operating Systems
- Resource sharing facility : User from one place can utilize resource at other place.
- Reduction of delays in data processing and load on host system.
- It depends on networking for their functionality.
- Broadly divided into two categories : Client-Server and Peer-to-Peer Systems.
Real Time operating System
- Time interval required to process and respond to jobs is so small that it controls the environment.
- It has well defined time quanta and time constraints which keeps the system running .
- It is of two types : Hard Real Time System which guarantee the task is completed on time & it has no secondary or virtual memory. Soft Real Time Systems less restrictive and limited utility.