操作系统之虚拟化CPU(一)介绍

但凡学习过计算机的人,一定都听说过一个问题,并发和并行的区别,此处引用知乎用户的关于吃饭的形象比喻,是的,你就是任劳任怨的CPU,而吃饭和接电话是你要执行的多个任务。

  • 你吃饭吃到一半,电话来了,你一直到吃完了才去接,说明你不支持并发也不支持并行(多个任务之间只能串行,必须要执行完A任务,再去执行B任务)ps:不能并发且不能并行的人,是会错过彩票中奖电话的噢~~
  • 你吃饭吃到一半,电话来了,你停下来接电话,接完电话继续吃饭,说明你支持并发(A任务还未执行完,可以保存进度并暂停去执行优先级更高的B任务,之后再恢复执行A任务,强调同一时间间隔内,可以执行多个任务)ps:饭凉了,也没中奖,但还行吧
  • 你吃饭吃到一半,电话来了,你一边吃饭一边打电话,说明你支持并行(AB任务同时执行)ps:我全都要!!!

终极目标当然是“我全都要!!!”,但对单核CPU而言,指令的执行是串行的,不可能支持多任务并行。那么能不能并发呢?操作系统告诉你,是可以的。在串行执行指令的CPU上并发地执行多个任务,便是操作系统虚拟化CPU技术提供的能力。在硬件的一些帮助下,操作系统负责提供一种假象:将单个CPU转换为看似无限数量的CPU,从而让许多程序看似在同时运行。这便是所谓的虚拟化CPU。

虚拟化CPU的原理其实很简单,就是时分共享(time sharing)。时分共享是操作系统共享资源的常用手段,在虚拟化CPU中,资源指的就是CPU资源,而共享资源的主体,就是各个程序。

在一段时间间隔里,把CPU资源分给A程序用一会儿,再分给B程序用一会儿,如此,在第三方看来,AB程序似乎是在同时执行。为了将这一需求较好地执行(不能混淆多个程序的内容,多个程序都应该可以正确地执行,达成一定的性能指标),操作系统需要一些低级机制和一些高级策略。

如何实现AB程序之间的切换,是操作系统进行CPU虚拟化的机制。如何决定是否该切换程序,应该切换到哪个程序继续执行,是操作系统进行CPU虚拟化的策略。然而要弄清楚这些机制和策略,我们必须首先明白,从操作系统的角度来看,程序到底是什么?这三点,其实就是CPU虚拟化操作的主要内容,会在后面的文章里一一说明。

你可能感兴趣的:(操作系统,操作系统)