嵌入式实时操作系统.pptx
《嵌入式实时操作系统.pptx》由会员分享,可在线阅读,更多相关《嵌入式实时操作系统.pptx(36页珍藏版)》请在三一办公上搜索。
1、嵌入式实时操作系统,多任务实时操作系统,前后台系统,前后台系统的组成:前台和后台程序后台:是一个无限循环的应用程序,循环中调用相应的任务函数完成相应的操作,各个任务依次运行,没有调度,运行的次序不能改变。前台:是中断服务程序,处理异步事件。,适用情形,一般不复杂或实时性要求不高的小系统很适合采用前后台系统,例如微波炉、电话机、玩具等。在另外一些基于省电的应用中,由于平时微处理器处在停机状态,所有的事都靠中断服务来完成,因此也常常采用前后台系统模式。,操作系统,操作系统(Operating System,简称OS)是计算机中最基本的程序。操作系统负责计算机系统中全部软、硬资源的分配以及回收、控制
2、与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统功能提供软件平台。操作系统的主要包括四大功能:处理机管理:解决CPU的分时复用。存储管理:配合CPU调度内存。设备管理:分配外设的使用,包括独享、共享和虚拟。软件资源管理:解决程序和信息的存取和管理等问题。,实时操作系统,实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。,多任务实时操作系统,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个
3、任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度和异常处理等工作。多任务实时操作系统,以分时方式运行多个任务,看上去好像是多个任务“同时”运行。任务之间的切换应当以优先级为根据,只有具有优先服务方式的RTOS才是真正的实时操作系统,而时间分片方式和协作方式的RTOS并不是真正的“实时”。,相关基本概念,资源与共享资源,程序运行时可使用的软、硬件环境统称为资源。资源可以是输入/输出设备,例如打印机、键盘和显示器;资源也可以是一个变量、一个结构或一个数组等。共享资源就是指可以被一个以上任务使用的资源。为防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫互斥。,任务
4、,任务,也称为线程,是一个程序。一般地,每个任务都是一个无限的循环。任务有五种状态,任何时刻,一个任务都处于这五种状态之一的状态下。休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。就绪态意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂不能运行。运行态的任务是指该任务掌握了CPU的控制权,正在运行。挂起态指该任务在等待,等待某一事件的发生。被中断状态是指,发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。,内核与任务切换,内核是操作系统最基本的部分。负责管理各个任务,为每个任务分配资源,它提供的基本服务是任务
5、切换。任务切换当多任务内核决定运行另外的任务时,保存正在运行任务的当前状态,即保存CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自己的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。,中断,中断是最基本的任务切换方式,停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到以下部分:1.在前后台系统中,程序回到后台程序;2.对非占先式内核而言,程序回到被中断了的任务;3.对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。,调度,任务的调度方式有基
6、于时间片轮转的调度和基于优先级的调度。多数实时系统是基于优先级调度法的。基于优先级的调度法指CPU总是让处于就绪态的优先级最高的任务先运行。至于何时让高优先级任务掌握CPU的使用权,有两种不同的情况:占先式调度任何时候具有最高优先级且已就绪的任务先执行。非占先式调度要求每个任务自我放弃CPU的所有权。,临界区,临界资源:任何时候都只允许一个任务访问的资源。临界区或临界段:用于访问临界资源的代码段。临界代码段不允许多个并发任务交叉执行,否则会产生严重后果,比如进入中断后的现场保护代码等。为确保临界区代码的安全执行,在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断,函数的可重入性,可重
7、入(Reentrant)型函数:是指可以被多个任务并发使用,而数据不会遭到破坏的函数。可重入型函数特征:只使用局部变量,变量保存在CPU寄存器或堆栈中,可以在任意时刻被中断,再重新恢复运行时,数据不会被破坏;若使用全局变量,则需满足互斥条件。,可重入型函数实例void func1(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;不可重入型函数清单static int temp;void func2(int*x,int*y)temp=*x;*x=*y;*y=temp;,死锁,所谓死锁,是指各并发任务彼此等待对方所拥有的资源,且这些并发任务在得到对方的资源之前
8、不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发任务不能继续向前推进的状态。最简单的防止死锁发生的方法有两种:1.让每个任务先得到全部需要的资源,再进行下一步工作。2.让每个任务用同样的顺序去申请多个资源,释放资源时使用相反的顺序。,消息队列和时钟节拍,消息队列是保存消息的容器。通过内核提供的服务,任务或中断服务子程序可以将消息放入消息队列。同样,任务可以通过内核服务从消息队列中得到消息。通常,先进入消息队列的消息先给任务,遵循先进先出原则(FIFO)。内核提供的典型消息队列服务如下:1.消息队列初始化,队列初始化时总是清为空;2.放一则消息到队列中去(POST);3
9、.等待一则消息的到来(PEND);4.无等待取得消息。,基于RTX51操作系统的软件设计,RTX51是Keil公司开发的专门针对于8051兼容MCU所作的多任务实时操作系统,是Keil自带的小操作系统之一。有二个不同的RTX51版本,RTX51 Full和RTX51 TinyRTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程序没有main()函数,是从任务0开始执行的,也不支持抢先任务切换和任务优先级。RTX51 Tiny的程序用标准的C语言构造,由Keil C51 C编译器编译。用户可以很
10、容易的定义任务函数,而不需要进行复杂的栈和变量结构配置,只需包含一个指定的头文件(rtx51tny.h)。RTX51 Tiny使用定时器0、定时器0中断,和寄存器组1。,单任务和伪多任务,voidmain(void)while(1)do_something();/一直循环执行do_something任务,voidmain(void)while(1)key_scan();/键盘扫描do_key();/处理按键事件ctr_adj();/调整控制器,RTX51 Tiny的多任务(程序结构),voidjob0(void)_task_0os_create_task(1);/创建任务1os_create_
11、task(2);/创建任务2os_create_task(3);/创建任务3os_delete_task(0);/删除任务0voidjob1(void)_task_1/键盘扫描任务while(1)key_scan();,voidjob2(void)_task_2/处理按键事件任务while(1)do_key();voidjob3(void)_task_3/调整控制器任务while(1)ctr_adj();,RTX51的任务调度,RTX51利用任务状态来管理各个任务。用户为RTX51定义的每个任务都会以各种状态的某一种来运行。RTX51内核为每个任务保留了适当的状态如下表所示。RTX51的任务状
12、态表,RTX51的任务调度,RTX51支持多个任务的准并行执行。任务不是被同时执行,而是以分时的方式轮片执行。可用的CPU时间被分成多个时间片,然后由RTX51 将这些时间片分配给各个任务。每个任务只允许在预定的时间片中执行,时间片用完时,RTX51就切换至另一个就绪的任务,继续执行一段时间。时间片的具体长度可以用配置函数TIMESHARING来定义。如果遇到因为一个任务处于等待并且占用了时间片而暂时无法往下执行,可以调用系统函数os_wait来通知RTX51,以便将当前的任务挂起而提前执行另一任务。,RTX51的任务调度,RTX51中处理任务分配的模块称为调度程序(Scheduler)。调度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实时 操作系统

链接地址:https://www.31ppt.com/p-4617437.html