Windows 7 UMS (user-mode scheduling)

UMS线程有它们自己的内核线程状态,因此对于内核是可见的,这使得多个UMS线程都可以发出阻塞的系统调用、对资源进行共享或竞争,并且有每个线程特有的状态。然而,只要两个或多个UMS线程需要在用户模式下执行工作,它们可以周期行的切换执行环境(做饭是,一个线程让出执行权给另一个线程)而无需涉及内核调度器:环境切换在用户模式下完成。从内核的角度来看,同样的内核线程仍然在运行,一切都没有发生改变。当UMS线程执行需要进入内核的操作(比如系统调用)时,它切换到它的专属内核模式线程(称为定向环境切换)。

Windows 内核架构师 – Dave Probert – 解释了 UMS 的产生动机: 上下文切换在用户模式会更快,因为它不需要在用户模式和内核模式之间频繁切换。 用户模式调度引入了可提升性能的协作式多任务。现在你可以构想一种线程,除非在内核中被阻塞(例如等待IO操作完成),否则不会其他线程(来自同一组的 UMS)抢占。这有利于如创建更高效的锁。 自定义的调度程序可以更好地控制线程的执行。例如,我们可以编写轮循调度程序以公平的方式逐个选择线程(这对有实时性要求的程序非常有用)。或者调度程序可以针对应用程序的特定事件作出反应 — 这些事件内核模式调度程序一无所知。 有关 UMS API 的详细内容可以在MSDN上找到 概括地说:用户模式调度( User Mode Scheduling – UMS) 是种轻量级的机制,应用程序用它来调度自己的线程。如果 UMS 线程在内核中被阻塞的话,应用程序不需要调用系统调度,就能切换用户态下的 UMS 线程,重新获得处理器控制权 。

因此,对于管理那些数量巨大、不太需要系统调用而且工作时间较短的工作单元,这种在用户态下切换线程的能力使 UMS 比线程池要高效得多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值