目录
4.1 中断
4.1.1 中断和指令周期
4.1.2 中断处理
4.1.3 多个中断
4.1.6 三级调度
中断与进程状态转换
4.2 处理机调度
4.2.1 进程调度方式
4.2.2 调度算法
1. 先来先服务 FCFS
2. 短作业优先 SJF
3. 高响应比 HRP
4. 最短剩余时间 SRT
5. 轮转法 HPF
6. 优先级法
各种常用调度算法的比较
4.3 实时调度
4.3.1 实现实时调度的基本条件
4.3.3 实时调度算法
最早截止时间优先 EDF
最低松弛度优先 LLF
LLF 例题
4.4 多处理机调度
习题解析
一、大题
1. 占用率问题
2. 两道批处理问题
二、选择题
什么是调度?
调度就是采用特定算法,安排多个作业或进程运行。
中断对于操作系统的五个作用:(可能考简答题)
中断响应的三个步骤:
中断和指令周期流程图:
中断分为强迫性中断和自愿性中断,它们最主要的区别在于是否是程序自己安排的。
我们熟知的时间片到就是强迫性中断。
处理方法:
高级调度:将作业从外存移到内存,新建进程后进入就绪状态。
中级调度:属于交换功能的一部分,将就绪进程或阻塞进程挂起,或将处于外存的静止就绪和静止阻塞状态的进程激活。
低级调度:决定下次哪个就绪进程占用CPU。
时间片到 :这个中断表明状态转移,就是由于系统定时时间间隔时钟中断所引起的当前进程的一个时间片用完而从运行状态转移到就绪状态。
I / O 完成:I/O外设数据传输完成产生一个I/O完成中断信号而进入I/O中断处理。由于I/O外设完成中断信号所引起的从阻塞到就绪状态的转移。
申请I/O服务:运行中进程需要在某处执行有关I/O指令以进行数据输入输出。要么是访管指令,要么是某种系统调用,都属于自愿性中断而进入中断处理, 进入由于等待某类I/O的阻塞队列。
调度:当我们清楚了以上状态转移原因,这条边所表明的状态转移也很容易理解。这涉及到调度的时机;产生调度的因素有很多,但基本都与中断有关。
总而言之,进程状态变迁是由于中断,但中断不一定产生进程切换!
评价算法的指标:
先就绪的先运行,按照先后顺序依次运行,前一个作业的结束时间就是后一个作业的开始时间,周转时间 = 结束时间 - 到达时间,带权周转时间 = 周转时间 / 服务时间。
第一个就绪的作业先运行,如果该作业结束后有多个作业已经就绪,那就选择服务时间最短的那个接着运行。
每次运行完作业后,都要看接下来已经就绪的作业中,哪一个响应比最高,选最高的那个接着运行。
其实就是每次运行到一个作业的就绪时间点时,看一看现在已经就绪的作业里哪一个需要花的时间最短,选择需要花时间最短的那个接着运行。注意画图!
每个作业每次只能使用一个时间片,一个时间片到了就要回到队列里排队,到了一个作业的到达时间时,这个新的作业先排队,运行完一个时间片但还未达到要求的作业后排队。
下面的四个进程中,系统进程的优先级最高,批处理进程的优先级最低。多级反馈队列(MFQ)
注意,只有短作业优先和最短剩余时间算法有可能导致饥饿问题。
截止时间越早,优先级越高。既可以用于抢占式,也可以用于非抢占式。
松弛度 = 必须完成的时间点 - 本身需要的运行时间 - 当前时间
松弛度越低,优先级越高。
分析:
首先,在0时刻计算A和B的松弛度,LA = 20-10-0 = 10 ;LB = 50-25-0 = 25;可知A的松弛度较低,故A先运行;
运行了10ms后A的本周期任务完成,现在时刻为10,此时A还没到下一个周期,所以直接运行B,不需要计算松弛度;
B运行到20时,因为此时A的松弛度不为0,且B的本周期任务还未完成,所以继续运行B,因为要尽量减少切换;
直到时刻为30时,A的松弛度为0,此时不得不让A运行;时刻为40时,A的本周期任务结束,而B的还未结束,所以计算两者松弛度,LA = 60-10-40 = 10;LB = 50-5-40 = 5;可知B的松弛度较低,故轮到B运行;
运行到45时刻时B的本周期任务完成,所以直接给A运行;
运行到55时,A的任务完成,此时已经进入了B的第二个周期,所以运行B到70,此时A的松弛度为0,便要给A运行;
运行到80时A的任务完成,接着计算两者的松弛度,按这样的方法继续运行下去。
在这个例题里,作业的运行中断有两种情况,一个是作业在这个周期里的任务完成了,另一个是作业的松弛度高于另一个作业的松弛度。这两种情况中,前者作业的这个周期进程处于结束状态,下一个周期开始时,该作业的一个新进程就绪;后者作业的这个周期进程处于就绪状态。
可能考选择题。
根据题意,优先级P1最高,P3最低,在进程中,I/O设备不可以被抢占,而CPU可以。按照这个原则来在图中标明每个进程的各个时间段所使用的设备。
利用率是指CPU、D1或D2在整个过程中活跃的时间占比,整个过程就是P1、P2和P3进程的并集。
具有两道作业的批处理系统,说明这个系统的内存队列长度为2,CPU可以为队列中的一个作业所使用。
作业调度是指作业从外存进入内存的操作,作业到达后就放在外存,处于新建状态,进入内存后先是处于就绪状态。
进程调度就是我们熟知的将就绪态作业运行的操作。
周转时间就是完成时间减去进入内存时间,并未用到到达时间。
答案:B、C
解析:
A暂无解释;
B是定义类的题,要记住;
C是中断的几个作用之一,需要记得是,中断是并发和并行的基础;
D,没有要求,因为批处理系统不像实时系统那样要处理一些有时间限制的作业或进程。
答案:B
解析:释放打印机,说明这个进程原本在等待I/O完成的阻塞状态,现在I/O完成,是就绪状态了。这时候阻塞队列上的下一个进程就会开始使用打印机,从等待I/O的阻塞状态变成等待I/O完成的状态。其余等待打印机的进程维持原状。至于输入输出进程和就绪态进程,则都不会受到影响。
答案:D
解析:进程的引入就是为了使得多道程序并发运行,所以它们是不具有封闭性的;有些进程间互相关联,具有并发性,但也有进程的执行不影响其他进程的执行,所以它们是无关的。总之,进程之间可能无关,也可能有交互性。
答案:C
解析:实时系统调度算法中,最常用的就是 LLF 最低松弛度优先法,由松弛度确定优先级,优先级高的会抢占CPU。
答案:B
解析:I/O时间长的一般优先级较高,因为可以在漫长的I/O过程中并行其他进程,比如占用CPU进行运算。
答案:B
解析:A、C显然不满足短作业优先,A利好长作业,C不偏不倚;D满足短作业优先,但是可能会发生饥饿现象,所以排除法选B。要注意的是,SIF和SRT都有可能导致饥饿。
答案:B
解析:不管时间片有没有过大,当轮转队列里出现很多进程的时候,就采用先来先服务的算法。