进程调度
-
高级调度(作业调度):按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。==每个作业只调入一次,调出一次。==作业调入时会建立PCB,调出时会撤销PCB。
-
中级调度(内存调度):按照某种策略决定将哪个处于挂起状态的进程重新调入内存。
-
低级调度(进程调度/处理机调度):按照某种策略从就绪队列中选取一个进程,将处理机分配给它。
进程调度与切换在以下情况是不能发生的
- 在处理中断的过程中 处理中断与硬件相关,比较复杂
- 在操作系统内核程序临界区中 进程访问内核程序临界区时会上锁,如果此时发生切换其他进程无法访问,影响比较大
- 在原子操作过程中 原语不可中断
1、调度算法的评价指标
- cpu利用率
- 系统吞吐量
- 周转时间
- 带权周转时间
- 等待时间
- 响应时间
2、FCFS(先来先服务)
3、SJF(短作业优先)
非抢占式:
抢占式:
4、HRRN(高响应比优先)
5、时间片轮转(RR)
- 同一时刻,如果有进程到达,也有进程时间片用完,默认新到达的进程排在等待队列的前面!
- 时间片太大,每个进程都能在一个时间片内运行完,则该算法就退化为了先来先服务算法
- 时间片太小,进程切换也是需要时间的,会造成系统开销增大,从而导致实际用于进程执行的时间减少
6、优先级
- 优先级调度发生在有新进程到达或进程运行结束时
- 注意是优先数越高优先级越高还是优先数越低优先级越高
7、多级反馈队列
- 如果在k级队列运行时,上一级队列有进程到达,则会把该进程重新放在k级队列队尾