NT10内核预先进行的多任务处理



我正在参加我们与Windows Server 2016和ESXI

合作的操作系统课程

我们的设置是运行W2K16的一台机器,升为DC,一台直接在硬件和客户端计算机上运行ESXI。在ESXI机器上,我们还有两个额外的W2K16虚拟化副本,其中一份被提升为DC。

提出了这个问题,您如何使用一台机器证明NT10内核使用先发制人的多任务处理而不是合作。任何帮助将不胜感激。

写一个简单的程序:

volatile unsigned i = 0;
int main() {
    for(; ; ++i);
    return 0;
}

编译它,并启动与您拥有的CPU核心一样多的副本。您的计算机不会锁定,您仍然可以运行其他应用程序(尽管性能退化(。这是您正在运行先发制的多任务操作系统的一个不错的证据。

这个程序只是浪费了像疯狂这样的CPU周期,从未明确或隐含地将CPU恢复到系统中。在合作的多任务系统中,这将导致系统的完整锁定(一旦任务获得CPU,它就会自行保持它,从不给任何其他任务保留任何其他任务(。

>

另一方面,在先发制人的多任务系统中,您可以将自己的CPU保持在您想要的所有内容中,但是操作系统会定期将其收回(通常在某些计时器中断(以使其他任务也运行。

>

最新更新