- 6
- 0
- 约2.25千字
- 约 20页
- 2019-03-30 发布于天津
- 举报
3.实时操作系统的内核课程设计.ppt
实时操作系统的内核;任务要获得CPU的控制权,从就绪态进入运行态是通过任务调度器完成的。任务调度器从当前已就绪的所有任务中,依照任务调度算法选择一个最符合算法要求的任务进入运行状态。任务调度算法的选择很大程序上决定了该操作系统的实时性能,这也是种类繁多的实时内核却无一例外选用特定的几个实时调度算法的原因。
调度是操作系统的主要职责之一,它决定该轮到哪个任务运行。往往调度是基于优先级的,根据其重要不同被给于任务不同的优先级。CPU总是让处于就绪态的优先级最高的任务先运行。何时让高优先级任务掌握CPU的使用权,要看用的是什么类型的内核,是非抢占式的还是抢占式的内核。
实时操作系统中常用的任务调度算法包括基于优先级的抢占式调度算法、同一优先级的时间片轮转调度算法和单调速率调度算法。;1.1 基于优先级的抢占式调度算法;1.1.1 非抢占式调度;由于其他任务不能抢占该任务的CPU控制权,如果该任务不主动释放CPU,则势必使系统进入死锁。每个任务在设计过程必须在任务结束时释放所占用的资源,它不能是一个无限运行的循环。这是非抢占式内核运行的先决条件。
优点:
*响应中断快。
*可使用不可重入函数。由于任务运行过程中不会被其他任务抢占,各任务使用的子函数不会被重入,所以在非抢占式调度算法中可以使用不可重入函数。
*共享数据方便。
任务运行过程中不被抢占,内存中的共享数据被一个任务使用时,不会出现被另一个任务使用的情况,这使得任务在使用共享数据时不使用信号量等保护机制。当然,由于中断服务子程序可以中断任务的执行,所以任务与中断服务子程序的共享数据保护问题仍然是设计系统中必须考虑的问题。;1.1.2 抢占式调度;抢占式调度算法的特点是任务级响应时间得到最优化,而且是确定的,因而中断响应较快。由于任务在运行过程中可以被其他任务抢占,所以任务不应直接使用不可重入函数,只有对不可重入函数进行加锁保护才能使用。同理,对共享数据的使用也需要互斥,信号量等保护机制。绝大多数的实时内核使用基于优先级的抢占式调度算法。
在实时系统中,使用基于优先级的抢占式调度算法时,要特别注意对优先级反转问题进行处理。优先级反转问题体现的是高优先级的任务等待,属于被低优先级任务占有系统资源而形成的高优先级任务等待低优先级运行的反常情况。如果低优先级在运行时又被其他任务抢占,则系统运行情况会更糟。
见P28实例。
解决优先级反转的问题有优先级继承和优先级封顶两种方法。;(1)优先级继承;(2)优先级封顶;(3)优先级继承和优先级封顶的比较;1.2 同一优先级的时间片轮转调度算法;在时间片轮转算法中,时间片的大小选择会影响系统的性能和效率。时间片太小,任务频繁进行上下切换,实际运行程序的时间很少,系统的效率很低;时间片太大,算法变成先进先出算法,调度的公平性就没有得到体现。时间片的选择根据实时内核的不同而有所差异。
1.2 单调速率调度算法
单调速率调度算法主要用于分配任务的优先级。它根据任务执行的频率确定优先级的。任务的执行频率越高,其优先级越高;反之,优先级越低。;1.2 任务间的通信;1.2.1.1 共享数据结构
实现任务间通信的最简单方法是共享数据结构。共享数据结构的类型可以是全局变量、指针、缓冲区等。在使用共享数据结构时,必须保证共享数据结构使用的排它性;否则,会导致竞争和对数据时效的破坏。因此,在使用共享数据结构时,必须实现存取的互斥的机制。实现互斥比较常用的方法有:开/关中断、设置测试标志位、禁止任务切换以及信号量机机制等。
*开/关中断实现互斥指在进行共享数据结构的访问时先进行关中断操作,在访问完成后再开中断。
*设置测试标志位方法指在使用共享数据的两个任务间约定时,每次使用共享数据前都要检测某个事先约定的全局变量。如果变量为0,则可读写,若为1,则不能。;*禁止任务切换指在进行共享数据的操作前,先禁止任务的切换,操作完成后再解除任务禁止切换。这种方式虽然实现了共享的互斥,但是实时系统的多任务切换在此时被禁止,有违多任务的初衷,应尽量少使用。
*信号量在多任务的实时内核中的主要作用是用做共享数据结构或共享资源的互斥机制,标志某个事件的发生,以及同步两个任务。信号量有两种:二进制信号量和计数信号量。
1.2.1.2 消息机制
任务间的另一种通信方式是使用消息机制。任务可以通过系统服务向另一个任务发送消息。消息通常是一个指针变量,指针指向的内容就是消息。消息机制包括消息邮箱和消息队列。
*消息邮箱通常是内存空间的一个数据结构。
*??息队列实际上是一个邮箱阵列,在消息队列允许存放多个消息。对消息队列的操作和对消息邮箱的操作的操作基本相同。;1.2.1 任务间的同步
任务同步中也常常使用信号量。与任务通信不同的是,信号量的使用不再作为一种互斥机制,而是代表某个特定的事件
原创力文档

文档评论(0)