Windows 处理器管理
处理器是计算机系统核心资源
处理器管理是操作系统的重要组成
处理器管理的工作是对处理器资源进展合理的分配使用使各用户 (任务) 公平地得到处理器, 提 高处理器的利用率 。
第一页,共八十四页。
其优先级别为 0, 保存给对系统中空闲物理页面进展清零的零页线程 ;
可变级别 , 其优先级别为 1 - 15 ;
实时级别 , 其优先级别为 16-31。
第十四页,共八十四页。
线程优先级别指定 : 通过 Windows API Windows 内核也可以控制线程的优先级。每个线程有一个根本优先级 , 它是进程优先级和线程相对优先级的一个函数。
API 可在进程创立时 , 将进程的优先级指定为 实时( real-time) 、高 (high) 、高于标准 (above normal) 、标准 ( normal) 、低于标准 (below nor- mal) 或低 (low) ,根据这些进程内部单个线程的优先级来组织线程。
第十五页,共八十四页。
一个进程只有一个根本优先级值
每个线程有两个优先级值 , 即根本优先级和当前 优先级 , 处理器的调度是根据当前优先级做出的。
一个线程的初始根本优先级是从进程的根本 优先级继承得来的 , 在特定的情况下系统会在很短的周期内 提升线程的优先级 ( 动态范围为 1 - 15) ----当前优先级。
第十六页,共八十四页。
Windows 不会 在实时优先级范围内 (16 -31) 调整线程的优先级 , 所以它们的根本优先级和当前优先级总 是一样的 。 利用 Windows 支持工具箱 ( support tools) 中的进程查看工具 ( pviewer. exe) 可以查看所选进程中线程的当前优先级
第十七页,共八十四页。
3. 时限
在 Windows XP 中 , 时限只有两种设置值 : 短时限 或长时限。时钟间隔的长度随着硬件平台的不同而有所不同 , 主要取决于 HAL。 大多数 x86 单处理器系统的时钟间隔是 10 ms 左右 , 而大多数 x86 多处理器系统的时钟间隔是 15 ms 左右。
第十八页,共八十四页。
Windows XP 默认情况下使用短时限 , 而 Windows Server 默认情况下使用长时限。之所以在效劳 器系统上使用长时限 , 是因为要使环境切换的次数尽可能地减少 , 从而某个效劳器应用程序一旦 接收到客户请求而被唤醒时, 有可能在时限完毕之前完成相应的请求 , 并回到等待状态中。
第十九页,共八十四页。
每个进程在创立时都有一个时限值, 当给线程分配一个新的时限时就会用到该值。在系统内部 , 此时限值被设置为 3 的倍数 , 即 3 作为一个时限单元这意味着 , 默认情况下 Windows XP
第二十页,共八十四页。
系统中线程的时限值为 6 (2 X 3), Windows Server 中线程的默认时限值为 36 (12 x3) 。线程 运行时 , 在每一个时钟间隔其时限值都会被减少 , 如果没有剩余的线程时限如此会触发时限完毕 处理事件。在 Windows XP 中 , 用户可以通过修改注册表中相关的值来改变时限设置。
第二十一页,共八十四页。
4. 处理器调度
Windows 调度代码是在内核中实现的 , 但内核中不存在单独的 " 调度器 " 模块 , 调度代码散布在内核中但凡会发生与调度相关的事件的各个局部 , 执行这些任务的例程合起来称为内核 的 " 调度器 " (dispatcher) 。
第二十二页,共八十四页。
为了进展线程调度, 内核维护了一组数据结构 , 它们合称为 "调度器数据库" 。该数据库负责记录各线程的状态 , 如哪些线程正在等待执行、处理器正在执行哪个线程等, 其中最主要的内容是调度器的就绪队列一一包含了那些处于就绪状态、正在等待 被调度执行的线程。 该就绪队列由 32 个 " 子队列 " 组成 , 每个子队列对应一个调度优先级。
第二十三页,共八十四页。
Windows XP 严格基于线程的优先级来确定哪一个线程将占用处理器 , 并进入运行状态。但 在实际系统中 , 线程调度也根据不同的情况采用相应的调度策略。此外 , 对于单处理器系统和多 处理器系统来说 , 其调度策略也有所不同 。以下讨论的处理器调度是针对单处理器系统而言的 。
第二十四页,共八十四页。
( 1 ) 自愿切换
一个线程可能会通过调用某个 Windows 等待函数来等待某个对象 ( 例如一个事件、 I/O 操作、进程、线程或窗口消息等 ) , 从而由运行状态进入等待状态 , 自愿放弃对处理器的使
第20讲windows存储、文件、设备管理 来自淘豆网m.daumloan.com转载请标明出处.