您的位置:首页 > 其它

【现代操作系统】笔记 3

2015-05-17 09:40 225 查看
CPU调度

定义:控制、协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选择一个进程,把CPU使用权转交。若没有就绪进程,则安排一个空闲系统进程或者idle进程

系统场景:

N个就绪进程,等待CPU

多个CPU

决策(给哪个进程分配哪个CPU)

解决问题:

调度算法、调度时机、如何调度(切换)

进程切换工作内容:(对原来运行进程各种状态的保持和对新进程状态的恢复)

切换全局页目录以加载新的地址空间-->切换内核栈和硬件上下文

上下文切开销:

直接开销(内核完成切换所用的CPU时间,包括保持和恢复寄存器、切换地址空间)

间接开销(高速缓存、缓冲区缓存、TLB)

CPU调度算法

衡量指标:吞吐量、周转时间、响应时间、CPU利用率(越多越好)、等待时间

进程优先级\枪占式与非抢占式\IO密集型与CPU密集型\时间片

时间片影响因素:进程切换开销、对响应时间的要求、就绪进程个数、CPU能力、进程的行为

批处理系统中调度算法(指标:吞吐量、周转时间、CPU利用率):

先来先服务、最短作业优先、最短剩余时间优先、最高响应比优先

交互式系统调度算法(指标:响应时间):

时间片轮转、最高优先级调度、多级反馈队列、最短进程优先

多级反馈调度算法:

综合调度算法

各种调度算法比较总结:

多处理器调度算法设计:

选择哪个进程执行、在哪个CPU执行、进程在多CPU之间迁移时开销(使进程尽可能在同一CPU上执行)、负载均衡

典型系统采用的调度算法

UNIX 动态优先算法

5.3BSD 多级反馈队列法

linux 抢占式调度

windows 基于优先级的抢占式多任务

solaris 综合调度算法

windows 线程调度:

调度单位是线程,采用动态优先级的抢占式调度,结合时间配额的调整

  就绪线程按优先级进入相应队列

  系统总是选择优先级最高额就绪线程运行

  同一优先级的各线程按时间片轮转进行调度

  多CPU系统中允许多个线程并行允许

线程调度的条件:

线程优先级改变、一个线程改变了它的亲和处理机集合(允许此进程允许的CPU)

windows使用32个优先级,分为三类:

实时优先级(16-32,不可变)、可变优先级(1-15,可变,基本优先级和当前优先级)系统线程(0,零页线程,用于对系统中空闲物理页面清零)

主动切换、抢占、时间片用完

线程优先级提升与时间配额调整(调大)

5种情况提升线程的当前优先级:

  I/O操作完成

  信号量或事件等待结束

  前台进程汇总线程完成一个等待操作

  由于窗口活动而唤醒窗口线程

  线程处于就绪态超过了一定时间还没运行(饥饿)

  

windows中线程优先级提升只针对可变优先级:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: