当前位置:文档之家› 实时操作系统的内核.ppt

实时操作系统的内核.ppt

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