提交 a3384078 编写于 作者: chyyuu1972's avatar chyyuu1972

update ch5:4 add RT sched

上级 9c6021d0
......@@ -333,18 +333,142 @@ MLFQ调度策略的关键在于如何设置优先级。一旦设置进程的好
实时计算机系统的调度
----------------------------------
计算机系统的应用领域非常广泛,如机器人、物联网、军事、工业控制等。在这些领域中,要求计算机系统能够实时响应,如果采用上述调度方式,不能满足这些需求,这对操作系统提出了新的挑战。
这里,我们首先需要理解实时的含义。实时计算机系统通常可以分为硬实时(Hard Real Time)和软实时(Soft Real Time)两类,硬实时是指任务完成时间必须在绝对的截止时间内,如果超过意味着错误和失败,可能导致严重后果。软实时是指任务完成时间尽量在绝对的截止时间内,偶尔超过可以接受。
实时的任务是由一组进程来实现,其中每个进程的行为是可预测和提前确定的。这些进程称为实时进程,它们的执行时间一般较短。支持实时任务的操作系统称为实时操作系统。
约束条件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
实时计算机系统是一种以确定的时间范围起到主导作用的计算机系统,即但外设发给计算机一个事件(如时钟中断、网络包到达等),计算机必须在一个确定时间范围内做出响应。
实时计算机系统中的事件可以按照响应方式进一步分类为周期性(以规则的时间间隔发生)事件或非周期性(发生时间不可预知)事件。一个系统可能要响应多个周期性事件流。根据每个事件需要处理时间的长短,系统甚至有可能无法处理完所有的事件。
这样,实时计算机系统的约束条件也随之发生了新的变化:
1. 每个进程可不同时间到达。
2. 每个进程的执行时间不同。
3. 进程的启动时间和执行时间是未知的。
4. 进程在整个执行过程期间会执行I/O操作。
5. 进程在执行过程中会被抢占。
6. 进程的行为是可预测和提前确定的,即进程在独占处理器的情况下,执行时间的上限是可以提前确定的。
7. 触发进程运行的事件需要进程实时响应,即进程要在指定的绝对截止时间内完成对各种事件的处理。
这里主要增加了第6和7点。第6点说明了实时进程的特点,第7点说明了操作系统调度的特点。
性能指标
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RM调度
对于实时计算机系统而言,进程的周转时间快和响应时间低这样的性能指标并不是最主要的,进程要在指定的绝对的截止时间内完成是第一要务。这里首先需要理解实时计算机系统的可调度性。如果有m个周期事件,事件i以周期时间Pi 发生,并需要Ci 时间处理一个事件,那么计算机系统可以处理任务量(也称负载)的条件是:
SUM(Ci/Pi) <= 1
能满足这个条件的实时计算机系统是可实时调度的。
满足这个条件的实时系统称为是可调度的。例如,一个具有两个周期性事件的计算机系统,其事件周期分别是20ms、80ms。如果这些事件分别需要10ms、20ms来进行处理,那么该计算机系统是可实时调度的,因为
(10/20)+ (20/80) = 0.75 < 1
如果再增加第三个周期事件,其周期是100ms,需要50ms的时间来处理,我们可以看到:
(10/20)+ (20/80) + (50/100) = 1.25 > 1
这说明该计算机系统是不可实时调度的。
实时计算机系统的调度策略/算法可以是静态或动态的。静态调度在进程开始运行之前就作出调度决策;而动态调度要在运行过程中进行调度决策。只有在预知进程要所完成的工作时间上限以及必须满足的截止时间等全部信息时,静态调度才能工作;而动态调度则不需要这些前提条件。
速率单调调度
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. chyyuu Liu C L , Layland J W . Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment[J]. Journal of the ACM, 1973, 20(1):46-61.
https://internethalloffame.org/about/advisory-board/cl-liu C.L. Liu Professor, National Tsing Hua University | Taiwan 刘炯朗教授(Chung Laung Liu) 门生中还有图灵奖唯一华人得主姚期智院士。
http://en.wikipedia.org/wiki/Chung_Laung_Liu 其于1973年发表在Journal of the ACM的论文“Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment”,至今已被引用超过12491次(至2020年为止),影响极大。
速率单调调度(Rate Monotonic Scheduling,RMS)算法是由刘炯朗(Chung Laung Liu)教授和James W. Layland在1973年提出的。该算法的基本思想是根据进程响应事件的执行周期的长短来设定进程的优先级,即执行周期越短的进程优先级越高。操作系统在调度过程中,选择优先级最高的就绪进程执行,高优先级的进程会抢占低优先级的进程。
该调度算法有如下的前提假设:
1. 每个周期性进程必须在其执行周期内完成,以完成对周期性事件的响应。
2. 进程执行不依赖于任何其他进程。
3. 进程的优先级在执行前就被确定,执行期间不变。
4. 进程可被抢占。
可以看出,RMS调度算法在每个进程执行前就分配给进程一个固定的优先级,优先级等比于进程所响应的事件发生的周期频率,即进程优先级与进程执行的速率(单位时间内运行进程的次数)成线性关系,这正是为什么将其称为速率单调的原因。例如,必须每20ms运行一次(每秒要执行50次)的进程的优先级为50,必须每50ms运行一次(每秒20次)的进程的优先级为20。Liu和Layland证明了在静态实时调度算法中,RMS是最优的。
.. chyyuu 最优的含义是??????
任务执行中间既不接收新的进程,也不进行优先级的调整或进行CPU抢占。因此这种算法的优点是系统消耗小,缺点是不灵活。一旦该系统的任务决定了,就不能再接收新的任务。
采用抢占的、静态优先级的策略,调度周期性任务。
.. chyyuu 最好给个实际运行的例子
EDF调度
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
另一个典型的实时调度算法是最早截止时间优先(Earliest Deadline First,EDF)算法,其基本思想是根据进程的截止时间来确定任务的优先级。截止时间越早,其优先级就越高。如果进程的截止期相同,则处理时间短的进程优先级高。操作系统在调度过程中,选择优先级最高的就绪进程执行,高优先级的进程会抢占低优先级的进程。
该调度算法有如下的前提假设:
1. 进程可以是周期性或非周期性的。
2. 进程执行不依赖于任何其他进程。
3. 进程的优先级在执行过程中会基于进程的截止期动态变化。
4. 进程可被抢占。
EDF调度算法按照进程的截止时间的早晚来分配优先级,截止时间越近的进程优先级越高。操作系统在进行进程调度时,会根据各个进程的截止时间重新计算进程优先级,并选择优先级最高的进程执行,即操作系统总是优先运行最紧迫的进程。在不同时刻,两个周期性进程的截止时间的早晚关系可能会变化,所以EDF调度算法是一种动态优先级调度算法。
实时调度实例
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
系统中有三个周期性进程PA、PB和PC,它们在一开始就处于就绪状态,它们的执行周期分别是20ms、50ms和100ms,它们响应事件的处理时间分别为5ms、20ms和25ms。操作系统需要考虑如何调度PA、PB和PC,以确保它们在周期性的截止时间(最终时限,即当前执行周期的绝对时间)到来前都能完成各自的任务。
我们先分析一下系统的可调度性:
(5/20) + (20/50) + (25/100)= 0.25+0.4 + 0.25 = 0.9 < 1
可以看到处理器在理论上有10%的空闲时间,不会被超额执行,所以找到一个合理的调度应该是可能的。我们首先看看RMS调度算法,由于进程的优先级只与进程的执行周期成线性关系,所以三个进程的优先级分别为50、20和10。对于RMS调度算法而言,具有如下的调度执行过程:
.. chyyuu 画个执行的图??????
- t=0:在t=0时刻,优先级最高的PA先执行(PA的第一个周期开始),并在5ms时完成;
- t=5:在PA完成后,PB接着执行;
- t=20:在执行到20ms时(PA的第二个周期开始),PA抢占PB并再次执行,直到25m时结束;
- t=25:然后被打断的PB继续执行,直到30ms时结束;
- t=30:接着PC开始执行(PC的第一个周期开始);
- t=40:在执行到40ms时(PA的第三个周期开始),PA抢占PC并再次执行,直到45ms结束;
- t=45:然后被打断的PC继续执行;
- t=50:然后在50ms时(PB的第二个周期),PB抢占PC并再次执行;
- t=60:然后在60ms时(PA的第四个周期开始),PA抢占PB并再次执行,直到65ms时结束;
- t=65:接着PB继续执行,并在80ms时结束;
- t=80:接着PA继续抢占PC(PA的第五个周期开始),在85ms时结束;
- t=85:然后PC再次执行,在90ms时结束。
这样,在100ms的时间内,PA执行了5个周期任务,PB执行了2个周期任务,PC执行了1个周期任务。在下一个100ms的时间内,上述过程再次重复。
对于EDF调度算法而言,具有如下的调度执行过程:
- t=0:首先选择截止时间最短的PA,所以它先执行(PA的第一个周期开始),并在5ms时完成;
- t=5:在PA完成后,截止时间第二的PB接着执行;
- t=20:在执行到20ms时(PA的第二个周期开始),PA截止时间40ms小于PB截止时间50ms,所以抢占PB并再次执行,直到25m时结束;
- t=25:然后被打断的PB继续执行,直到30ms时结束;
- t=30:接着PC开始执行(PC的第一个周期开始);
- t=40:在执行到40ms时(PA的第三个周期开始),PA截止时间40ms小于PC截止时间100ms,PA抢占PC并再次执行,直到45ms结束;
- t=45:然后被打断的PC继续执行;
- t=50:然后在50ms时(PB的第二个周期),PB截止时间100ms小于等于PC截止时间100ms,PB抢占PC并再次执行;
- t=60:然后在60ms时(PA的第四个周期开始),PA截止时间80ms小于PB截止时间100ms,PA抢占PB并再次执行,直到65ms时结束;
- t=65:接着PB继续执行,并在80ms时结束;
- t=80:接着PA截止时间100ms小于等于PC截止时间100ms,PA继续抢占PC(PA的第五个周期开始),在85ms时结束;
- t=85:然后PC再次执行,在90ms时结束。
上述例子的一个有趣的现象是,虽然RMS调度算法与EDF的调度策略不同,但它们的调度过程是一样的。注意,这不是普遍现象,也有一些例子会出现二者调度过程不同的情况,甚至RMS调度无法满足进程的时限要求,而EDF能满足进程的时限要求。同学们能举出这样的例子吗?
多处理器计算机系统的调度
----------------------------------
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册