1.2 What Is an Operating System?
– Conceptual Summary
Definition:
An Operating System (OS) is the software layer that sits between hardware and
applications, allowing programs to run safely, efficiently, and concurrently.
Key Roles of an OS:
Acts as a bridge between user applications and computer hardware.
Provides services to applications.
Ensures safe, secure, and efficient execution.
Acts as a resource manager (manages CPU, memory, I/O devices).
The kernel is the core part of the OS that directly controls the hardware.
Analogy:
Think of the OS as a traffic controller — it makes sure that multiple applications (cars)
don’t crash into each other while using the same road (hardware).
To Users:
It’s a "black box" — users give input and get output without needing to know how hardware
and software are coordinated internally.
1.3 Early History (1940s–1950s)
Before OS (1940s):
No operating systems.
Programmers entered code manually using switches or punched cards.
Programs were written in machine language, later improved with assembly
language.
First OS (1950s):
First OS by General Motors for IBM 701.
Systems were single-job, batch processing systems:
o Jobs were submitted in batches using tapes/disks.
o Job Control Language (JCL) helped define and manage jobs.
o Once a job ended, the OS prepared the system for the next job.
Limitations:
Programs needed to be fully loaded into memory to run.
Programmers manually managed resources, making it slow and complex.
Only small and simple programs could be run due to memory constraints.
1.4 Operating Systems in the 1960s – Summary
🌟 Key Evolution: From Batch to Multiprogramming and Timesharing
🖥️ Batch Processing Gets Smarter
Problem: Jobs waited for I/O → CPU idle time → inefficient resource use.
Solution: Multiprogramming — multiple jobs loaded in memory; while one waits
for I/O, another uses the CPU.
Result: Better CPU and device utilization.
🔄 Types of Jobs
CPU-bound jobs: Use more processing power.
I/O-bound jobs: Use more input/output operations.
Mixing them → maximizes system efficiency.
⚠️ Problem of Sharing:
Shared resource use could cause deadlocks (a job waits forever for a resource).
Introduced process concept — programs in execution.
👨💻 User Interaction Begins: Timesharing Systems
Users now interact with the system in real time using "dumb terminals".
Timesharing allowed multiple users to use the computer simultaneously with fast
response times.
Significance: Marked shift toward interactive computing.
⏳ Turnaround Time Reduced
From days to minutes → faster development.
Programmers could now debug and re-run code quickly.
💡 Major Systems Introduced
System Developers Notability
CTSS MIT First time-sharing OS
TSS IBM Timesharing support
Multics MIT, GE, Bell Labs Inspired UNIX; introduced "process", high-level OS development
System Developers Notability
CP/CMS IBM Cambridge Center Basis for IBM VM OS
� Major Innovations
Virtual Memory: Let programs use more memory than physically available.
o Programs no longer limited by physical memory size.
o Freed programmers from manual memory management.
Multics: First major OS in a high-level language (EPL → led to C → UNIX).
UNIX: Developed from lessons of Multics, became foundation for many modern OS
(Linux, BSD, etc.).
� Easy Memory Aids
Concept Memory Hook
Multiprogramming CPU-switching between waiting jobs
Timesharing Many users, one system, fast feedback
Virtual Memory Illusion of more memory than actually present
Multics "Mother" of UNIX and virtual memory
Process A program in execution (coined in this era)
🎯 Final Takeaway:
The 1960s turned computers from slow, single-job machines into fast, multi-user, multi-
job systems with interactive use, process management, and memory virtualization —
setting the stage for modern OS design.
Evolution of Operating Systems (1970s – 2000s+)
📟 1.5 – The 1970s: Networking, Security, and Multiprogramming
Main features:
o Systems supported batch, real-time, and timesharing modes.
o Rise of networking with:
TCP/IP (by DoD) → communication between remote computers.
Ethernet (by Xerox PARC) → enabled Local Area Networks (LANs).
o Security risks increased due to data over networks.
Solution: Encryption to protect private data.
Start of personal computing: Apple II appears late in the decade.
� Memory Tip:
"TCP/IP & Ethernet brought computers together; encryption kept secrets safe."
🖥� 1.6 – The 1980s: Personal Computing & GUI
Personal Computers (PCs) exploded (IBM PC in 1981, Apple Macintosh in 1984).
GUI (Graphical User Interface) became common (Windows, icons, mouse).
Enabled easy learning and user productivity.
Rise of distributed computing: Data processed where it is created (client-server
model).
Networking, e-mail, file transfer became common.
OS began supporting multiple concurrent users and plug-and-play features.
� Memory Tip:
"GUI made PCs personal; distributed computing made them powerful."
🌐 1.8 – The 1990s: Internet, Open Source, and Object Technology
Internet and Web changed everything:
o Distributed computing became mainstream.
o OS support for networking became standard.
Security threats increased → OS needed to guard against attacks.
Microsoft dominance: Windows 3.1, 95, 98, NT → became popular on desktops and
in companies.
Object-Oriented OS: Modular, maintainable, extendable using languages like C++
and Java.
Open-source movement:
o Led by Richard Stallman (GNU) and Linus Torvalds (Linux).
o OS like Linux became viable free alternatives.
o Developers could modify and customize the source.
� Memory Tip:
"The ‘90s went online: Windows ruled, Linux rose, and open-source broke barriers."
📱 1.9 – 2000 and Beyond: Middleware, Web Services, and Mobile Computing
Middleware: Software connecting web servers and databases.
Web services: Allow apps to talk over the Internet using standard protocols (e.g.,
Amazon, Google APIs).
Concurrency & Threads: Languages like Java support multithreading.
Massive parallelism: Multiprocessor systems became common.
Mobile computing (phones, PDAs):
o Increasing power, but limited resources.
o Distributed computing helps mobile devices offload work to the cloud.
OS trends:
o User-friendly features like search, 3D UI, security, and plug-and-play.
o Standardization with APIs (e.g., POSIX) for cross-platform compatibility.
� Memory Tip:
"From desktops to devices, the OS now connects, protects, and distributes work."
📊 Quick Timeline Chart
Decade Key Focus Technologies
1970s Networking & Security TCP/IP, Ethernet, Encryption
1980s Personal Computing GUI, PCs, Distributed Systems
1990s Internet & Open Source Windows, Linux, Object-Oriented OS
2000s+ Web Services & Mobility Middleware, Threads, Mobile OS
1.11 Operating System Environments
💻 General-Purpose Systems
PCs and workstations with large memory, fast CPUs, disks, and peripherals.
Used for personal and business tasks.
🖥� High-End Servers
Handle large memory, special hardware, many processes (e.g., databases, web
servers).
Need efficient multiprocessor support.
📲 Embedded Systems
Run in devices (like phones, PDAs).
Have limited storage, power, and memory.
Need to be compact, efficient, and responsive.
� Real-Time Systems
Must respond within strict time limits.
Hard real-time: deadlines must be met (e.g., nuclear monitoring).
Soft real-time: deadlines are important but not guaranteed (e.g., video streaming).
🌐 Business-Critical Systems
E.g., e-commerce websites, company databases.
Need to be reliable and fast, but failure is not life-threatening.
� Virtual Machines (VMs)
Simulated computers inside real ones.
Promote portability (e.g., JVM allows Java to run anywhere).
Examples: JVM, VMware.
Downside: slower than real hardware due to indirect access.
� Memory Tip:
"Real-time needs speed, Embedded needs lightness, Virtual needs flexibility."
🛠� 1.12 Operating System Components and Goals
🔧 Core Components of OS (Kernel responsibilities)
Component Purpose
Process Scheduler Decides which process runs and when.
Memory Manager Manages RAM allocation and protection.
I/O Manager Handles device input/output.
File System Manager Organizes and accesses data files.
IPC Manager Manages communication between processes.
� Threads
Lightweight tasks inside a process sharing memory.
Example: Browser thread for images, text, and layout.
📀 Disk Management
Uses Disk Scheduler to speed up I/O.
Uses RAID (multiple disks) to reduce wait time.
🔄 Interprocess Communication (IPC)
Allows processes/threads to share data and messages safely.
Ensures proper synchronization.
🎯 Goals of an Operating System
Goal Meaning
Efficiency High throughput, low delays.
Robustness Handles failures gracefully.
Scalability Works well with growing users/processes.
Extensibility Easy to add new features.
Portability Can run on different hardware.
Security Protects data from unauthorized access.
Interactivity Responds quickly to user inputs.
Usability Easy for users and developers to work with.