Windows 调度程序是否为线程分配相等长度的量程?

Windows 调度程序是否为线程分配相等长度的量程?

Windows 内核调度程序分配给线程的时间片(量子)是否对于每个线程都是相同的长度,还是像 Linux 一样根据线程的优先级来确定量子的大小?

答案1

自 Windows NT 时代以来,优先级较高的应用程序拥有更大的量程,例如前台线程。

定义了 32 个优先级,从 0 到 31,其中优先级 0 到 15 为“正常”优先级,优先级 16 到 31 为软实时优先级,需要特权才能分配。0 为操作系统保留。用户可以从任务管理器应用程序或通过线程管理 API 选择其中 5 个优先级分配给正在运行的应用程序。内核可以根据线程的 I/O 和 CPU 使用率以及线程是否为交互式(即接受和响应人类输入)来更改线程的优先级,从而提高交互式和 I/O 受限进程的优先级并降低 CPU 受限进程的优先级,以提高交互式应用程序的响应能力

在 Vista 中,调度程序利用现代处理器中的周期计数器寄存器,并能够估计线程每时钟周期使用多少个周期。这样,调度程序可以更公平地分配 CPU 时间。线程在被中断后可以运行另一个时间片,而在 Vista 之前,调度程序假定中断的线程运行了整个时间片。(这间接提高了被中断多次的线程的优先级。)Vista 还对 I/O 队列使用优先级调度程序,以便磁盘碎片整理程序和其他此类程序不会干扰前台操作。

资料来源:维基百科 调度Vista 内核改进

相关内容