文章目录
调度的目标和类型
进程调度的类型
按OS的类型划分
批处理调度、分时调度、实时调度、多处理机调度
按调度的层次划分
- Long-term scheduling(长程调度)
又称高级调度、作业调度
为被调度作业或用户程序创建进程、分配必要的系统资源,并将新创建的进程插入就绪队列,等待 Short-term scheduling
decide: which ,how many program are admitted - Medium-term scheduling(中程调度)
就绪/挂起(的进程) -> 就绪
(被挂起的放在了外存,但其PCB仍在内存)
即从被挂起的进程中选进程到就绪状态里去 - Short-term scheduling(短程调度)
又称进程调度,低级调度
调度内存中的就绪进程执行
决定就绪队列中那个将获得处理机
就绪 -> 运行
进程调度的目标
面向用户
-
Response Time (响应时间)
提交命令到响应结果的时间
评价分时系统的性能。 -
Turnaround Time(周转时间)
作业提交给系统开始到作业完成为止响应时间 vs 周转时间
比如你让我回答:100加100加100加100减100等于多百少? 我用2秒回答了你等于300 那么我要计算你这个问题是要时间的我花了1.8秒来运算就是周转时间. 总共用了2秒准确地回答了你的问题就是响应时间. 计算过程是周转时间.接到命令到计算出度答案就是响应时间. -
Deadlines(截止时间)
任务必须开始执行的时间
以及
必须完成的最迟时间
面向系统
- Throughput(吞吐量)
单位时间内系统所完成的作业数
用于评价批处理系统的性能 - 处理机利用率
处理机忙碌的百分时间比
而且是高效的忙碌(非忙等情况) - Balancing Resource(资源平衡)
系统希望所有设备都一样忙碌
适时的调度IO型、计算型之类
(作业调度、中程可以考虑这个因素,进程调度就不行了) - Fairness(公平性)
顾名思义,希望没有进程遭遇饥饿 - Priorities(优先级)
顾名思义
低优先级饥饿的解决方案(基于生存期改变其优先级,寒门亦可出贵子)
调度算法
- 目标:平均周转时间短
- 知识储备:剥夺与非剥夺
- 操作系统各调度算法
- Nonpreemptive(非剥夺方式)
进程正在执行,不会强制剥夺其处理机,除非主动终止(执行完了)或执行IO去了,阻塞自己
对周转时间友好,性能差
主要用于批处理系统 - Preemptive(剥夺方式)
当前执行进程可以被中断,移到就绪队列中
性能好,对周转时间不友好
主要用于实时系统和高性能批处理系统
- Nonpreemptive(非剥夺方式)
First-Come-First-Served
- FCFS 先来先服务算法
顾名思义 - 非剥夺方式
不利于短进程(解决:按进程长短分队列进行)
不利于IO型进程(解决:IO型执行过一次IO后在新的优先级更高的就绪队列排)
利于使用cpu即计算型 - 平均周转时间:8.6(等待时间可能大于执行时间)
Round Robin (Virtual round robin)
- 轮转调度法
所有进程轮着执行,不一定一次就执行完
时间片控制每次轮转的执行时间 - 对于IO型
根据是否发生IO,统计IO型,放至优先就绪队列,时间片更长
Shortest Process Next
- 短进程优先
- 难点:需要估算进程的服务时间
Shortest Remaining Time
- 剩余时间最短者优先
- 难点:需要估算进程的服务时间
Highest Response Ratio Next
- 响应比高者优先
响应比 =(等待时间+服务时间) / 服务时间 - 难点
需要估算进程的服务时间
计算量大
(理论太完美而难以工程应用)
Feedback
- FB, 反馈调度法
将进程的就绪队列排成多个
时间片越来越长
相当于一层层过滤,滤出长的进程