Module 1 · Unit 1 · Lesson 2 of 5
Evolution of Operating Systems
How the modern operating system emerged from a sequence of hardware advances and design problems — and what that history tells us about the systems we use today.
01 Introduction
The operating systems we use today did not appear fully formed. They are the product of more than seventy years of evolution, driven by changes in hardware cost, hardware capability, and the kinds of problems users wanted to solve. Understanding that history is not merely cultural: each generation solved a specific problem, and the solutions of earlier generations are still present in the systems you use.
The story is roughly this: the first computers had no operating system at all. Users physically wired programs into the machine. Then came batch processing to reduce idle time, time-sharing to give interactive access, personal computing to put a machine on every desk, networking to connect those machines, and finally distributed, mobile, and cloud systems. Each stage was enabled by a technological advance and each raised new design questions.
02 Learning objectives
By the end of this lesson you will be able to
- Describe major stages in OS evolution.
- Compare batch and time-sharing systems.
- Explain technological drivers of OS development.
- Analyse the move toward distributed and cloud systems.
- Identify future trends.
This lesson contributes to U1.2 and course learning outcome CLO1.
03 Required reading
- Operating System Concepts — Chapter 1, Section 1.2, History of Operating Systems.
- OSTEP — Chapter 2, Introduction to Operating Systems (the discussion of virtualization sets up the historical framing).
04 Core content
4.1 Before operating systems (1940s–early 1950s)
The earliest electronic computers — ENIAC, EDVAC, and their contemporaries — had no operating system. A single program had exclusive use of the machine. The programmer prepared their work on plugboards or punched cards, loaded it into memory, started it manually, and watched the result. When the program finished, the next user took over.
Two features dominated this era: the machines were enormously expensive, and they were also enormously slow to set up. A significant fraction of the machine's available time was spent waiting for the human operator.
4.2 Batch processing (mid 1950s–1960s)
Batch processing was the first attempt to reduce idle time. Instead of running one program at a time with manual intervention between jobs, the operator collected a batch of jobs on punched cards and fed them to a small program — the resident monitor — that loaded and executed each in turn. When one job finished, the monitor automatically loaded the next.
The batch monitor is the direct ancestor of the modern kernel. It was the first program that stayed resident in memory and controlled the machine, and it introduced three ideas still central to operating systems:
- Job sequencing — deciding which job runs next.
- Memory protection — keeping the monitor safe from buggy user jobs.
- Interrupt handling — reacting to asynchronous events, such as the completion of I/O.
What batch processing did not solve
Throughput improved dramatically, but turnaround time — the delay between submitting a job and receiving its result — could be hours or days. Debugging was painful: a single misplaced comma might cost a day of waiting.
4.3 Multiprogramming and time-sharing (1960s–1970s)
Two related ideas transformed the field. Multiprogramming keeps several jobs in memory at once so that when one blocks on I/O, the CPU can switch to another. Time-sharing extends this by giving each interactive user a small slice of CPU time in rapid rotation, so each user has the illusion of a private machine.
Time-sharing is the conceptual foundation of essentially every general-purpose operating system in use today. It required several technologies that had to mature together:
- A hardware timer to interrupt a running program periodically.
- Memory protection to keep one user's program out of another's space.
- Reliable interrupt handling to make rapid switching feasible.
The landmark systems of this era — CTSS at MIT, Multics, and later UNIX at Bell Labs — established the model that the rest of the course builds on.
4.4 Personal computing and graphical interfaces (1970s–1990s)
The microprocessor changed the economics of computing completely. A machine that once cost millions now cost thousands, then hundreds. Instead of a large central machine shared by many users, every user could have a machine of their own.
Personal-computer operating systems — CP/M, MS-DOS, early versions of Mac OS and Windows — prioritised different goals than their predecessors. They emphasised responsiveness to a single user, friendly graphical interfaces, and support for a growing range of peripherals. Multi-user concerns were secondary.
UNIX, meanwhile, evolved in parallel and became the basis for high-performance workstations and — ultimately — for Linux. Its design philosophy of small composable tools, a uniform file interface, and a portable implementation proved remarkably durable.
4.5 Networking and distributed systems (1980s–2000s)
Once machines were connected, the operating system's scope expanded. It now had to provide protocols, sockets, remote file systems, and name resolution. The line between "the local machine" and "the network" began to blur.
Three consequences stand out:
-
Network transparency. UNIX's socket API made
network communication look almost like ordinary file I/O —
the same
read()andwrite()calls, plus a few new ones. - Distributed file systems. NFS, AFS, and later SMB allowed files to live on remote servers while appearing local.
- Client–server architecture. Applications split across machines: a client on the user's desktop, a server on a shared host.
4.6 Mobile, cloud, and virtualization (2000s–present)
Three trends have shaped the most recent era. They are not independent.
- Mobile operating systems
- iOS and Android prioritise energy efficiency, touch interaction, strict application sandboxing, and a managed permission model. They are descendants of UNIX, but their design constraints are radically different from a server's.
- Virtualization
- A hypervisor runs multiple guest operating systems on a single physical host. This decouples the software from the hardware it runs on and makes efficient use of large servers.
- Cloud computing
- Compute, storage, and networking are provided as on-demand services. The "operating system" of a cloud data centre is not one kernel but a distributed management layer — schedulers, orchestrators, and network controllers working together.
- Containers
- Linux namespaces and control groups make it possible to run isolated user-space environments on a shared kernel. Containers are lighter than virtual machines and have become the standard packaging unit for cloud-native applications.
4.7 Technological drivers
Each transition was enabled by a specific hardware advance. The pattern is worth noting because it repeats.
| Hardware advance | Operating-system consequence |
|---|---|
| Magnetic tape and card readers | Batch processing — automatic job sequencing |
| Hardware timer and interrupt controller | Preemptive multitasking and time-sharing |
| Memory-management unit (MMU) | Virtual memory, per-process address spaces |
| Microprocessor | Personal computing, single-user operating systems |
| Local-area networks | Sockets, distributed file systems, client–server |
| Hardware virtualization extensions (VT-x, AMD-V) | Efficient hypervisors, cloud infrastructure |
| Namespaces and control groups in the kernel | Containers, container orchestration, cloud-native apps |
4.8 Future trends
Several directions are actively shaping the next generation of operating systems. None is settled, but each is worth watching.
- Serverless and function-as-a-service platforms. The unit of deployment shrinks from a container to a function invocation. The operating system's role is increasingly mediated by a runtime scheduler running on behalf of the platform.
- Heterogeneous compute. GPUs, TPUs, and other accelerators are no longer optional. Managing them uniformly is an open problem.
- Persistent memory. Byte-addressable non-volatile memory blurs the line between memory and storage, forcing new file-system and memory-management designs.
- Confidential computing. Hardware enclaves and encrypted memory raise new questions about what the OS can and should see.
- Unikernels and library operating systems. Rather than a general-purpose kernel, a single-purpose application is compiled together with only the OS code it needs.
05 Worked example
Consider a small data-processing centre in 1965 and the same organisation in 2024. Compare what changed and why.
Two eras, one workload
- 1965. The organisation owns one mainframe. Jobs are submitted on punched cards and collected by an operator. Turnaround for a typical job is several hours. The machine is idle whenever a job blocks on I/O, unless a batch monitor happens to have loaded another job.
- 1975. Time-sharing has arrived. Engineers at their terminals can now edit and submit jobs interactively. Turnaround drops to seconds. The same mainframe serves dozens of users concurrently.
- 1990. Every engineer has a workstation on their desk. The mainframe has become a server. Files are shared over NFS. Email is ubiquitous.
- 2010. Compute has moved into a data centre. Virtual machines allow the same physical host to run workloads for multiple tenants, each isolated. Server utilisation rises from a few percent to well over half.
- 2024. The unit of deployment is a container running in a managed cluster. A job can be scheduled to any of thousands of nodes; resource requests are expressed declaratively; horizontal scaling is automatic.
At each stage, the change was enabled by hardware — the microprocessor, the local-area network, virtualization extensions, container primitives — and by a design decision about how to share resources safely.
Pattern to remember
Hardware provides a new capability. Somebody figures out how to expose it safely to many users. That design becomes the new operating-system abstraction. The pattern has held for seventy years and shows no sign of stopping.
06 Interactive activity
Activity · see the history in a modern Linux system
Modern Linux carries the fingerprints of every era. Find them.
-
Batch-processing legacy. Run
cat /etc/crontabandcrontab -l. Cron is the direct descendant of the batch monitor's job scheduler — a mechanism for running jobs on a schedule without human intervention. -
Time-sharing legacy. Run
whoandw. Both commands list the users currently logged in — a capability that only makes sense on a time-sharing system. -
Personal-computing legacy. Run
echo $DISPLAY. If it prints a value, you are in a graphical session. The X11 protocol was designed for workstation-era graphics. -
Networking legacy. Run
ip addrandss -tlnp. The second command lists listening sockets — network endpoints that any program can open using the same socket API introduced in the early 1980s. -
Container-era legacy. Run
ls /proc/self/ns/andcat /proc/self/cgroup. These are the Linux kernel features that make containers possible: namespaces and control groups.
Reflect: which of the seven evolutionary stages is most visible in the system you are using right now? Which is least visible, but still present?
07 Knowledge check
Check your understanding
Question 1
What specific problem did batch processing solve, and what problem did it leave unsolved?
Show answer
Question 2
Which hardware advance was the essential prerequisite for time-sharing, and why?
Show answer
Question 3
Distinguish virtualization from containerization in one sentence each. Which is the older idea?
Show answer
08 Unit discussion
Discussion prompt
Each era of operating systems was shaped by the hardware economics of its time. Today, cloud providers charge by resource-second and mobile devices are constrained by battery. Pick one modern constraint — energy, latency, cost, or regulation — and argue how it is likely to shape the next generation of operating-system abstractions.
Post your response to the Unit 1 discussion forum and reply to at least two classmates. This activity contributes to your participation grade and supports CLO1.
09 Practice exercise
- Timeline reconstruction. Without consulting your notes, write down the seven stages from memory in order. Then check against the lesson and correct any you missed.
- Match hardware to OS feature. For each of the following, name one OS capability it made possible: (a) magnetic tape, (b) MMU, (c) microprocessor, (d) LAN, (e) kernel namespaces.
- Read the UNIX philosophy. Find and read the original 1974 paper by Ritchie and Thompson, The UNIX Time-Sharing System. Write two paragraphs: one on what the design prioritised, and one on which of those priorities is still visible in Linux today.
- Compare two current systems. Compare the design constraints of a modern server operating system and a modern mobile operating system. List at least three differences and explain what historical or hardware factor drives each.
10 Summary
- The earliest computers had no operating system; programs were loaded and started manually.
- Batch processing introduced the resident monitor to reduce idle time — the direct ancestor of the modern kernel.
- Multiprogramming and time-sharing introduced preemption, interactive access, and the abstractions still central to general-purpose operating systems.
- Personal computing and graphical interfaces prioritised a single user's experience and drove a wave of consumer operating systems.
- Networking expanded the OS's scope to include protocols, sockets, and remote file systems.
- Mobile, virtualization, and cloud systems represent the current era, each shaped by a specific hardware advance.
- The recurring pattern: a hardware advance creates a new capability; a design decision exposes it safely to many users; that design becomes the next abstraction.
Looking ahead
Lesson 1.3 turns to the services a modern operating system provides, and how those services support the applications you write.
11 References
- Silberschatz, A., Galvin, P. B., & Gagne, G. Operating System Concepts, Chapter 1.
- Tanenbaum, A. S., & Bos, H. Modern Operating Systems, Chapter 1.
- Ritchie, D. M., & Thompson, K. The UNIX Time-Sharing System. Communications of the ACM, 1974.
- Arpaci-Dusseau, R. H., & Arpaci-Dusseau, A. C. Operating Systems: Three Easy Pieces, Chapter 2.