我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于是我想着,要不以后所有系列文章的开篇都先和大家聊聊历史吧。其实说来挺有意思,看过去到底是为了看未来,因为历史总是惊人的相似,几乎所有的问题都能够在历史长河中寻得答案。可惜的是,但凡历史,最是难写,笔者碍于能力有限,还望大家多指点一二。
一、什么是虚拟化?
在计算机科学中,虚拟化技术(Virtualization)是一种资源管理(优化)技术,将计算机的各种物理资源(e.g.CPU、内存以及磁盘空间、网络适配器等I/O设备)予以抽象、转换,然后呈现出来的一个可供分割并任意组合为一个或多个(虚拟)计算机的配置环境。
虚拟化技术打破了计算机内部实体结构间不可切割的障碍,使用户能够以比原本更好的配置方式来应用这些计算机硬件资源。而这些资源的虚拟形式将不受现有架设方式,地域或物理配置所限制。
虚拟化技术是一个广义的术语,根据不同的对象类型可以细分为:
平台虚拟化(PlatformVirtualization):针对计算机和操作系统的虚拟化。资源虚拟化(ResourceVirtualization):针对特定的系统资源的虚拟化,如内存、存储、网络资源等。应用程序虚拟化(ApplicationVirtualization):包括仿真、模拟、解释技术等,如Java虚拟机(JVM)。这里我们主要讨论的是平台虚拟化。首先提出第一个问题:当我们讨论平台虚拟化技术,实际在讨论什么?我认为讨论的是Hypervisor或称为VMM(VirtualMachineMonitor),本篇我们主要回顾VMM的发展历程,并思考之中的原因。
二、虚拟化技术发展编年史
1.开篇
年6月,牛津大学的计算机教授,克里斯·托弗(ChristopherStrachey)在国际信息处理大会(InternationalConferenceonInformationProcessing)上发表了一篇名为《大型高速计算机中的时间共享》(TimeSharinginLargeFastComputer)的学术报告,他在文中首次提出了“虚拟化”的基本概念,还论述了什么是虚拟化技术。这篇文章被认为是最早的虚拟化技术论述,从此拉开了虚拟化发展的帷幕。
克里斯·托弗还同时提出了Multi-Processing(多道程序)这一超前的概念,Multi-Processing解决了应用程序因等待外部设备而导致处理器空转问题,同时也解决了用户如何调试(Debug)代码的问题。即便在现在看来,多道程序的理念仍是操作系统在“并发”领域中的隗宝。
WhenIwrotethepaperinI,in