线程的调度和管理机制
- 线程
线程是操作系统可以进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以包含一个或者多个线程,每个线程执行不同的任务。 - 线程的调度和管理机制
-
Windows的线程调度机制是基于优先级的抢先式多处理器调度,依据优先级和分配时间片来调度,每个线程都有自己的优先级。
线程调度的原则:
(1).优先级调度原则:
每一个线程都有自己线程的基本优先级和动态优先级,允许线程在程序运行期间进行优先级的调整,而它们的值处于0到31之间,0到15是可变优先级类的线程,其优先值最多可以调整到15,而16到31是实时优先级类的线程,它的优先级是不可变的,值越高,优先级越大。
每个优先级都有一个队列,系统会从优先级最高的队列开始依次往下运行,首先运行优先级排在最高的队列队首的线程,当这个线程运行完之后,可能会降低其优先级或者将其重新排在队尾,然后再从优先级高的队列中取出线程执行,只有当更高优先级的队列运行完时,才会从更低的优先级队列中运行线程。
若某一线程长时间未执行,其线程优先级会被提高。
(2).时间片轮转原则:
仅仅有线程优先级原则是不够的,因为如果一些线程比较耗时,需要长时间的执行,那么他会一直占用CPU,导致其他线程不能够被及时的执行,或者是一直占着CPU不放导致的死机问题。
因此,必须要给线程设定一个合理的最大连续运行时间,这个时间就是线程的时间配额,一个线程最大允许连续运行这么长时间,当时间配额用完时,就可以切换