Answers:
并不是说CPU正在阻塞程序;而是CPU正在阻塞程序。它没有这么低的应用程序概念。问题在于非Linux操作系统上的 Docker 可能需要硬件虚拟化。您尚未指定操作系统,但是我做了一点监听,发现您可能使用Windows。
硬件虚拟化是一种CPU功能,您可能会从名称中猜到它可以使CPU帮助进行虚拟化。在许多计算机上,必须在BIOS中启用它。这部分是为了防止安全问题。基本上,您无法启动程序,因为它试图使用实际上不存在的功能而不是主动阻止的功能。
a tiny bit of snooping
Ha..ha
Ben N答案显然是最有用和最明确的答案。
对于那些仍然感到疑惑的人,这里是全文。
虚拟化是在CPU的硬件协助下实现的。由于虚拟化的操作系统会干扰主机,因为它们竞争相同的资源,因此需要一种机制来阻止来宾对硬件进行不受控制的访问。这可能由于软件,速度慢,技术问题或CPU的帮助而降低。
硬件辅助虚拟化与具体,实施可选的说明,您可以在章节23,24,25,26,27和28读到它的英特尔手册3B第3部分。在尝试使用这些说明之前,软件必须首先检查该说明是否受支持。
出于安全原因,CPU有一个特殊的寄存器,它是一个MSR,称为 IA32_FEATURE_CONTROL保存位与功能可以启用或禁用告诉。
报价单
位0是锁定位。如果清除此位,则VMXON会导致常规保护异常。如果设置了锁定位,则此MSR的WRMSR会导致一般保护异常;在上电复位条件之前,不能修改MSR。系统BIOS可以使用此位为BIOS提供设置选项,以禁用对VMX的支持。要在平台上启用VMX支持,BIOS必须设置位1,位2或两者(见下文)以及锁定位。
基本要点是,一旦锁定了寄存器,就无法在上电之前将其解锁。
由于BIOS / UEFI排在第一位,因此它可以通过清除适当的位并在任何OS可以阻止它之前锁定寄存器来禁用虚拟化。当以这种方式禁用虚拟化功能时,CPU报告它缺少可选的指令扩展名(如果使用了扩展名,则实际上是错误),因此软件无法使用硬件虚拟化。