操作系统与硬件虚拟化的关系

操作系统虚拟化位于操作系统的顶部。这种方式能极大的提升许多计算环境的服务器整合率和资源利用率。当用户使用虚拟化产品和解决方案时,操作系统虚拟化都与层相关。层指的是虚拟化应用的级别。以应用程序为基础的硬件虚拟化解决方案包括对现有操作系统处理的层和直接在硬件顶部运行的层。这就是大家所熟悉的“裸机”。

早期的单任务模式

早期的计算机其实并没有操作系统的,因为操作系统本身也使靠计算机硬件执行的一种程序,操作系统就是一种可以提供给其它程序方便编写并运行的程序,由程序来运行程序,而不是自己来运行,这其实就是操作系统提供的最早的一种虚拟化表现。

对于早期的计算机来说,只能运行执行一个任务,整个计算机只能被这个程序独占,例如开机,从软盘或者其它介质上执行程序,直到执行完毕或者人为终端,执行完后拿出戒指,才能再次插入另一介质,重新载入执行另一个程序,而在执行过程中,一旦发生意外,只能重新运行。

操作系统的多任务模式

操作系统的出现解决了很多问题,操作系统本身就是一个程序,计算机家电之后,首先先运行的是操作系统,随时可以载入其它程序执行,也就是说,它可以随时的从软盘上读取其它程序的代码,并切换到这段带马上让CPU执行,执行完毕后则立即切换回操作系统笨死,但是每次也总是要等待这个程序执行完毕,才能接着载入下一个程序执行。当被载入的程序执行的时候,不能做任何其它事情,暴扣操作系统本身的程序模块,任何产生中断的时间,都会中断正在运行的程序。

程序执行完毕之后,会将CPU使用权归还操作系统,从而继续操作系统本身的运行,这种操作系统成为单任务操作系统,典型代表就是DOS。

如今操作系统针对系统时钟中断,开发了专门的中断服务器程序,也就是多任务操作系统中的调度程序,时钟中断到来的时候,CPU根据中断向量表的内容,指向调度程序所在的地址入口,执行调度程序的代码,调度程序所做的就是将CPU的执行跳转到各个应用程序所在的内存地址入口,每次中断后,调度程序以一定的优先级,指向不通过的程序入口,这样就能做到极细粒度的应用程序入口切换,如果遇到某个程序还没执行完毕就切被切出了,则操作系统会自动将这个程序运行状态保存起来,待下次轮到的时候,提取出来继续运行。

通过这样的虚拟化,运行在操作系统之上的所有程序都会认为自己是独占一代计算机的硬件运行。

虚拟化的好处

上面介绍的计算机硬件及操作系统,其实计算机系统从诞生起就在不断的进行这虚拟化的过程,时至今日,计算机虚拟化进程依然在飞快的发展。

虚拟化的好处显而易见,虚拟化将下层的复杂逻辑转变为上层的简单逻辑,方便人类读懂,也就是说“科技,以人为本”。任何技术,都是为了将上层逻辑变得更加简单,而不是越变越复杂,当然使上层越简单,下层就要做更多的工作,就越复杂。