NT10内核抢占式多任务处理

时间:2018-02-27 21:43:31

标签: windows multitasking windows-server-2016 esxi

我正在参加我们使用Windows Server 2016和ESXi的操作系统课程

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

提出了一个问题,你是如何使用你的一台机器证明NT10内核使用抢占式多任务而不是合作的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

写一个简单的程序:

volatile unsigned i = 0;

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

编译它,并启动与您拥有的CPU核心一样多的副本。您的计算机无法锁定,您仍然可以运行其他应用程序(尽管性能下降)。这是一个很好的证据,证明您正在运行抢占式多任务操作系统。

这个程序只会像疯了一样浪费CPU周期,永远不会explicitly or implicitly yielding the CPU back to the system;在一个合作的多任务系统中,这将导致系统的完全锁定(一旦任务获得CPU,它就会保留它自己,永远不会让任何其他任务运行的机会)。

另一方面,在抢占式多任务处理系统中,您可以随心所欲地保留自己的CPU,但操作系统会定期将其取回(通常在某些定时器中断时),以便让其他任务运行。