【操作系统导论】CPU虚拟化

作者&投稿:安省 (若有异议请与网页底部的电邮联系)

CPU虚拟化就是对系统中的有限的物理CPU进行虚拟化,让系统中的多道程序都误认为自己占用了CPU资源。
CPU虚拟化的关键是对运行程序的抽象,即进程的概念,然后,系统需要保证多个进程可以独立的、不受干扰的运行,最后CPU如何调度这些进程,合理利用有限的CPU资源。

进程就是运行的程序,是程序在某一个数据集上的执行过程。

阻塞 状态也可以直接进入 运行 状态,这取决于系统的调度策略。

有了进程之后,我们可以让一个进程运行一段时间,然后切换另外一个进程运行一段时间,因为CPU的速度很快,所以看起来这些进程就像在同时运行一样。
现在的问题是,我们怎么样实现快速的进程切换,即 性能 问题。还有一个问题,操作系统必须拥有绝对的控制权,如何才能实现系统在执行用户程序的时候,操作系统还能重新获得CPU控制权呢?即 控制权 问题。

CPU存在两种模式(硬件支持): 用户模式 内核模式 。用户模式下运行的程序需要执行 陷阱 指令,才能进入内核模式。由于加入了硬件机制,此时操作系统可以掌控CPU。

时钟中断 ——操作系统打断正在运行的进程,获得CPU控制权。

中断发生时,硬件可以捕获到中断号,利用中断向量表(上图中的陷阱表),找到处理此中断的处理程序。

上下文切换:操作系统为当前正在执行的进程保存一些寄存器的值,并为即将执行的进程恢复一些寄存器的值。

请注意,在此协议中,有两种类型的寄存器保存/恢复。第一种是发生时钟中断的时候。在这种情况下,运行进程的用户寄存器由硬件隐式保存,使用该进程的 内核栈 。第二种是当操作系统决定从A切换到B。在这种情况下,内核寄存器被软件(即OS)明确地保存,但这次被存储在该进程的 进程结构的内存(进程控制块PCB) 中。后一个操作让系统从好像刚刚由A陷入内核,变成好像刚刚由B陷入内核。
Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

一个评价指标:周转时间——任务完成时间减去任务到达时间。

另外一个评价指标: 响应时间 ——从任务到达系统到首次运行的时间。 交互性。

1.编写一个调用fork()的程序。在调用fork()之前,让主进程访问一个变量(例如x)并将其值设置为某个值(例如100)。子进程中的变量有什么值?当子进程和父进程都改变x的值时,变量会发生什么?

2.编写一个打开文件的程序(使用open()系统调用),然后调用fork()创建一个新进程。子进程和父进程都可以访问open()返回的文件描述符吗?当它们并发(即同时)写入文件时,会发生什么?

3.使用fork()编写另一个程序。子进程应打印“hello”,父进程应打印“goodbye”。你应该尝试确保子进程始终先打印。你能否不在父进程调用wait()而做到这一点呢?

4.编写一个调用fork()的程序,然后调用某种形式的exec()来运行程序/bin/ls。看看是否可以尝试exec()的所有变体,包括execl()、execle()、execlp()、execv()、execvp()和execvP()。为什么同样的基本调用会有这么多变种?

5.现在编写一个程序,在父进程中使用wait(),等待子进程完成。wait()返回什么?如果你在子进程中使用wait()会发生什么?

6.对前一个程序稍作修改,这次使用waitpid()而不是wait()。什么时候waitpid()会有用?

7.编写一个创建子进程的程序,然后在子进程中关闭标准输出(STDOUT_FILENO)。如果子进程在关闭描述符后调用printf()打印输出,会发生什么?

8.编写一个程序,创建两个子进程,并使用pipe()系统调用,将一个子进程的标准输出连接到另一个子进程的标准输入。



~

【操作系统导论】CPU虚拟化
答:CPU虚拟化就是对系统中的有限的物理CPU进行虚拟化,让系统中的多道程序都误认为自己占用了CPU资源。 CPU虚拟化的关键是对运行程序的抽象,即进程的概念,然后,系统需要保证多个进程可以独立的、不受干扰的运行,最后CPU如何调度这些进程,合理利用有限的CPU资源。进程就是运行的程序,是程序在某一个数...

