处理机调度(笔记四)

来源:互联网 发布:sd卡数据怎么删除不了 编辑:程序博客网 时间:2024/06/07 07:47

0.处理机调度的层次
高级调度(High Level Scheduling):又称长程调度或作业调度,它的调度对象是作业。决定将外存上处于后备队列中的哪几个作业调入内存。高级调度主要用于多道批处理系统中,在分时和实时系统中不设置高级调度。
低级调度(Low Level Scheduling):又称短程调度或进程调度,它的调度对象是进程(或内核级线程)。它决定哪个进程获得处理机,并将处理机分配给选中的进程。
中级调度(Intermediate Scheduling):又称内存调度。引入中级调度是为了提高内存利用率和系统的吞吐量,将哪些暂时不能运行的进程调至外存等待,此时这些进程的状态称为就绪驻外状态(或挂起状态)。当它们具备运行条件且稍有空闲时,由中级调度来决定,将外存上具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态。

1.衡量调度算法的一些指标
①CPU利用率
CPU利用率
②平均周转时间
平均周转时间
*周转时间:作业从提交给系统开始到作业完成为止的这段时间间隔。
③平均带权周转时间
平均带权周转时间
其他指标:公平性、平衡性、策略强制执行、系统吞吐量等

一、作业调度
1. 批处理系统中的作业
作业不仅包含了程序和数据,还应该配有一份作业说明书。在批处理系统中,以作业为基本单位从外存调入内存,并且为了管理和调度作业,设置了JCB(作业控制块)。
作业运行有三个阶段:收容阶段、运行阶段、完备阶段,三个阶段对应三个状态:后备状态、运行状态、完备状态。

2.常见的作业调度算法
①先来先服务(FCFS)调度算法
该方法简单粗暴,可用于作业调度和进程调度。它按照作业(或进程)到达的先后次序进行调度,其他的不考虑。
②短作业优先(SJF)调度算法
它从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。
③优先级调度算法(PSA)
从外存的作业后备队列中选择若干个优先级高作业,优先将它们调入内存运行。
④高响应比优先调度算法(Highest Response Ratio Next,HRRN)
HRRN综合考虑了等待时间和要求服务时间,引入优先权来表示作业的优先级,优先权的计算方法如下:
RP

二、进程调度

  1. 进程调度机制
    进程调度机制中,有三个基本部分:
    (1)排队器:负责将就绪进程按照一定的策略排成一个或多个队列。
    (2)分派器:根据进程调度程序选定进程从就绪队列中选出,然后进行从分派器到新选出的进程间的上下文切换,将处理机分配给新选出的进程。
    (3)上下文切换器:保留当前进程的CPU现场,装入新选进程的CPU现场信息

  2. 进程调度方式
    (1)非抢占式:处理机分配给进程后一直让它运行下去,直至进程完成或阻塞
    (2)抢占式:允许调度程序根据规则去暂停某个正在执行的进程

  3. 进程调度算法
    (1)时间片轮转(round robin)算法:让就绪队列上的每个进程每次仅运行一个时间片
    (2)优先级调度算法:
    A.非抢占式优先级调度算法:优先级高的进程处于等待队列的最前面,不会干扰正在运行的进程
    B.抢占式优先级调度算法:占有CPU的进程永远是当前内存中优先级最高的进程
    优先级类型:
    a.静态优先级:创建进程时确定,进程运行期间保持不变
    b.动态优先级:在进程创建之初,先赋予其一个优先级,然后其值随着进程的推进或者等待时间的增加而改变
    (3)多队列调度算法:
    设置多个就绪队列,对每个就绪队列可以实施不同的调度算法。
    (4)多级反馈队列调度算法:
    a. 设置多个就绪队列,并为每个队列赋予不同的优先级,第一个队列优先级最高,其余队列优先级逐个降低。为不同队列中的进程赋予的执行时间片大小也各不相同,优先级越高,时间片越小。
    b. 每个队列采取FCFS算法。新进程进入内存后,先将他放到第一队列末尾,当轮到它执行时,如果它能在该时间片内完成,便可撤离。否则转入第二队列末尾……
    c. 按队列优先级调度。首先调度最高优先级队列中的诸进程运行,当第一队列空闲时才会调度第二队列中的进程运行。如果处理机正在运行第i队列中的某个进程时,有高优先级的新进程进入高优先级的队列,此时必须把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先级进程。

三、实时调度
实时系统中,存在HRT任务和SRT任务,他们都联系着一个截止时间,实时调度必须满足实时任务对截止时间的要求。
注:HRT,Hard Real-time,硬实时任务,SRT,Soft Real-time,软实时任务。硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

  1. 实时调度算法的分类
    ①根据实时调度的算法分为硬实时调度算法
    ②根据调度方式,分为非抢占调度算法和抢占调度算法
    (1)非抢占调度算法:非抢占式轮转调度算法、非抢占式优先调度算法
    (2)抢占式调度算法:
    a.基于时钟中断的抢占式优先级调度算法。在实时任务到达后,如果它的优先级高于当前任务的优先级,并不会立即抢占当前任务的处理机,等时钟中断发生时,调度程序才会剥夺当前任务的执行,将处理机分配给新到的搞优先级任务。
    b.立即抢占的优先级调度算法。一旦出现外部中断,只要当前任务未处于临界区,立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。

  2. 常用的实时调度算法
    ①最早截止时间优先EDF(Earliest Deadline Firest)算法
    ②最低松弛度优先LLF(Least Laxity First)算法
    任务的优先级依据其松弛度决定,松弛度越低,优先级越高
    任务的松弛度=必须完成的时间-还需运行的时间-当前时间

//这类题目要会画图和列表,一定要整洁和清楚
//那个优先级倒置的知识点挺有意思的
//如有错误,欢迎指正

原创粉丝点击