什么是全虚拟化?虚拟化与多任务以及超线程有什么区别?

世界金属报网   2023-04-04 16:52:04

全虚拟化

我们以CPU为例。CPU的输入是CPU指令。CPU执行时,会读取CPU指令,改变寄存器和内存中的值。如果我们用软件来模拟,是用一个程序而不是CPU硬件来读取CPU指令,改变用内存表示的寄存器和内存中的值。在这个例子中,软件模拟的是CPU,内存模拟的是寄存器。软件读取指令后,会读取一张表,然后根据这个表来执行指令对应的操作。在CPU硬件中是没有这张表的。读取这张表又涉及到内存的访问。因此,用软件模拟的CPU会比真实的CPU慢许多个数量级。

像Vmware、VirtualBox这样的虚拟化软件在以前就是使用的全虚拟化。全虚拟化实现起来难度大,运行起来效率不高,但是它的兼容性很好,覆盖面广,可以虚拟化出几乎所有的硬件。

虚拟化与多任务以及超线程有什么区别

一、实现方式不同

多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的 CPU 或者是虚拟主机上;超线程技术只是单 CPU 模拟双 CPU 来平衡程序运行性能,这两个模拟出来的 CPU 是不能分离的,只能协同工作。

二、适用场景不同

虚拟化主要用于服务器的资源共享和利用,多任务则应用于每个用户的计算机上,而超线程主要适用于单个处理器的性能提升。

三、执行方式不同

1、多任务执行方式有两种:并发和并行

并发:在一段时间内交替去执行任务。

并行:对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的软件,多个内核是真正的一起执行软件。这里需要注意多核cpu是并行的执行多任务,始终有多个软件一起执行。

例如:对于单核cpu处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行0.01秒,再切换到软件3,执行0.01秒……这样反复执行下去。表面上看,每个软件都是交替执行的,但由于CPU的执行速度太快,感觉就像这些软件都在同时执行一样,这里需要注意单核cpu是并发的执行多任务的。

2、虚拟化的实现主要有两种方式:全虚拟化和硬件支持的虚拟化

对于IO虚拟化来说,还有第三种,那就是半虚拟化。全、半这两个字表示的是虚拟化和软件、硬件的关系。全虚拟化表示的是整个虚拟化都是用软件实现的,半虚拟化指的是整个虚拟化出来的硬件只有原有硬件的部分功能,硬件支持的虚拟化则是在硬件上深度集成对于虚拟化的支持。

3、超线程运作方式

每个单位时间内,一个单运行管线的CPU只能处理一个线程(操作系统:thread),以这样的单位进行,如果想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元。双核心技术是将两个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的多线程技术是在CPU内部仅复制必要的资源、让两个线程可同时运行;在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。

Intel自Pentium开始引入超标量、乱序运行、大量的寄存器及寄存器重名、多指令解码器、预测运行等特性;这些特性的原理是让CPU拥有大量资源,并可以预先运行及平行运行指令,以增加指令运行效率,可是在现实中这些资源经常闲置;为了有效利用这些资源,就干脆再增加一些资源来运行第二个线程,让这些闲置资源可执行另一个线程,而且CPU只要增加少数资源就可以模拟成两个线程运作。

精彩推送