11 Dec 2015

The Rise and Fall of the Operating System

An operating system is an arbitrary black box of overhead that enables well-behaving application programs to perform tasks that users are interested in.

Historical perspective

… To address the feedback problem, time-sharing was invented. … The time-sharing operating system joggled between users and programs. thereby, poetic justice was administered: the computer was now the one context-switching, not the human. Going from running one program at a time to running multiple at the “same” time required

more complex control infrastructure
hauling programs in and out of memory depending on if they were running or not (swapping),
scheduling the tasks according to some notion of fairness
providing users with private, permanent storage (file system).

… 50 years ago … had the key concepts of current operating systems figured out.

if it is broken, don’t no fix it

the early time-sharing systems isolated users from other users…

… since the operating system deos not protect the user from evil or provide powerful abstractions, it fails its mission in the modern world. … imagine the world of computing as a shape sorter. In the beginning, all holes were square: …

… Yet, we are stilll fascinated by square-shaped pegs, and desperately try to cram them into every hole, regardless of whether they fit.

there is no such thing as number one

… even on the desktop, the square peg is not the correct shape. we know that the system will be used by a single person and that the system does not need to protect the user from non-existent other users. instead, the system should protect the user from malware, spyware, trojans, and anything else that can crawl up the network pipe.

conclusion

time-sharing systems were born over 50 years ago, a period from which we draw our concept of the operating system. Back then, hardware was simple, scarce, and sacred, and those attributes drove the development of the concepts of the system and the users…

the most revered feature of the modern operating system is support for existing applications. Minimally implemented application support is a few thousand lines of code plus the drivers … no reason to port and cram an operating system into every problem space. Instead, we can split the operating system into the “orchestrating system” (which also has the catchy OS acronym going for it) and the drivers. Both have separate roles. The drivers define what is possible. The orchestrating system defines how the drivers should work and, especially, how they are not allowed to work.