Operating Systems: Evolution, Models & Families
Operating Systems: Evolution, Models & Families
This page introduces the responsibilities of an operating system and traces its historical development from early loaders to modern multiuser systems.
Responsibilities of an operating system
An OS manages and abstracts hardware resources. Its core functions include:
- Managing processes and CPU time.
- Managing memory and enforcing protection.
- Handling files and devices.
- Providing user interfaces and networking.
- Separating user space and kernel space.
Early desktop era
CP/M
The Control Program/Monitor (1974) loaded programs into memory and handed full control to them. After execution, CP/M had to be reloaded from disk. Only one program could run at a time.
DOS and BIOS
MS-DOS kept basic functions available while programs ran, making it more powerful than CP/M. BIOS stored firmware in ROM, providing boot code and device handling. Modern PCs use UEFI as a more complex successor.
Multitasking models
Cooperative multitasking
Programs voluntarily yield control back to the OS. If a program misbehaves, the system can freeze. Examples: Windows 3.x, classic Mac OS.
Preemptive multitasking
The OS controls CPU time and interrupts tasks as needed. This ensures fairness and responsiveness. Examples: Unix systems, Windows NT and later, AmigaOS, macOS X.
Unix family
Unix was created in 1969 after AT&T left the Multics project. Its design emphasized simplicity and portability. Over time, many descendants emerged:
- BSD variants (FreeBSD, NetBSD, OpenBSD).
- GNU/Linux distributions.
- Solaris, AIX, HP-UX.
- macOS and iOS (based on BSD and Mach).
- Android (based on Linux).
Unix popularized multiuser, multitasking systems and remains influential today.