1.1 调度器
CPU 只有一个,当有多个进程都是处于就绪态的时候,操作系统就必须做出决定先运行哪一个进程,操作系统做出决定的那一部分称为调度器,它使用的算法称为调度算法
进程调度和线程调度类似
1.2 调度介绍
1、几乎所有进程都会交替地突发 I/O 请求
2、有些进程大部分时间花费在运算上称为:计算密集型
3、有些进程大部分时间花费在等待 I/O 操作上称为:I/O 密集型
4、由于现代的发展,CPU 的速度越来越快,所以总体趋势趋向于 I/O 密集型
5、什么时候会发生调度?
当然,刚刚运行的进程完不会立刻就绪
下面2中必定发生调度
1、当一个进程退出时
2、当一个进程在 I/O 或 信号量上阻塞时
还有下面3种可能不是必定发生,当会经常发生
1、当一个新进程被创建
2、当一个 I/O 中断发生
3、当一个时钟中断发生
时钟中断
时钟中断提供了一个判断当前运行进程是否运行了足够长的时间,根据处理时钟中断的方式可以把调度算法分为:非抢占式调度算法 和 抢占式调度算法
非抢占式调度算法:挑一个进程运行,一直到该进程阻塞或自愿退出
抢占式调度算法:挑一个进程运行,这个进程所运行的最大时间是固定,如果到了这个最大时间这个进程还是运行,那么该进程就会被挂起,调度器会挑选另外的进程运行
抢占式调度器在这个时间间隔的最后需要另外一个时钟中断来获取 CPU 控制权,所以,要使用抢占式的,这个时钟必须要存在,不然非抢占式就是唯一选择。
1.3 调度算法目标
所有系统
公平:给每个进程公平的 CPU 份额
策略强制执行:执行规定策略
平衡: 保持系统所有部分都忙碌
批处理系统
吞吐量:最大化每小时作业数
周转时间:最小化从提交到完成的时间间隔
CPU 利用率:保持 CPU 始终忙碌
交互式系统
响应时间:快速响应请求
均衡性:满足所有用户需求
实时系统
满足截止时间:避免丢失数据
可预测性:在多媒体系统中失真
1.4 批处理系统中调度
1、队列式:根据进程请求的顺序占用 CPU 且是任意时长
2、最短作业优先法
3、最短剩余时间优先
1.5 交互式系统中的调度
1、时间片轮转调度:每个进程分配一个时间片,允许进程最长运行时间
时间片不能设置太长或太短,进程切换(上下文切换)需要时间
太短:导致过多的上下文切换,降低了 CPU 利用率
太长:交互请求响应变差
通常设置 20-50 ms
2、优先级调度:
3、彩票调度:重要的进程就提高该中奖率
1.6 实时系统中的调度
1、硬实时:必须满足时间限制
2、软实时:不必满足时间限制