进程调度
来源:互联网 发布:海康网络球机接线图解 编辑:程序博客网 时间:2024/06/06 02:41
多道程序环境下,进程数目往往多于处理机数目,致使它们争用处理机。这就要求系统能按某种
算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完
成的。它是操作系统设计的中心问题之一。
进程调度的基本概念
高级、中级和低级调度
个作业从提交开始直到完成,往往要经历下述三级调度:
高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;
低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;
中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换
区进行进程对换。
进程调度方式
进程调度有以下两种基本方式:
非剥夺方式
分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。剥夺方式
当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程、优先原则、时间片原则。例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。
假如它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24、
26个单位时间,平均周转时间是23.33个时间单位。
假如用时间片原则的剥夺调度方式,可得到:
0
2
4
6
8
10
12
26
P1
P2
P3
P1
P2
P1
P1
...
P1
2
2
2
2
2
16
可见:P1、P2、P3的周转时间分别为26、10、6个单位时间,平均周转时间为14个单位时间。
衡量进程调度性能的指标有:周转时间、响应时间、CPU-I/O执行期。
进程调度算法
先进先出算法
算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行
下去,直到该进程完成或阻塞时,才释放处理机。
例如,有三个进程P1、P2和P3先后进入就绪队列,它们的执行期分别是21、6和3个单位时间,
执行情况如下图:
0
21
27
30
P1
P2
P3
21
6
3
对于P1、P2、P3的周转时间为21、27、30,平均周转时间为26。
可见,FIFO算法服务质量不佳,容易引起作业用户不满,常作为一种辅助调度算法。
最短CPU运行期优先调度算法(SCBF--Shortest CPU Burst First)
该算法从就绪队列中选出“下一个CPU执行期”最短的进程,为之分配处理机。
例如,在就绪队列中有四个进程P1、P2、P3和P4,它们的下一个执行期分别是16、12、4和3
个单位时间,执行情况如下图:
0
3
7
19
35
P4
P3
P2
P1
3
4
12
16
P1、P2、P3和P4的周转时间分别为35、19、7、3,平均周转时间为16。
该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程
的执行历史来预测。
最高优先权(FPF)优先调度算法
该算法总是把处理机分配给就绪队列中具有最高优先权的进程。常用以下两种方法来确定进程的
优先权:
静态优先权
静态优先权是在创建进程时确定的,在整个运行期间不再改变。依据有:进程类型、进程对资源的要求、用户要求的优先权。
动态优先权
动态优先权是基于某种原则,使进程的优先权随时间改变而改变。轮转法
前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用
时间片轮转法。
简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列
中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。
多级队列方法:将系统中所有进程分成若干类,每类为一级。
多级反馈队列
多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。
进程调度的实现
引起进程调度的原因
正在执行的进程执行完毕或因发生某事件而不能再继续执行;
执行中的进程因提出I/O请求而暂停执行;
在进程通信或同步过程中执行了某种原语操作如P操作、阻塞、挂起原语等;
在可剥夺式调度中,有比当前进程优先权更高的进程进入就绪队列;
在时间片轮转法中,时间片完;
△通常系统是按先来先服务或优先权形式来组织调度队列。
进程调度算法
其中,RQ为就绪队列指针,EP为运行队列指针。
基本概念
高级调度:它用于确定把后备队列上的哪些作业调入内存。
低级调度:指在多道程序环境下,内核按一定的调度算法,从就绪队列中选出一进程,把处理机 分配给它。
中级调度:核心按一定的调度算法,将内存中处于等待状态的某些进程调至外存对换区,来腾空 这部分内存。
周转时间:从提交开始到完成为止的时间间隔。
响应时间:从提交一个请求到首次产生响应的时间间隔。
CPU-I/O执行期:进程在运行时,交替地处于两种工作状态:CPU忙和I/O忙。
0 0
- 进程调度 ---CFS调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- 进程调度
- easyui datagrid打印
- iOS strong weak
- 计算listview的高度
- c++的引用
- android学习笔记之adb无法启动
- 进程调度
- 互联网金融系列-支付清算体系介绍-上
- nodejs 原生代码实现http 服务器和客户端并交互
- 回调函数
- Android程序按两次返回键提示退出信息
- Constructing Roads
- 南邮 OJ 1219 整数因子分解问题
- Unity项目工程集成Mob的社会化分享SDK之发布到iOS平台
- 实用点