Operating Systems
-
An operating system (OS) is essential software that allows users and applications to interact with hardware
- Operating system user/computer interface
- Operating system resource manager
-
The OS sits between the hardware and all other user programs
-
An operating system must be modular/extensible
- This is so that it can adapt to new hardware, software, patches, etc.
Structure of an OS
User Applications
↑
System Programs (e.g., compilers, shells)
↑
System Calls (interface between apps and OS)
↑
Operating System
↑
Hardware (CPU, Memory, I/O Devices)
Traditional Operating Systems Services
CPU scheduling:
- Determines which process runs on the CPU and when
- Ensures fair and efficient CPU use
Memory management (e.g., virtual memory):
- Controls how RAM is allocated to different programs
- Enables execution of multiple programs simultaneously
Swapping:
- When RAM is full, the OS swaps data between RAM and disk
- Presents the illusion of a larger memory space
Input/output (I/O) device support:
- Manages communication with external devices (e.g. peripherals)
- Supports new devices through device drivers
- Drivers are hardware-specific programs that allow the OS to communicate with devices
File system management:
- Organizes and stores data on permanent storage
Utility programs (not core OS):
- Provide supportive functions like editors, compilers, or file browsers
Command interface:
- A way for users or developers to interact directly with the OS (e.g. Windows Terminal)
System calls:
- Interface between user programs and the OS
- Allow programs to request services
Security and protection:
- Prevents unauthorized access to hardware, memory, and files
- Protects system integrity against malware or faulty programs
Communication:
- Manages inter-process communication (IPC) within the system
- Enables communication between programs or across computers
History of Operating Systems
- Early Computers (1940s–1950s):
- No OS; programs were “wired” into machines or input using punch cards or paper tape
- Charles Babbage and Ada Lovelace are early visionaries of computing.
- Alan Turing (code breaking) and John von Neumann (stored-program model) are foundational figures
- 1950s–60s:
- Computers used valves, later replaced by transistors
- Introduction of higher-level programming languages and compilers
- Programs submitted in batches (batch systems)
- Multiprogramming and Time-Sharing:
- To reduce idle CPU time during I/O, multiple programs loaded in memory and switched between rapidly
- This time-sharing is what makes modern systems feel like they’re doing many things at once, even with a single CPU
Source: ChatGPT Summary of slides