《Windows核心编程》之“线程调度和优先级”

  “线程调度和优先级”这一章主要讲解 Windows 的线程调度的机制,特别是线程上下文切换(context switch)。由于 Windows 并非“实时操作系统”,在线程调度方面留给程序员操作的空间很少,因此,这一章对实际编程的帮助并不大,如果仅仅是想了解一些基本原理,建议通读一遍即可,或者仅阅读前面 4 个小节。

    本章最重要的一个概念就是“线程上下文切换”(context switch),我们可以如下来理解它:

1. 操作系统将 CPU 时间“分片”去执行线程代码;

2. 从前一个“时间片”到后一个“时间片”,往往需要执行不同(进程)线程的代码;

3. 执行不同线程代码就意外这“线程上下文切换”

4. 线程上下文是保存在线程内核对象中的一个结构体——CONTEXT,这个 CONTEXT 保存的是线程上一次执行时 CPU 寄存器的状态。

5. “线程上下文切换”的实际就是线程的“时间片”到期后,操作系统将当前 CPU 寄存器状态保存到当前线程内核对象的 CONTEXT 结构体中,然后退出当前线程,再将下一个需要执行的线程的 CONTEXT 读取到 CPU 寄存器。

 

 

最后我将用一张思维导图来总结线程调度和优先级相关的知识点。

《Windows核心编程》之“线程调度和优先级”_第1张图片

你可能感兴趣的:(Windows操作系统)