cpu虚拟化怎么开启步骤,cpu虚拟化怎么在设置里开

假设一个计算机只有一个 CPU(现代计算机有更多),但是同时有多个进程,虚拟化要做的就是将这个 CPU 虚拟成多个 CPU 并分给每一个进程使用,这样在每一个进程看来,他们都是在独自占用 CPU,事实上只有一个 CPU。

首先我们说一下时分共享(time sharing)CPU 技术,通过允许资源由一个实体使用一小段时间,然后由另一个实体使用一小段时间,如此下去。在这里,资源可以是 CPU,网络链接等。有时间当然就有空间,所以也就有空分共享,相信大家这时也可以理解这个概念了,例如磁盘,一旦将块分配给文件,在文件删除之前,不可能将它再分配给别人。

对于实现时分共享有很多的挑战,第一个就是性能(性能这个问题在任何时候都是非常重要的):如何在不增加系统开销的情况下实现虚拟化。另外一个问题就是控制权:在运行程序时,要保留对 CUP 的使用权。操作系统需要掌控对 CPU 的控制,及时在运行程序时,不能让程序肆无忌惮的使用 CPU,或者随意的访问没有权限的文件。综上两点,在保持控制权的同时获得高性能,这是最大的挑战。

接下来我们主要说一下“受限直接执行”这个机制。说白了,就是虽然程序直接运行在 CPU 上,但是是受限制的。这里我们不得不提一种处理器模式:“用户模式”与“内核模式”,在用户模式下运行的代码会受到限制,例如不能在用户模式下发出 I/O 请求。内核模式相当于非常大的权限,运行的代码可以做他想做的任何事,操作系统(或内核)就是在次模式下运行。所以我们的程序都是在用户模式下运行,当程序有 I/O 请求时,是如何解决的呢?

为了实现这一点,现在的硬件都提供了用户程序执行系统调用的能力。允许内核小心的向用户程序暴露某些关键功能,例如访问文件、创建进程等。当执行系统调用时,程序必须执行特殊的陷阱(trap)指令。执行这个指令同时进入内核模式,再执行特权操作。完成后,操作系统调用一个特殊的从陷阱返回的指令,再返回到用户模式。

接下来我们再看一个问题,就是操作系统如何进行进程切换的。这个问题看起来非常的简单,就是操作系统在不同的进程直接切换,但是实际上要非常棘手。最重要的就是进程的调度算法,这篇文章中不讲进程调度算法,我们会在下一篇文章中主要讲。

这里我们先看几个个图,简单说明如何进行进程调度的:

操作系统如何实现 CPU  的虚拟化

参考书籍:操作系统导论

这个图说的是操作系统启动时,操作系统与硬件是如何处理中断时钟的。下面我们看一个进程切换的图:

操作系统如何实现 CPU  的虚拟化

正如图那样,在两个进程间的切换就是如此简单:进程 A 正在运行,然后被中断时钟打断。硬件保存寄存器并进入内核。在时钟中断处理程序中,操作系统决定从在运行的 A 进程切换到 B 进程。同时恢复寄存器进程 B,​然后切换上下文。具体来说就是通过改变栈指针来使用 B 的内核栈​。最后操作系统从陷阱返回,恢复 B 的寄存器并​运行。

是的,在两个进程间就是这样切换的,如果我们的操作系统最多只支持同时运行两个进程,那么这个问题就不是问题了,但实际上,同时要运行的进程绝对不止两个。所以,最主要的问题出现了,如何​调度这么多的进程呢?也就是说,我们需要一个算法,这个算法在操作系统中,可以高效并稳定而且安全更加公平的调度进程​,从而达到对用户而言,多个进程在同时进行。著名的算法有几个,下一篇文章我们继续聊​。​(码字不易,感谢阅读)

本文地址:https://www.cknow.cn/archives/50437

以上内容源自互联网,由百科助手整理汇总,其目的在于收集传播生活技巧,行业技能,本网站不对其真实性、可靠性承担任何法律责任。特此声明!

如发现本站文章存在版权问题,烦请提供版权疑问、侵权链接、联系方式等信息发邮件至candieraddenipc92@gmail.com,我们将及时沟通与处理。