我正在学习一门操作系统课程,在该课程中我们使用Windows Server 2016和ESXi
我们的设置是一台运行W2K16的机器升级到DC,一台直接在硬件上运行ESXi的机器和一台客户端机器。在ESXi机器上,我们还有两个额外的W2K16虚拟化副本,其中一个被提升为DC。
提出的问题是,您如何使用您的一台机器来证明NT10内核使用抢占式多任务而不是协作。任何帮助都将不胜感激。
发布于 2018-02-28 06:06:27
写一个简单的程序:
volatile unsigned i = 0;
int main() {
for(; ; ++i);
return 0;
}编译它,并启动与CPU核心一样多的副本。您的计算机不会锁定,您仍然可以运行其他应用程序(尽管性能有所下降)。这是一个很好的证据,证明您正在运行抢占式多任务操作系统。
这个程序只是像mad那样浪费CPU周期,而不是explicitly or implicitly yielding the CPU back to the system;在协作多任务系统中,这将导致系统完全锁定(一旦任务获得CPU,它就会将其保留给自己,而不会给任何其他任务留下运行的机会)。
另一方面,在抢占式多任务系统中,您可以随意保留CPU,但操作系统会定期将其取回(通常是在某些计时器中断时),以便让其他任务也运行。
https://stackoverflow.com/questions/49018421
复制相似问题