Electronic Joint Business

Solution for E-Business

Windows 7 用户模式调度机制 UMS

在 Windows7 x64 版本中,微软公开了用户模式调度这种有趣的机制。这种机制允许我们脱离内核模式线程调度,而在用户模式下编写自己的调度程序。在这段视频中, Windows 内核架构师 – Dave Probert – 解释了 UMS 的产生动机: 上下文切换在用户模式会更快,因为它不需要在用户模式和内核模式之间频繁切换。 用户模式调度引入了可提升性能的协作式多任务。现在你可以构想一种线程,除非在内核中被阻塞(例如等待IO操作完成),否则不会其他线程(来自同一组的 UMS)抢占。这有利于如创建更高效的锁。 自定义的调度程序可以更好地控制线程的执行。例如,我们可以编写轮循调度程序以公平的方式逐个选择线程(这对有实时性要求的程序非常有用)。或者调度程序可以针对应用程序的特定事件作出反应 — 这些事件内核模式调度程序一无所知。 有关 UMS API 的详细内容可以在MSDN上找到 概括地说:用户模式调度( User Mode Scheduling – UMS) 是种轻量级的机制,应用程序用它来调度自己的线程。如果 UMS 线程在内核中被阻塞的话,应用程序不需要调用系统调度,就能切换用户态下的 UMS 线程,重新获得处理器控制权 。与纤程不同的是,每个 UMS 线程都有它自己的线程上下文而不是共享单一线程的上下文。对于管理那些数量巨大、不太需要系统调用而且工作时间较短的工作单元,这种在用户态下切换线程的能力使 UMS 比线程池要高效得多。 请注意:目前 UMS API 仅存在于 64 位 Windows 7和 Windows Server 2008 R2 及以上版本。任何调用了 UMS API 的源代码,编译时请记得把目标机器设置为 […]

Leave a Reply

Your email address will not be published. Required fields are marked *