科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道深入Windows Vista 内核

深入Windows Vista 内核

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这是系列文章的第一部分,探讨的是 Windows Vista内核中的新增内容。在这一期中,将着重说明在进程、线程和 I/O 方面的更改;在将来几期内容中将涉及到内存管理、启动和关闭、可靠性和恢复以及安全性方面的内容。

作者:zdnet安全频道 来源:论坛整理 2008年8月26日

关键字: 内核 Windows Vista Vista

  • 评论
  • 分享微博
  • 分享邮件

  Mark Russinovich 是 Microsoft平台和服务部门的技术人员。他是《Microsoft WindowsInternals》(Microsoft Windows 内部结构)(Microsoft Press, 2004) 的合着者之一,并经常在 IT 和开发人员会议上演讲。

  这是系列文章的第一部分,探讨的是 Windows Vista内核中的新增内容。在这一期中,将着重说明在进程、线程和 I/O 方面的更改;在将来几期内容中将涉及到内存管理、启动和关闭、可靠性和恢复以及安全性方面的内容。

  本文的范围仅限于对 Windows Vista? 内核的更改,尤其是对 Ntoskrnl.exe 和与其紧密关联的组件的更改。请记住,在 Windows Vista 中还存在许多其他重大更改,但这些却超出了内核的范围,因此本文将不予以说明。其中包括对外壳(如集成的桌面搜索)、网络(如新的 IPv6堆栈和双向防火墙)和下一代图形模型(如 Aero? Glass、Windows? Presentation Foundation、桌面窗口管理器和新图形驱动程序模型)的改进。而且未涉及的内容还包括新的 Windows 用户模式和内核模式驱动程序框架(UMDF 和 KMDF),因为在较早的 Windows 版本上它们在后级别才是可安装的。

  CPU 时钟周期计数

  Windows Vista 包含了进程和线程方面的大量增强功能,其中包括使用 CPU 时钟周期计数器以较公平地进行 CPU 分配,以及使用新的多媒体类计划程序服务 (MMCSS),它有助于媒体应用程序提供稳定的播放。

  所有 Windows NT? 版本,包括 Windows Vista 程序在内,大约在每 10 ms 或 15 ms(毫秒)执行一次间隔计时器中断例程,间隔取决于硬件平台。该例程查看它所中断的线程并更新线程的 CPU 使用统计数据,就好像该线程在整个间隔期间都在运行,而事实上,线程可能仅在间隔就要结束前才开始执行。而且,从技术上讲,可能已经为线程分配了 CPU,但却一直没有机会运行,因为执行的是硬件和软件中断例程。

  虽然对于报告线程和进程 CPU 使用情况的诊断工具来说,基于时钟的时间计算是一个好方法,但是,若由线程计划程序使用该方法将导致不公平的 CPU 分配。默认情况下,Windows 客户端版本上的线程最多可运行 2 个时钟节拍(如果是在前台中运行则为 6 个时钟节拍)。然而,根据线程在系统上的行为和其他活动,线程实际上可能在 CPU 上根本没有时间或是最多得到 6 个时钟节拍(如果是在前台中运行则为 18 个时钟节拍)。

  

  图 1 显示了两个具有相同优先级的线程同时准备好运行时发生的不公平情况。计划程序假定线程 A 在整个间隔期间内运行时,线程 A 一直运行到下一时间片间隔过期,因此也就可以确定线程 A 已运行完毕。而且,在线程 A 运行期间发生的中断应由线程 A 完全负责。在下一间隔内,计划程序挑选线程 B 来接续,并且要在整个间隔内运行。

  

  图 1 不公平的线程计划

  在 Windows Vista 中,计划程序使用现代处理器的时钟周期计数器寄存器精确地跟踪线程所执行的 CPU 时钟周期数。通过估计 CPU 在一个时钟间隔内能够执行的时钟周期数,它可以更准确地在 CPU 上布置轮循。另外,Windows Vista 计划程序不会根据线程的轮循计数中断执行。这就意味着,在 Windows Vista 上,线程始终会得到至少一次在 CPU 上运行的机会,而且永远不会执行多个额外时钟间隔,这使应用程序的行为更公平,也更具确定性。图 2 显示了 Windows Vista 如何响应图 1 中所示的情况,方法是为两个线程提供至少一个时间片的执行间隔。

  用户期望多媒体应用程序(包括音乐和视频播放器)能够提供无缝的播放体验。然而,其他同时运行的应用程序(如防病毒、内容索引甚至是邮件客户端)对 CPU的要求会带来不和谐的因素。 为了提供更佳的播放体验,Windows Vista引入 MMCSS 来管理多媒体线程的 CPU 优先级。

  像 Windows Media? Player 11 这样的多媒体应用程序使用能够表明其多媒体特性的新 API,通过 MMCSS 进行注册,它必须与下列按名称排列的注册表项之一匹配: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Multimedia\SystemProfile\Tasks

  

  各种任务注册表项可指定与不同多媒体类型相关联的线程为 CPU 和图形处理器资源获取的首选级别(尽管在 Windows Vista 中未实现图形处理器资源管理)。图 3 显示了在干净安装 Windows Vista 后其中一个任务注册表项的内容,尽管第三方开发人员能够添加自己的任务定义。

  图 3 多媒体类计划程序音频任务定义

  在 %SystemRoot%\System32\Mmcss.dll 中实现且在服务主机 (Svchost.exe) 进程中运行的 MMCSS 具有可在

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章