可以将OS线程限制为一个CPU坏吗?

时间:2015-09-03 20:23:03

标签: c windows multithreading winapi windows-server

让我们说我的Windows Server 2012 R2机器有8个逻辑核心。使用线程/进程关联,进程优先级和线程优先级,我可以设置7个应用程序线程在1-7核上运行,并将其优先级设置为实时/时间关键,这样它们就可以抢占所有操作系统线程并在这些线程上不间断运行核心。结果应该是操作系统只能在核心0上运行线程,并且没有任何应用程序线程阻塞。

如果我对亲和力和优先级的理解是正确的并且这种情况是可能的,那么这对操作系统来说会是一个问题吗?是否会影响任何系统行为?一个核心足够用于操作系统吗?

这样做的原因是消除上下文切换并确保环境始终具有相同的7个工作线程并行运行而不会中断且没有缓存冲突。

1 个答案:

答案 0 :(得分:0)

操作系统中调度程序的全部意义 - 这是一个高度活跃的研究领域 - 是为每个线程/进程创建一个幻觉,它可以<强>全部的CPU时间。正如@David Schwartz指出的那样,你否认调度程序能够做到这一点。

所以是的,它可能会对操作系统和系统行为造成问题 - 系统可能无法及时响应中断,并且某些与内核相关的任务(如写入磁盘)将会延迟。这可能反过来导致潜在的数据丢失(如果应用程序/系统崩溃)。