Windwos核心编程:(四)线程调度,优先级和关联性

        每个线程都有一个上下文(CONTEXT),后者保存在线程的内核对象中。这个上下文反映了线程上一次执行时CPU寄存器的状态。大约每隔20ms,Windows都会查看所有当前存在的线程内核对象,Windows在可调度的线程内核对象中选择一个,并将上次保存在线程上下文中的值载入CPU寄存器。


         线程执行代码,并在进程的地址空间中操作数据。又过了20ms,Windows将CPU寄存器存回线程的上下文,线程不在运行。系统再次检查剩下的可调度线程内核对象,选择另一个线程的内核对象,将该线程的上下文载入CPU寄存器,然后继续。载入线程上下文,让线程运行,保存上下文并重复的操作在系统启动的时候就开始,然后这样的操作不断重复,直至系统关闭。


        超线程:超线程处理器芯片有多个逻辑CPU,每个都可以运行一个线程。每个线程都有自己的体系结构状态,但是所有线程共享主要的执行资源,比如CPU高速缓存。当一个线程中止时,CPU自动执行另一个线程,无需操作系统干预。


线程优先级:

        每个线程都被赋予0(最低)~31(最高)的优先级数。首先查看优先级为31的线程,并以循环的方式进行调度。当较高优先级的线程占用了CPU时间,致使较低优先级的线程无法运行时,称为饥饿。


进程优先级分类:

real-time(实时)

high(高)

above normal(高于标准)

normal(标准)

below normal(低于标准)

idle(低)


相对线程优先级类别:

time-ciritcal

highest

above normal

normal

blew normal

lowest

idle

进程属于某个优先级类,可以指定进程中线程的相对优先级。 进程永远无法调度,能调度的只能是线程。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值