免费智能真题库 > 历年试卷 > 系统分析师 > 2022年上半年 系统分析师 上午试卷 综合知识
  第18题      
  知识点:   多任务调度机制   调度算法
  关键词:   调度程序   嵌入式   实时系统   算法        章/节:   操作系统       

 
嵌入式实时系统存在许多调度算法。如果调度程序根据任务的紧急程度确定该任务的优先级,任务紧急程度高,被赋予的优先级就高,可被优先执行。这种调度算法称之为()。
 
 
  A.  最早截止时间优先(Earliest Deadline First, EDF)算法
 
  B.  最低松弛度优先(Least Laxity First, LLF)算法
 
  C.  单调速率调度(Rate Monotonic Scheduling, RMS)算法
 
  D.  抢占式优先级调度(Preemptive Priority Scheduling, PPS)算法
 
 
 

 
  第65题    2023年上半年  
   30%
在 Linux 操作系统中通常使用( )作为 Web 服务器,其默认的 Web 站点的目录为( )。
  第52题    2019年上半年  
   76%
“从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置。”..
  第15题    2022年上半年  
   27%
嵌入式系统已被广泛应用到各行各业。嵌入式系统是一个内置于设备中,对设备的各种传感器进行管理与控制的系统。通常,根据系统对..
   知识点讲解    
   · 多任务调度机制    · 调度算法
 
       多任务调度机制
        首先,我们介绍几个基本概念:
        (1)任务。任务是独立执行的线程,线程中包含着独立的可调度的指令序列。实时应用程序的设计过程包括如何把问题分割成多个任务,每个任务是整个应用的一个组成部分,每个任务被赋予一定的优先级,有自己的一套寄存器和栈空间。在大多数典型的抢占式调度内核中,在任何时候,无论是系统任务还是应用任务,其状态都会处于就绪、运行、阻塞三个状态之一。另外,某些商业内核还定义了挂起、延迟等颗粒更细的状态。
        (2)任务对象。任务是由不同的参数集合和支持的数据结构定义。在创建任务时,每个任务都拥有一个相关的名字、一个唯一的标识号ID、一个优先级、一个任务控制块、一个堆栈和一个任务的执行例程,这些部件一起组成一个任务对象。
        (3)多任务。多任务是操作系统在预定的死线内处理多个活动的能力。多任务的运行使CPU的利用率得到最大地发挥,并使应用程序模块化。随着调度的任务数量的增加,对CPU的性能需求也随之增加,主要是由于线程运行的上下文切换增加的缘故。
        (4)调度器。调度器是每个内核的心脏,调度器提供决定何时哪个任务运行的算法。多数实时内核是基于优先级调度的。
        (5)可调度实体。可调度实体是一个可以根据预定义的调度算法,竞争到系统执行时间的内核对象。
        (6)上下文切换。每个任务都有自己的上下文,它是每次被调度运行时所要求的寄存器状态,当多任务内核决定运行另外的任务时,它保存正在运行的任务的上下文,恢复将要运行下一任务的上下文,并运行下一任务,这个过程称为上下文切换。在任务运行时,其上下文是高度动态的。调度器从一个任务切换到另一个任务所需要的时间称为上下文切换开销。
        (7)可重入性。指一段代码被一个以上的任务调用,而不必担心数据的破坏。具有可重入性的函数任何时候都可以被中断,一段时间以后继续运行,相应数据不会遭到破坏。
        (8)分发器。分发器是调度器的一部分,执行上下文切换并改变执行的流程。分发器完成上下文切换的实际工作并传递控制。任何时候,执行的流程通过三个区域之一:应用任务、ISR(Interrupt Service Routines,中断服务程序)或内核。
        根据如何进入内核的情况,分发的情况也有所不同。当一个任务是用系统调用时,分发器通常在每个任务的系统调用完成后退出内核。在这种情况下,分发器通常以调用一调用为基础的,因此,它可以协调由此引起的任何系统调用的任务状态转移。另一方面,如果一个ISR做系统调用,则分发器将被越过,直到ISR全部完成它的执行。
        当前,大多数内核支持两种普遍的调度算法,即基于优先级的抢占调度算法和时间轮转调度算法。
               基于优先级的抢占调度
               基于优先级的抢占调度又可以分为静态优先级和动态优先级。静态优先级是指应用程序在执行的过程中各任务的优先级固定不变。在静态优先级系统中,各任务以及它们的时间约束在程序编译时是已知的;动态优先级是指应用程序在执行的过程中各任务的优先级可以动态改变。这种类型的调度,在任何时候运行的任务是所有就绪任务中具有最高优先级的任务,任务在创建时被赋予了优先级,任务的优先级可以由内核的系统调用动态而更改,这使得嵌入式应用对于外部事件的响应更加灵活,从而建立真正的实时响应系统。
               一般情况下,可以采用单调执行速率调度法(Rate Monotonic Scheduling, RMS)来给任务分配优先级,基本原则是执行最频繁的任务优先级最高。RMS做了如下假设:
               (1)所有的任务都是周期性的。
               (2)任务间不需要同步,没有共享资源,没有任务间的数据交换等问题。
               (3)系统采用抢占式调度,总是优先级最高且就绪的任务被执行。
               (4)任务的死线是其下一周期的开始。
               (5)每个任务具有不随时间变化的定长时间。
               (6)所有的任务具有同等重要的关键性级别。
               (7)非周期性任务不具有硬死线。
               要使一个具有n个任务的实时系统中的所有任务都满足硬实时条件,必须使下述定理成立(RSM定理)。
               
               式中,Ei是任务i最长执行时间,Ti是任务i的执行周期,Ei/Ti是任务i所需的CPU时间。
               基于RSM定理,要所有的任务满足硬实时条件,则所有有时间要求的任务总的CPU利用时间(或利用率)应当小于70%。通常,作为实时系统设计的一条原则,CPU利用率应当在60%~70%之间。
               时间轮转调度
               时间轮转调度算法为每个任务提供确定份额的CPU执行时间。显然,纯粹的时间轮转调度是不能满足实时系统的要求的。取而代之的是,基于优先级抢占式扩充时间轮转调度,对于优先级相同的任务使用时间片获得相等的CPU执行时间。内核在满足以下条件时,把CPU控制权转交给下一个就绪态的任务:
               (1)当前任务已无事可做。
               (2)当前任务的时间片还没用完任务就已经结束了。
               如下图所示,任务Task1、Task2、Task3具有相同的优先级,它们按照时间片运行,任务Task2被更高优先级的任务Task4抢占,当Task4执行完毕后恢复Task2的执行。
               
               时间轮转调度
               任务操作
               内核提供任务管理服务,也提供一个允许开发者操作任务的系统调用,典型的任务操作有任务创建和删除、任务调度控制、任务信息获取。
 
       调度算法
        常用的进程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈调度算法。
        (1)先来先服务(FCFS)。FCFS按照作业提交或进程成为就绪状态的先后次序分配CPU,即进程调度总是将就绪队列队首的进程投入运行。FCFS的特点是比较有利于长作业,而不利于短作业;有利于CPU繁忙的作业,而不利于I/O繁忙的作业。FCFS算法主要用于宏观调度。
        (2)时间片轮转。时间片轮转算法主要用于微观调度,其设计目标是提高资源利用率。通过时间片轮转提高进程并发性和响应时间特性,从而提高资源利用率。时间片的长度可以从几毫秒到几百毫秒,选择的方法一般分为固定时间片和可变时间片两种。
        (3)优先级调度。该算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用CPU。优先级调度分为静态优先级和动态优先级两种。
        (4)多级反馈调度。多级反馈队列调度算法是时间片轮转算法和优先级算法的综合与发展。其优点有三个方面:第一,照顾了短进程以提高系统吞吐量,缩短了平均周转时间;第二,照顾I/O型进程以获得较好的I/O设备利用率和缩短响应时间;第三,不必估计进程的执行时间,动态调节优先级。
   题号导航      2022年上半年 系统分析师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第18题    在手机中做本题