概述
进程调度
进程调度室操作系统必不可少的一种调度。因此在三种类型的OS(DOS、Windows、Linux),都无一例外地配置了进程调度。此外它也是对系统性能影响最大的一种处理机调度。
进程调度的任务
- 保存处理机的现场信息。在进行调度时首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容。
- 按某种算法选取进程。调度程序按某种算法从就绪队列中选取一个进程,将其状态改为运行状态,并准备把处理机分配给他。
- 把处理器分配给进程。由分派程序把处理器分配给该进程,此时需要将选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理机的控制权交予该进程,让他从上次的断点处恢复运行。
进程调度机制
- 排队器。为了提高进程调度的效率,应事先将系统中的所有就绪进程按照一定的策略排成一个或多个队列,以便调度程序能最快最快地找到他。以后每当有一个进程转变为就绪状态时,排队器便将他插入到相应的就绪队列。
- 分派器。分派器依据进程调度程序所选定的进程,将其从就绪队列中取出,然后进行从分派器到新选出进程间的上下文切换,将处理机奉陪给新选出的进程。
- 上下文切换器。在对处理机进行切换时,会发生两对上下文的切换操作:①第一对上下文切换时,OS将保存到当前进程的上下文,即把当前进程的处理机寄存器内容保存到该进程的控制块内的相应单元,再装入分派程序的上下文,以便分派程序运行;②第二对上下文切换是移出分派程序的上下文,而把新选进程的CPU现场信息装入到处理机的各个相应寄存器中,以便新选进程运行。
进程调度方式
- 非抢占式
在采用这种调度方式时,一旦把处理机分配给某个进程后,就一直让它运行下去,决不会因为时钟中断或任何其他原因去抢占当前正在运行进程的处理机,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其他进程。
可能引起进程调度的因素:
- 正在执行的进程运行完毕,或因发生某件事而使其无法再继续运行;
- 正在执行中的进程因提出I/O请求而暂停执行;
- 在进程通信或同步过程中,执行了某种原语操作。
优点
- 实现简单,系统开销小,适用于大多数的批处理系统。
缺点
- 不能用于分时系统和大多是实时系统
- 抢占方式
这种调度方式允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一个进程。在现代OS中广泛采用抢占方式,这是因为:对于批处理机系统,可以防止一个长进程长时间地占用处理机,以确保处理机能为所以进程提供更为公平的服务。在分时系统中,只有采用抢占方式才有可能实现人—机交互。在实时系统中,抢占方式能满足实时任务的需求。但抢占方式比较复杂,所需付出的系统开销也交大。
抢占方式遵循的原则
- 优先权原则。指允许优先级高的新到进程抢占当前进程的处理机,即当有新进程到达时,如果它的优先级比正在执行进程的优先级高,则调度程序将剥夺当前进程的运行,将处理机分配给新到的优先权高的进程。
- 短进程优先原则,指允许新到的短进程可以抢占当前长进程的处理机,即当新到达的进程比正在执行的进程(剩余运行时间)短时,则调度程序将剥夺当前进程的运行,将处理机分配给新到的优先权高的进程。
- 时间片原则。即各进程按时间片轮转运行时,当正在执行的进程的一个时间片用完后,便停止该进程的执行而重新进行调度。
调度算法(模拟实现)
在进行模拟实现前进程调度算法前,我们将做一些准备工作,首先我们需要创建一个进程对象,来创建不同的进程信息,在进程调度时,时间已久很关键,因此我们也需要一个时间对象来方便我们进行操作。
创建进程类与时间类
- 先来先服务调度算法(first-come first-service, FCFS)
FCFS是最简单的调度算法,该算法可用于作业调度,也可用于进程调度。在当前作业调度中采用该算法是,系统将按照作业到达的先后次序来进行调度。
先来先服务算法模拟实现
- 短作业优先调度算法(short job first, SJF)
SJF算法是以作业长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业要求的运行时间来衡量的。SJF算法可以分别用于作业调度和进程调度。在把短作业优先调度算法用于作业调度时,他讲从外存的后备队列中选择若干个估计运行时间最大短的作业,优先将他们调入内存运行。
模拟实现短作业优先调度算法
缺点
- 必须预知作业优先算法。
- 对长作业不利。
- 人—机交互无法实现。
- 未考虑作业紧迫程度,不能保证紧迫性作业能得到及时处理。
优先级调度算法(priority-scheduling algorithm, PSA)
在优先级调度算法中模拟实现高响应比优先调度算法
优先权 = (等待时间+要求服务时间) / 要求服务时间 = 1 + 等待时间 / 要求服务时间
由上述公式可以看出:①如果罪业等待时间相同,则要求服务时间越短,其优先权越高;②当要求服务时间相同是,作业的优先权取决于等待时间。
模拟实现高响应比优先算法
缺点
- 每次进行调度前要进行响应比的计算,增加了系统开销。
优点 - 对长作业和短作业都相对友好
时间片轮转调度算法(round robin, RR)
时间片轮转调度算法每次进程只执行一个时间片的时间,让等待队列中的进程都可以执行一个时间线的时间,达到并发的结果。
模拟实现时间片轮转调度算法
最后
以上就是风趣小蘑菇为你收集整理的操作系统|进程调度的全部内容,希望文章能够帮你解决操作系统|进程调度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复