Source Details
- Video Title:
- Operating Systems: Crash Course Computer Science #18
- Channel/Author:
- CrashCourse
- Publication Date:
- Jun 29, 2017
- URL:
I. Introduction: The Genesis of Operating Systems
Early computers (1940s-early 1950s) were incredibly inefficient in their operation. Programmers would manually load one program at a time, a process that "took longer than running the actual programs themselves" as computers became faster. This manual bottleneck led to the necessity of Operating Systems (OSes), which are "just programs" but possess "special privileges on the hardware [that] let them run and manage other programs." They are typically the first program to start and launch all subsequent programs.
II. Key Milestones and Core Functionalities in OS Development
A. Batch Processing (1950s): Overcoming Manual Loading
The very first OSes addressed the inefficiency of manual program loading. Instead of one program at a time, computers could handle "batches," automatically and instantly starting the next program upon completion of the previous one. This "batch processing" eliminated "downtime while someone scurried around an office to find the next program to run."
B. Device Drivers and Hardware Abstraction: Simplifying Programming
As computers became more widespread, their configurations varied. Programmers faced the immense challenge of writing code that could interface with "each and every model of printer, and all devices connected to a computer, what are called peripherals." This "very low level" interaction was a "huge pain for programmers."
Operating Systems stepped in as "intermediaries between software programs and hardware peripherals." They provided a "software abstraction, through APIs, called device drivers," allowing programmers to interact with hardware using "standardized mechanisms" (e.g., calling "print highscore" and letting the OS handle the specifics). This fundamentally simplified software development.
C. Multitasking (Late 1950s/Early 1960s): Maximizing CPU Utilization
Even with batch processing, expensive CPUs often sat "idle waiting for slow mechanical things, like printers and punch card readers." The Atlas Supervisor (finished 1962, University of Manchester) was a pioneering OS that could "run several [programs] at the same time on its single CPU" through "clever scheduling."
Mechanism: When a program was "blocked on I/O" (e.g., waiting for a print job), the Atlas Supervisor would "put our program to sleep, then selects and runs another program that’s waiting and ready to run." Once the I/O completed, the original program would be marked "ready to go" and eventually rescheduled.
Impact: This capability, known as multitasking, allowed a single CPU to efficiently manage multiple operations simultaneously (e.g., one program calculating, another printing, another reading data).
D. Memory Management: Virtual Memory and Memory Protection
Multitasking necessitated a robust way to manage program data in memory. The solution was to "allocate each program its own block of memory."
Virtual Memory: To simplify programming, OSes "virtualize memory locations." Programs can "assume their memory always starts at address 0," while the OS and CPU handle the "virtual-to-physical memory remapping automatically." This allows for "flexible memory sizes, called dynamic memory allocation, that appear to be continuous" to the program, even if physical blocks are non-sequential. Atlas was the first computer/OS to support this.
Memory Protection: Allocating distinct memory blocks also provides "better isolated" programs. "If a buggy program goes awry... it can only trash its own memory, not that of other programs." This feature is crucial for stability and security, "protecting against malicious software, like viruses." Atlas also pioneered this feature.
E. Time-Sharing (1970s): Enabling Multi-User Interaction
As computers became "sufficiently fast and cheap," institutions could allow "several users simultaneous, interactive access" via terminals. OSes introduced time-sharing, where "each individual user was only allowed to utilize a small fraction of the computer’s processor, memory, and so on." Even small fractions of resources were sufficient due to computer speed.
Multics (Multiplexed Information and Computing Service, 1969): The "most influential of early time-sharing Operating Systems," Multics was "the first major operating system designed to be secure from the outset." Its focus on security and comprehensive features made it "over-engineered" and complex, leading to its large memory footprint (1 Megabit, potentially half a computer's memory).
F. Unix (1971): The Lean Kernel Approach
Inspired by Multics' complexity, Dennis Ritchie and Ken Thompson created Unix, aiming for a "new, lean operating system." They separated the OS into two parts:
- Kernel: The "core functionality of the OS, things like memory management, multitasking, and dealing with I/O."
- Bundled Tools: "A wide array of useful tools that came bundled with, but not part of the kernel, things like programs and libraries."
The intentional "leaving some functionality out" (e.g., extensive error recovery, leading to "kernel panics") allowed Unix to "be run on cheaper and more diverse hardware," contributing to its popularity.
G. Personal Computing OSes (1980s): Simplicity and Trade-offs
The advent of personal computers (PCs) in the early 1980s necessitated simpler OSes due to hardware limitations.
MS-DOS (Microsoft Disk Operating System, 1981): At "just 160 kilobytes," MS-DOS was the most popular early home computer OS. However, it "lacked multitasking and protected memory," meaning "programs could, and would, regularly crash the system." This was an "acceptable tradeoff" for individual users who could simply reboot their own machines.
Early Windows (1985 onwards): Similarly, early versions of Windows "lacked strong memory protection," leading to "the blue screen of death" when programs crashed the entire OS. Modern Windows versions have significantly improved protections.
III. Modern Operating Systems: The Legacy of Innovation
Today's OSes (e.g., Mac OS X, Windows 10, Linux, iOS, Android), even on single-user devices, incorporate the crucial features developed over decades: "multitasking and virtual and protected memory." These foundational innovations enable the concurrent execution of numerous applications we rely on daily (e.g., "watch YouTube in your web browser, edit a photo in Photoshop, play music in Spotify and sync Dropbox all at the same time"). This sophisticated functionality is a direct result of "decades of research and development on Operating Systems."