一、 处理器调度的相关概念

1、CPU调度

CPU调度其任务是控制 、协调进程对CPU的竞争。

即按一定的调度算法从就绪队列中选择一个进程,把CPU 的使用权交给被选中的进程如果 没有就绪进程,系统会安排一个 系统空闲进程或idle

2、进程切换

进程切换:是指一 个进程让出处理器,由另一个进程占用处理器的 过程

  • 进程 切换主要包括两部分工作:
  • 切换全局页目录以加载一个新的地址空间
  • 切换 内核栈 和硬件上下文,其中硬件上下文包括了内核执行新进程需要的全部信息 , 如CPU 相关 寄存器

切换过程包括了 对原来运行进程各种状态 的保存和对 新的进程各种状态 的恢复

3、进程上下文切换具体步骤

场景:进程A 下CPU ,进程B 上CPU

  1. 保存进程A 的上下文环境(程序计数器、程序状态字、其他寄存器…… )
  2. 用新状态和其他相关信息更新进程A 的PCB
  3. 把进程A 移至合适的队列(就绪、阻塞…… )
  4. 将进程B 的状态设置为运行态
  5. 从进程B 的PCB 中恢复 上下文(程序计数器 、 程序状态字、其他寄存器…… )

4、进程上下文切换开销

  • 直接开销:内核完成切换所用 的CPU 时间
  • 保存和恢复寄存器……
  • 切换地址空间 (相关指令比较 昂贵)
  • 间接开销
  • 高速缓存(Cache) 、缓冲区缓存(Buffer Cache) 和TLB(Translation Look-aside Buffer)

二、设计调度算法要考虑的几个问题

1、调度算法衡量指标

  • 吞吐量 Throughput — 每单位时间完成的进程数目
  • 周转时间TT(Turnaround Time)
    每个进程从提出请求到运行完成的时间
  • 响应时间RT(Response Time)
    从提出请求到第一次回应的时间
  • 其他
  • CPU 利用率(CPU Utilization)

CPU 做有效工作的时间比例

  • 等待时间(Waiting time)

每个进程在就绪队列(ready queue) 中等待的时间

三、多处理器调度算法设计

  • 不仅要决定选择哪一个 进程执行
  • 还需要决定在 哪一个CPU 上执行
  • 要 考虑进程在多个CPU 之间迁移时的开销
  • 高速缓存失效、TLB 失效
  • 尽可能使进程总是在同一个CPU 上执行
  • 如果每个进程可以调度到所有CPU 上,假如进程上次在CPU1 上执行,本次被调度到CPU2 ,则会 增加高速缓存 失效、TLB 失效; 如果 每个 进程尽量调度到指定的CPU 上,各种失效就会减少
  • 考虑 负载 均衡问题

四、批处理系统中采用的调度算法

  • 先来先服务(FCFS-First Come First Serve )
  • 最短作业优先(SJF-Shortest Job First )
  • 最短剩余时间优先(SRTN-Shortest Remaining Time Next )
  • 最高相应比优先(HRRN-Highest Response Ratio Next )

五、交互式系统中采用的调度算法

  • 轮转调度(RR-Round Robin )
  • 最高优先级调度(HPF—Highest Priority First )
  • 多级反馈队列(Multiple feedback queue )
  • 最短进程优先(Shortest Process Next )

六、WINDOWS 线程调度

​​​​
四、五、六部分内容可以参考课件:课件下载地址

个人微信公众号:

OS学习笔记三:处理器调度_竞争

作者:jiankunking​