《ucos操作系统概述》PPT课件.ppt_第1页
《ucos操作系统概述》PPT课件.ppt_第2页
《ucos操作系统概述》PPT课件.ppt_第3页
《ucos操作系统概述》PPT课件.ppt_第4页
《ucos操作系统概述》PPT课件.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 C/OS-II操作系统概述,内容,4.1 C/OS-II简介 4.2 C/OS-II的特点 4.3 实时系统的概念,4.1 C/OS-II简介,C/OS-II来源于术语Micro-Controller Operating System (微控制器操作系统)。它通常也称为MUCOS或者UCOS。 C/OS-II是Jean J.Labrosse在1990年前后编写的一个实时操作系统内核。 任务管理、任务调度、任务的同步与通信、时间管理、内存管理 未包括输入输出管理、文件管理、网络等服务,由用户提供 实时系统概念、多任务调度与管理、时间与内存管理 主要应用于高校教学,4.2 C/OS-II的特点,公开的源代码: C/OS-II的源代码共约5500行,由汇编语言和C语言编写。 使用者使用的是C/OS-II的源程序而不是编译后的程序文件。,4.2 C/OS-II的特点,可移植性: 可使用在多种处理器平台的特性。 可移植性的基础是编写操作系统的语言的可移植性。 汇编语言编写的与处理器特性相关的部分,必须经过修改。 ANSI C语言编写的部分通过不同的编译器编译链接后可直接使用。,4.2 C/OS-II的特点,可固化: C/OS-II通过编译、链接后可以下载并固化在嵌入式设备中的存储介质中。 可裁减: 可以根据应用的需求使用C/OS-II所提供的不同的服务。 C/OS-II通过条件编译实现裁减。,4.2 C/OS-II的特点,可抢占性: C/OS-II操作系统内核是完全可抢占性实时内核。 多任务: C/OS-II可以管理最多64个任务,根据任务的优先级不同进行管理。,4.2 C/OS-II的特点,可确定性: 函数调用和服务的执行时间是可以确定的。 用户可以知道C/OS-II的绝大多数函数和服务的执行时间。,4.2 C/OS-II的特点,任务栈: C/OS-II允许每个任务都有单独的栈空间。 系统服务: C/OS-II提供许多系统服务,比如信号量、互斥信号量、事件标志、消息邮箱、消息队列、时间管理等等,4.2 C/OS-II的特点,中断管理: 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可以达255层 稳定性和可靠性: 比较可靠的嵌入式实时操作系统,4.2 C/OS-II的特点,公开的源代码 可移植性、可固化、可裁减、可抢占性、多任务 可确定性、任务栈、系统服务、稳定性和可靠性,4.3 实时系统概念,4.3.1 系统级概念 4.3.2 代码相关的概念 4.3.3 任务及内核相关的概念 4.3.4 中断相关的概念 4.3.5 时钟节拍 4.3.6 对存储器的需求 4.3.7 使用实时内核的优缺点,4.3.1 系统级概念,软实时系统: 使各个任务运行得越快越好,并不要求限定某一任务的完成时间。 硬实时系统: 任务不仅要执行无误而且要准时完成。,4.3.1 系统级概念,前后台系统超循环系统 后台(任务级):应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作。 前台(中断级):中断服务程序处理异步事件,4.3.2 代码相关的概念,代码的临界段 也称为临界区,指处理时不可分割的代码。 一旦这部分代码开始执行,不允许任何中断打断执行过程。 解决方法: 执行前关中断,执行后开中断。,4.3.2 代码相关的概念,可重入性 一个函数可以被多个任务调用,而不必担心数据的破坏。,int Temp; void swap(int *x, int *y) Temp = *x; *x = *y; *y = Temp; ,4.3.2 代码相关的概念,4.3.2 代码相关的概念,使函数具有可重入性的方法 将Temp定义为局部变量 调用Swap()函数之前关中断,调用后开中断 用信号量禁止该函数在使用过程中被再次调用,4.3.3任务及内核相关的概念,任务与多任务 内核 调度 不可剥夺型内核 可剥夺型内核,任务优先级 互斥条件 信号量 死锁(或抱死) 同步 事件标志任务间的通讯 消息邮箱 消息队列,4.3.3 任务及内核相关的概念,任务 一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序自己。 每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。,4.3.3 任务及内核相关的概念,多任务 多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。 CPU只有一个,轮番服务于一系列任务中的某一个。 多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。,4.3.3 任务及内核相关的概念,任务与多任务 实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。,4.3.3 任务及内核相关的概念,内核 内核提供的基本服务是任务切换。 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。 之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。,4.3.3 任务及内核相关的概念,调度 内核的主要职责之一,就是要决定该轮到哪个任务运行了。 多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。 基于优先级的调度法指:CPU总是让处在就绪态的优先级最高的任务先运行。,4.3.3 任务及内核相关的概念,不可剥夺型内核 不可剥夺型内核要求每个任务自我放弃CPU的所有权。 中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。,4.3.3 任务及内核相关的概念,任务在运行过程之中 产生中断 进入中断服务子程序,中断服务子程序做事件处理 使一个有更高级的任务进入就绪态。 中断服务完成以后,中断返回指令, 使CPU回到原来被中断的任务 接着执行该任务的代码,直到该任务完成,调用一个内核服务函数以释放CPU控制权, 由内核将控制权交给那个优先级更高的、并已进入就绪态的任务, 这个优先级更高的任务才开始处理中断服务程序标识的事件,4.3.3 任务及内核相关的概念,可剥夺型内核 最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。 如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。,4.3.3 任务及内核相关的概念,4.3.3 任务及内核相关的概念,不可剥夺型内核 高优先级的任务已经进入就绪态,也许要等很长时间,直到当前运行着的任务释放CPU后才能执行。 不可剥夺型内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。,可剥夺型内核 高优先级的任务进入就绪态,立刻能够执行。 最高优先级的任务的执行时间是可知的。,4.3.3 任务及内核相关的概念,任务优先级 表征任务的重要程度的量。任务的优先级越高,赋予的优先级就越高。 静态优先级:应用程序执行的过程中,任务的优先级不变。 动态优先级:应用程序执行过程中,任务的优先级是可变的。,4.3.3 任务及内核相关的概念,互斥条件 保证系统处理共享数据或共享资源的排他性的方法。 关中断 使用测试并置位指令 禁止任务切换 利用信号量,4.3.3 任务及内核相关的概念,信号量 在多任务内核中普遍使用的约定机制。 控制共享资源的使用权(满足互斥条件) 标志某时间的发生 使两个任务的行为同步 二进制型 计数型,4.3.3 任务及内核相关的概念,死锁(或抱死) 指两个任务无限期地互相等待对方控制着的资源。 设任务T1正独享资源R1,任务T2在独享资源R2,而此时T1又要独享R2,T2也要独享R1,于是哪个任务都没法继续执行了,发生了死锁。 先得到全部需要的资源再做下一步的工作 用同样的顺序去申请多个资源 释放资源时使用相反的顺序,4.3.3 任务及内核相关的概念,同步 按照一定的时间顺序执行任务。 任务的执行顺序 单向同步 双向同步 同步标志用信号量实现,4.3.3 任务及内核相关的概念,事件标志 当某任务要与多个事件同步时,要使用事件标志。 若任务需要与任何事件之一发生同步,可称为独立型同步(即逻辑或关系)。 任务也可以与若干事件都发生了同步,称之为关联型(逻辑与关系)。,4.3.3 任务及内核相关的概念,任务间的通讯 在任务进行数据传递 全局变量 发送消息,4.3.3 任务及内核相关的概念,消息邮箱 典型的消息邮箱也称作交换消息,是用一个指针型变量,通过内核服务,一个任务或一个中断服务程序可以把一则消息(即一个指针)放到邮箱里去。同样,一个或多个任务可以通过内核服务接收这则消息。发送消息的任务和接收消息的任务约定,该指针指向的内容就是那则消息。,4.3.3 任务及内核相关的概念,消息队列 消息队列实际上是邮箱阵列。通过内核提供的服务,任务或中断服务子程序可以将一条消息(该消息的指针)放入消息队列。同样,一个或多个任务可以通过内核服务从消息队列中得到消息。发送和接收消息的任务约定,传递的消息实际上是传递的指针指向的内容。通常,先进入消息队列的消息先传给任务,也就是说,任务先得到的是最先进入消息队列的消息,即先进先出原则(FIFO)。,4.3.4 中断相关的概念,中断 中断延迟 中断响应 中断恢复时间 中断处理时间,4.3.4 中断相关的概念,中断 中断是一种硬件机制,用于通知CPU有个异步事件发生了。 中断一旦被识别,CPU保存部分(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到: 在前后台系统中,程序回到后台程序 对不可剥夺型内核而言,程序回到被中断了的任务 对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行 关中断和开中断 中断嵌套,也就是说在中断服务期间,微处理器可以识别另一个更重要的中断,并服务于那个更重要的中断,4.3.4 中断相关的概念,中断延迟 所有实时系统在进入临界区代码段之前都要关中断,执行完临界代码之后再开中断。关中断的时间越长,中断延迟就越长。 中断延迟 = 关中断的最长时间 + 开始执行中断服务子程序的第一条指令的时间,4.3.4 中断相关的概念,中断响应 中断响应时间定义为从中断发生到开始执行用户的中断服务子程序代码来处理这个中断的时间。 中断响应是系统在最坏情况下的中断响应时间。 中断响应时间 = 中断延迟 + 保存CPU内部寄存器的时间 中断响应时间 = 中断延迟 + 保存CPU内部寄存器的时间 + 内核的进入中断服务函数的执行时间,4.3.4 中断相关的概念,中断恢复时间 中断恢复时间定义为微处理器返回到被中断了的程序代码所需要的时间。 中断恢复时间 = 恢复CPU内部寄存器值的时间 + 执行中断返回指令的时间 中断恢复时间 = 判定是否有优先级更高的任务进入了就绪态的时间 + 恢复那个优先级更高任务的CPU内部寄存器的时间 + 执行中断返回指令的时间,4.3.4 中断相关的概念,中断处理时间 中断服务的处理时间应该尽可能的短,但是对处理时间并没有绝对的限制。 如果中断服务是在任何给定的时间开始,且中断服务程序代码是应用程序中最重要的代码,则中断服务需要多长时间就应该给它多长时间。 分析事件处理的时间和消息传递的时间。,4.3.5时钟节拍,时钟节拍 时钟节拍是特定的周期性中断。 中断之间的时间间隔取决于不同的应用,一般在10mS到200mS之间。 时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外开销就越大(节拍服务子程序)。,4.3.6 对存储器的需求,前后台系统,对存储器容量的需求仅仅取决于应用程序代码。 使用多任务内核 总代码量 = 应用程序代码 + 内核代码 RAM总需求 = 应用程序的RAM需求 + (任务栈需求 + 最大中断嵌套栈

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论