如何开启cpu虚拟化(如何在BIOS中开启CPU虚拟化)
答:步骤一:进入BIOS设置界面 首先,我们需要重启计算机,并在开机过程中按下相应的按键进入BIOS设置界面。不同品牌的计算机可能使用不同的按键,常见的有F2、F10、Del等。步骤二:找到虚拟化相关的设置项 在BIOS设置界面中,我们需要找到虚拟化相关的设置项。不同品牌的计算机可能设置的位置不同,但通常可以在...

cpu虚拟化有什么用
答:1、资源利用率提高:通过CPU虚拟化,可以在一台物理服务器上运行多个虚拟机,每个虚拟机都可以独立运行操作系统和应用程序。这样可以更充分地利用物理服务器的计算资源,提高服务器的利用率,减少硬件投资成本。2、隔离和安全性:虚拟机之间是相互隔离的,每个虚拟机都在自己的虚拟环境中运行。这样可以提供更...

cpu虚拟化技术是什么
答:CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。举一个简单的例子,在Windows Vista里,通过软件,同时安装XP、Linux等操作系统,当需要使用时直接调用,但并非重启电脑切换操作系统 参考资料...

什么是cpu的虚拟化技术,有什么优势???
答:每个分区均可以按照需要模拟电脑的一项技术。它的技术实质是通过中间层次实现计算资源的管理和再分配,使资源利用实现最大化。CPU的虚拟化技术的优势为虽然虚拟化可以通过软件实现,但是CPU硬件支持的话,执行效率会大大提升,也可以支持64位操作系统。

虚拟化是什么,CPU开启虚拟化和关闭虚拟化对电脑有影响吗?具体有什么...
答:虚拟化简写是VT(Virtualization Technology)。它是英特尔在其用户平台上开发的一个虚拟化支持系统,旨在帮助在硬件层面实现虚拟化技术。在此之前,虚拟化只能使用软件来虚拟化底层架构,为CPU启用虚拟化对实际使用没有明显的影响。例如,只有当您使用VM虚拟机时,它才会产生影响,因此,关闭虚拟化并不能提高...

cpu 虚拟化技术是指什么?
答:所谓虚拟化,是指将单台电脑软件环境分割为多个独立分区,每个分区均可以按照需要模拟电脑的一项技术。它的技术实质是通过中间层次实现计算资源的管理和再分配,使资源利用实现最大化。虚拟化分区带来的最大好处是使同一个物理平台能够同时运行多个同类或不同类的操作系统,以分别作为不同业务和应用的支撑...

cpu 虚拟化技术
答:微软针对这一要求开发了虚拟系统,即可对XP进行操作,在适应了最新的操作系统后又可对小7进行操作,充分体现了微软研发团队对小7的信心 答案02:WINDOWS 7有一功能就是模拟WINDOWS XP模式。这是需要CPU的虚拟化功能的,E7400等CPU不具备。但是并不影响WINDOWS 7正常运行,只是不能使用这项功能。答案03:VT...

CPU如何开启虚拟化
答:虚拟化(Virtualization)是一种资源管理技术,CPU虚拟化的开启,不但是要CPU支持,还要主板本身也支持虚拟化的功能。这个功能是需要进入主板的BIOS高级选择中开启的,下面介绍七彩虹 Z170烈焰战神X 中的操作方法:1.开机或重启显示器出现第一画面,马上按delete 键,就可以进入到bios的界面中,可以在这个...

win7系统下CPU开启虚拟化功能的方法
答:推荐:雨林木风win7旗舰版系统下载1、CPU是否具有虚拟化功能怎么判断呢?我们可以通过“securable”工具来检测CPU是否具有虚拟化功能;2、双击运行“securable”程序,在打开的程序主界面中就可以查看CPU是否支持虚拟化功能,如图所示,出现“YES”绿色标记,就表明CPU具有虚拟化功能;3、怎么开启CPU虚拟化功能呢...