由于大型机的稀有和昂贵的价格,早起的大型机系统一般具有分时的能力。这意味着一台机器可以服务于多个用户,给每一个用户分配一个特定的时间片,在该时间片内某个用户的任务将被执行。一旦一个时间片消耗完毕,机器将会切换到下一个用户的任务。简单起见,可以理解为每个用户获得了一个虚拟机(VM),从每个用户的角度来看,他们每个人都像是拥有自己的大型机。
这样的大型机提供了一个Hypervisor(有点像操作系统的操作系统),用以协调多个虚拟机。由于这个原因,hypervisor又被认为是虚拟机管理器,简称为VMM (Virtual Machine Monitor)。从系统软件设计者的角度来看,Hypevisor简化了他们的工作,因为每个用户都是相互独立的,而且各自拥有简单的机器模型。Hypervisor为运行在大型机上的每个虚拟机分配CPU、内存、磁盘等硬件资源。即使是在大型机的早期,VMM也允许不同的操作系统同时运行在一台机器上。
当一个线程需要等待某个事件的发生,OS就会介入把当前线程设置为sleep状态,并启动另一个线程。当一个线程执行过程遇到问题,OS会介入要么纠正这个错误,要么终止当前进程。在任何一种情况下,结果可能都是一个不同的线程将被调度且执行。最后是硬件事件发生的情况,OS要么自己处理这个事件(定时器timeout的Case),要么把该事件转送给另一个线程(如设备驱动)。
在Hypervisor内部,和OS类似的一系列事件将会发生,只不过是在更高一级的层面上。此时我们讨论的不是OS和多线程,而是VMM和多个OS。VMM调度OS的运行,然后让出CPU的使用权。类似线程和OS的模型,一个OS不会永远下去,下面一些时间将会发生。