实时操作系统的内核.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当系统响应时间很重要时,要使用抢占式内核。最高优 先级的任务一旦就绪,总能得到CPU的控制权。当一 个运行的任务时,另一个比它优先级高的任务进入了 就绪态,当前任务的CPU使用权就被剥夺了,或者说 被挂起了,高优先级的任务立即得到CPU的控制权。
抢占式调度算法满足在处理器中运行的任务是已就绪任 务中优先级最高的任务。任务在执行过程中允许更高 的优先级任务抢占该任务对CPU的控制权。
与非抢占式调度算法不同的是当任务被中断,中断服务 子程序运行完成后,不一定返回被中断的任务,而是 执行新的任务调度,看就绪队列中是否有比被中断的 任务拥有更高优先级的任务就绪。如果有,更高优先 级的任务就调入并运该任务;否则,继续运行被中断的 任务。如P28图1-7。
抢占式调度算法的特点是任务级响应时间得到最优wenku.baidu.com, 而且是确定的,因而中断响应较快。由于任务在运行 过程中可以被其他任务抢占,所以任务不应直接使用 不可重入函数,只有对不可重入函数进行加锁保护才 能使用。同理,对共享数据的使用也需要互斥,信号 量等保护机制。绝大多数的实时内核使用基于优先级 的抢占式调度算法。
任务要获得CPU的控制权,从就绪态进入运行态是通过 任务调度器完成的。任务调度器从当前已就绪的所有 任务中,依照任务调度算法选择一个最符合算法要求 的任务进入运行状态。任务调度算法的选择很大程序 上决定了该操作系统的实时性能,这也是种类繁多的 实时内核却无一例外选用特定的几个实时调度算法的 原因。
由于其他任务不能抢占该任务的CPU控制权,如果该任务不 主动释放CPU,则势必使系统进入死锁。每个任务在设计 过程必须在任务结束时释放所占用的资源,它不能是一个 无限运行的循环。这是非抢占式内核运行的先决条件。
优点:
*响应中断快。
*可使用不可重入函数。由于任务运行过程中不会被其他任 务抢占,各任务使用的子函数不会被重入,所以在非抢占 式调度算法中可以使用不可重入函数。
实时操作系统的内核
在实时操作系统中最关键的部分是实时多任务内核。它 主要实现任务管理、任务间通信与同步、存储器管理、 定时器管理和中断管理等。
1 任务管理
实时操作系统中的任务与操作系统中的进程相似。它具 有独立功能的无限循环的程序段的一次运行活动。
运行的任务状态有4种: *运行态:获得CPU控制权。 *就绪态:进入任务等待队列,通过调度转为运行态。 *挂起态:任务发生阻塞,移出任务等待队列,等待系统
*共享数据方便。
任务运行过程中不被抢占,内存中的共享数据被一个任务使 用时,不会出现被另一个任务使用的情况,这使得任务在 使用共享数据时不使用信号量等保护机制。当然,由于中 断服务子程序可以中断任务的执行,所以任务与中断服务 子程序的共享数据保护问题仍然是设计系统中必须考虑的 问题。
1.1.2 抢占式调度
非抢占式内核的一个特点是几乎不需要使用信号量保护 共享数据。运行的任务占有CPU,而不必担心被别的 任务抢占。非抢占式内核的最大缺陷在于其响应高优 先级的任务慢,任务已进入就绪态但还不能运行,也 许要等很长的时间,直到当前运行的任务释放CPU。 内核的任务级响应时间是不确定的,最高优先级的任 务什么时候才能拿到CPU的控制权完全取决于应用程 序什么时候释放CPU。见P27图1-6。
1.1 基于优先级的抢占式调度算法
实时系统为每个任务赋予一个优先级。任务优先级在一 定程序上体现了任务的紧迫性和重要性,越重要的任 务赋予的优先级就越高。实时系统允许多个任务共享 一个优先级,通过同一优先级的时间片轮转调度算法, 完成任务的调度。
优先级调度原则是让高优先级的任务在得到资源运行的 事件上比低优先级的任务更有优先权。这保证了实时 系统中紧急的、对时间有严格限制的任务能得到更为 优先的处理,而相对不紧急的任务则等到紧急任务处 理完后才继续运行。
实时事件的发生而唤醒,从而转为就绪或运行。
*休眠态:任务完成或错误等原因被清除的任务,也可以 认为是系统中不存在的任务。
任何时刻系统中只能有一个任务在运行状态,各任务按 级别通过时间片使它获得对CPU的访问权。任务就绪 后进入就绪态,等待队列。通过调度程序使它获得 CPU和资源使用权,从而进入运行态。任务在运行时 因申请资源等原因而挂起,转入挂起态,等待运行条 件的满足。当条件满足后,任务被唤醒进入就绪态, 等待系统调度程序依据调度算法进行调度。任务的休 眠态是任务虽然在内存中,但不被实时内核所调度的 状态。
调度是操作系统的主要职责之一,它决定该轮到哪个任 务运行。往往调度是基于优先级的,根据其重要不同 被给于任务不同的优先级。CPU总是让处于就绪态的 优先级最高的任务先运行。何时让高优先级任务掌握 CPU的使用权,要看用的是什么类型的内核,是非抢 占式的还是抢占式的内核。
实时操作系统中常用的任务调度算法包括基于优先级的 抢占式调度算法、同一优先级的时间片轮转调度算法 和单调速率调度算法。
任务还有一个状态,即被中断状态,它指任务在运行态 时有中断请求到达,系统响应中断,转而执行中断服 务子程序,任务被中断后所处的状态。
多任务运行的实现是靠CPU在许多任务之间转换、调度。 CPU只有一个,轮流服务于一系列任务中的某一个。 多任务系统中,内核负责管理各个任务,并负责任务 之间的通信。内核提供的基本服务是任务切换。内核 对CPU的占用时间一般在2-5%之间。
实时操作系统都采用基于优先级的任务调度算法。按照 任务在运行过程中是否能被抢占,可以分为抢占式调 度和非抢占式调度。
1.1.1 非抢占式调度
非抢占式调度法也称为合作型多任务,各个任务彼此合 作共享一个CPU。中断服务可以使一个高优先级的任 务由挂起状态变为就绪状态。但中断服务以后控制权 还是回到原来被中断的那个任务,直到该任务主动放 弃CPU的使用权,那个高优先级的任务才能获得CPU 的使用权。
在实时系统中,使用基于优先级的抢占式调度算法时, 要特别注意对优先级反转问题进行处理。优先级反转 问题体现的是高优先级的任务等待,属于被低优先级 任务占有系统资源而形成的高优先级任务等待低优先 级运行的反常情况。如果低优先级在运行时又被其他 任务抢占,则系统运行情况会更糟。
相关文档
最新文档