好文档 - 专业文书写作范文服务资料分享网站

了解 Windows Vista 内核:第一部分

天下 分享 时间: 加入收藏 我要投稿 点赞

了解 Windows Vista 内核:第一部分

概览:

线程优先级和计划 基于文件的符号链接 取消 I/O 操作

这是系列文章的第一部分,探讨的是 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 不公平的线程计划 1

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

图 2 Windows Vista 基于时钟周期的计划

“查看进程的 CPU 使用情况”边栏说明了用户如何通过使用 Process Explorer 实用工具监视进程的 CPU 时钟周期使用情况。

多媒体类计划程序服务

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

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

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\Currentversion\\Multimedia\\SystemProfile\\Tasks

图 A 查看 Process Explorer 中的 CPU Time 和 Cycles Delta

图 3 多媒体类计划程序音频任务定义 (单击该图像获得较大视图)

在 %SystemRoot%\\System32\\Mmcss.dll 中实现且在服务主机 (Svchost.exe) 进程中运行的 MMCSS 具有可在优先级 27 运行的优先级管理线程。(Windows 中线程优先级的范围是从 0 到 31。)此线程将已注册的多媒体线程的优先级推进到另一个范围内,该范围与任务注册表项(如图 4 所示)的计划类别值相关联。在 Windows 中,线程优先级 16 及更高级别处在实时优先级范围内并且高于系统上的其他所有线程(除了内核的内存管理器工作线程,该线程在优先级 28 和 29 运行)。仅管理帐户(如执行 MMCSS 的“本地系统”帐户)具有设置实时线程优先级所需的提升优先级权限。

Figure 4 MMCSS 线程优先级

在播放音频文件时,Windows Media Player 注册音频任务线程;在播放视频时,Windows Media Player 注册播放任务线程。对

了解 Windows Vista 内核:第一部分

了解WindowsVista内核:第一部分概览:线程优先级和计划基于文件的符号链接取消I/O操作这是系列文章的第一部分,探讨的是WindowsVista内核中的新增内容。在这一期中,我将着重说明在进程、线程和I/O方面的更改;在将来几期内容中将涉及到内存管理、启动和关闭、可靠性和恢复以及安全性方面的内容。
推荐度:
点击下载文档文档为doc格式
7roa93cxdo4ddq343gxc
领取福利

微信扫码领取福利

微信扫码分享