Virtualization
An History and Primer
I am tasked to lecture about the topic of "virtualization" in an Advanced Operating Systems course geared toward undergrads. Immediately, I am faced with a strange dilemma as I reread that course title. The words are vague! Certainly, the idea of "advanced" is challenging within a field, particularly this subfield, that moves as quickly as it does. Are obsolete systems no longer "advanced" as they become aged or obscure? Are they less rigorous, assuming the nature of "advanced" within the academy, when tooling abstracts them in some way?
Yet, it is the rest of the course title that, and you might think I'm joking and I'm certainly not, keeps me up at night. What is an "operating system" anyway? If Linux is an operating system and you run it inside a virtual machine, does it remain an operating system? If you put something inside a shell, where does the classical boundary between system and application get drawn? It is here, at this ambiguous frontier, that virtualization becomes both perilous and empowering. It is here that we are faced with redefining what operating systems actually are.
History
Mainframes: thought to be the only needed machine. Took up large rooms. Yet, the need to use the same machine for many purposes became common.
Timesharing -> virtualization (application isolation)
Ok, memory virtualization was first, as there wasn't much point to virtualizing anything else.
When computers get a bit more complicated... we need to virtualize more.
What is more expensive? Software or hardware. The great delimma.
Use-cases:
- Timesharing
- Software Testing
- Sandboxing
- Failover
- Archival/Preservation - emulation, legacy-systems for legacy software, etc
- Cloud Execution (and their platforms)
Software Licensing
(not important here, but possiblity important in a classroom setting)
Types
Full Virtualization
Para-virtualization
Hardware-assisted Virtualization
Hybrids
Modern hypervisors: Xen, KVM, VirtualBox/VMWare
UltraSPARC vs X86 (architectural challenges to virtualization: caching, complexity)
Meltdown/Spectre??
Containerization
LXC, Docker, other efforts
(vs. virtualization)
Tags
programming, programming/systems, programming/c
Comments
If you'd like to comment, just send me an email at wilkie@xomb.org or on either Twitter or via my Mastodon profile. I would love to hear from you! Any opinions, criticism, etc are welcome.
Donations
If you'd like to make a donation, I don't know what is best for that. Let me know.
Copyright
All content off of this domain, unless otherwise noted or linked from a different domain, is licensed as CC0