您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 实时操作系统(RTOS)培训
深圳国微技术有限公司2005-07-11实时操作系统(RTOS)培训实时系统概念实时系统是指在确定的时间内完成规定功能,并能对外部异步事件作出正确响应的计算机系统实时系统分类硬实时系统:结果迟到产生灾难性结果FIRM实时系统:结果迟到会产生难以接受的质量上的降低软实时系统:结果迟到会引起质量下降,系统可以自行恢复衡量系统实时性的3个指标:响应时间(ResponseTime)生存时间(SurvivalTime)吞吐量(Throughput)嵌入式系统嵌入式系统通常都是实时系统,其特征为系统的正确性不但依赖于运行逻辑结果的正确性,而且依赖于得到结果所花费的时间系统对于各种外部输入在预定时间内能得到可以预测的结果嵌入式系统通常使用RTOS,其特征为在不同的系统负载下,行为可以预测支持基于优先级的调度MEMORY模型对于RTOS的性能十分重要通常都需要一个时钟来处理任务的同步HRTSRTNRT内存分配SD/SD虚存NNYS-STATICD-DYNAMIC比较嵌入式系统(续)硬件特性体积小,集成效率高面向特定应用低功耗,能在恶劣环境下工作软件特性软件的研发与硬件紧密相关软件代码要求高效率和高可靠性软件一般固化在FLASH或ROM中应用工业过程控制军事电子设备和现代武器网络通信设备消费电子产品嵌入式实时系统软件特征实时性:反应时间要快,按要求的间隔输出正确时间信号给实时的控制设备多任务并发性:利用适当的策略控制多任务的执行,提高资源的利用效率有处理异步事件的能力快速启动,并有出错处理和自动复位功能嵌入式实时软件是应用程序和操作系统两种软件的一体化程序嵌入式实时软件的开发需要独立的开发平台和交叉开发环境主要的嵌入式实时操作系统VxWorks使用最广、市场占有率最高的嵌入式实时操作系统,美国WindRiver公司产品VRTX老牌嵌入式实时操作系统pSOSISI公司推出,现已被WindRiver公司收购WinCEMicrosoft公司推出,实时性不太好,主要用于掌上系统PalmOS3Com公司推出,在PDA市场占有很大份额嵌入式Linux源代码免费开放,eCOS是Redhat推出的一款嵌入式LINUX操作系统前后台系统通常应用于不复杂的小型系统应用程序是一个无限的循环,这部分可以看成后台行为(background)中断服务程序处理异步事件,这部分可以看成前台行为(foreground)后台也可以叫做任务级,前台也叫中断级前后台系统(续)多任务系统CPU在许多任务之间转换、调度,轮番服务于一系列任务中的某一个优点:使CPU的利用率得到最大的发挥使应用程序模块化可以将很复杂的应用程序层次化应用程序将更容易设计与维护RTOS组成操作系统是硬件与用户之间的一层系统软件,负责管理整个系统,同时将硬件细节与用户隔离开来为用户提供一个更容易理解和进行程序设计的接口操作系统的质量以它的体系结构为基础,确保系统的性能、可靠性、灵活性、可移植性、可扩展性等,同时定义了硬件与软件的界面,操作系统内部各构件的组织关系系统与用户的接口RTOS资源分配必须考虑到实时性要求合理分配优先级支持优先级抢占提供任务同步和互斥支持不同任务之间的数据共享支持外部事件(中断)响应系统可剪裁,由于资源限制,所采用的操作系统应该有极强的针对性,因此操作系统功能够用即可易于扩展,由于嵌入式设备的功能多样化,要求嵌入式操作系统除提供基本的内核支持外,还需提供越来越多的可扩展功能模块(含用户扩展),如:针对特有应用提供的协议支持、协议扩展,功耗控制等等RTOS组成(续)HALRTOS基本内核线程线程管理时钟管理中断设备驱动管理通信管理存储管理RTOS扩展内核接口协议管理其它APIRTOS组成(续)基本内核:嵌入式RTOS中最核心最基础的部分任务(线程/线程)管理:负责系统中任务状态的变迁中断(包括时钟中断)管理:开关中断,完成现场切换和保持任务(线程/线程)通信管理:信号量、事件、消息队列等存储管理:分配存储器空间扩展内核:为方便用户使用而对RTOS进行的扩展根据具体应用不同所做的扩展不同CAM应用中表现为对CI接口协议进行管理设备驱动程序接口:RTOS内核与外部硬件之间的一个硬件抽象层定义软件与硬件的界限,方便RTOS的移植升级应用编程接口:建立在RTOS编程接口之上的面向应用领域的编程接口方便用户编写特定领域的嵌入式应用程序RTS的响应时间及时性是实时系统最为重要的特性设计者应该能预测实时系统的行为同步任务由时钟来同步异步事件通常由中断驱动一个多任务RTOS的事例Resourceallocation&mgmtTaskScheduling&DispatchRealtimeclockInterruptServiceroutinesI/OSubsystemFileMGMTSystemtasksApplicationtasksUserLevelOSLevelCommandprocessor资源任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等可以被一个以上任务使用的资源叫做共享资源为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥(mutualexclusion)任务一个任务也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序自己每个任务都是整个应用的某一部分,被赋予一定的优先级,有自己的一套CPU寄存器和栈空间多任务系统中,任意时刻只有一个任务占有CPU资源一个任务通常是一个无限的循环,当任务完成以后,任务可以自我删除TCB(任务控制块)TCB在任务建立时将被赋值(初始化)TCB是一个数据结构,用来保存该任务的状态:堆栈指针、堆栈大小、任务状态、任务优先级……任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差地继续执行TCBs全部驻留在RAM中任务状态每个任务都处在以下5种状态之一:休眠态,就绪态、运行态、挂起态和被中断态休眠态:该任务驻留在内存中,但并不被内核所调度就绪态:该任务已经准备好运行,但由于优先级比正运行的任务优先级低,还暂时不能运行运行态:掌握了CPU的控制权,正在运行中挂起态:也叫等待态,在等待某一事件的发生中断态:发生中断时,进入相应的中断服务任务状态变迁图WAITINGDORMANTREADYRUNNINGISR任务状态变迁就绪--运行调度程序选择一个新的线程运行运行--就绪运行线程用完了时间片运行线程被高优先级线程抢占运行--等待当一线程必须等待时等待某外设的I/O操作等待某共享资源由暂不能使用变成能使用状态等待定时脉冲的到来或等待超时信号的到来以结束目前的等待……等待--就绪当所等待的事件发生时任务切换也称为上下文切换(ContextSwitch)当多任务内核决定运行另外的任务时:保存正在运行任务的当前状态(Context),即CPU寄存器中的全部内容。这些内容保存在任务自己的栈区之中把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行任务切换过程增加了应用程序的额外负荷任务调度任务调度就是按一定的调度算法从就绪任务中选中一个任务到处理器上运行主要工作:(1)记录当前任务状态(如指令计数器、状态寄存器、通用寄存器等)到TCB;(2)根据调度算法,在就绪任务中选一个任务;(3)回收处理机并分配给选中的任务。任务调度方式非抢占式调度抢占式调度由于嵌入式操作系统对实时性的较强要求,因此基本上使用抢占式调度。调度算法FIFO:先来先服务短作业优先基于优先级:时间片轮转(RoundRobin):固定时间片可变时间片多级队列算法多级反馈队列算法其它组合策略调度算法非抢占式调度抢占式调度可重入性(Reentrancy)可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏可重入型函数任何时候都可以被中断,一段时间以后又可以运行编写可重入型函数需遵循的规则:使用局部变量,即变量保存在CPU寄存器或堆栈中尽量不使用static或extern变量任务优先级每个任务都有其优先级。任务越重要,赋予的优先级应越高eCos任务及优先级优先级0~255,优先级的最低3bits忽略,因此0~7、8~15……各组内的优先级相同,组外数值越大,优先级越高eCos任务结构:roottask1task2task3task4task5idle任务管理创建任务(CreateTask)删除任务(DeleteTask)挂起任务()唤醒任务()改变任务优先级()获取任务优先级()获取当前任务ID任务管理(sidsaAPI)t_createULONGt_create(charname[4],ULONGprio,ULONGsstack,ULONGustack,ULONGflags,ULONG*tid)t_startULONGt_start(ULONGtid,ULONGmode,void*start_addr,ULONGtargs[])t_deleteULONGt_delete(ULONGtid)t_suspendULONGt_suspend(ULONGtid)t_resumeULONGt_resume(ULONGtid)t_wkafterULONGtm_wkafter(ULONGticks)任务管理(kernelAPI)cyg_thread_createcyg_thread_exitcyg_thread_killcyg_thread_deletecyg_thread_yieldcyg_thread_delaycyg_thread_suspendcyg_thread_resumecyg_thread_release任务管理(kernelAPI续)cyg_thread_get_prioritycyg_thread_get_current_prioritycyg_thread_set_prioritycyg_thread_selfcyg_thread_idle_threadcyg_thread_get_stack_basecyg_thread_get_stack_sizecyg_thread_measure_stack_usagecyg_thread_get_nextcyg_thread_get_infocyg_thread_find任务间通信及同步共享内存(ShareMemory)信号量(Semaphore)互斥量(Mutex)事件标志(EventFlag)消息邮箱(MessageBox)消息队列(MessageQueue)信号量(Semaphore)信号量用于:控制共享资源的使用权(满足互斥条件)标志某事件的发生使两个任务的行为同步一个信号量是一个16位变量,初值为0~65535,值为0表示资源处于锁住状态,非0表示有多个资源,供多个任务访问信号量表示符号:钥匙或旗帜信号量的P、V操作等待信号量(P操作):如果信号量值大于0,则信号量值减1,任务得以继续运行如果信号量的值为0,等待信号量的任务被挂起并列入等待信号量任务表释放信号量(V操作):如果没有任务在等待信号量,信号量的值仅仅是简单地加1如果有任务在等待该信号量,那么就会有一个任务进入就绪态,信号量的值也就不加1P、V操作为原语操作,原语(primitiveoratomicaction):是由若干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性即原语的执行必须是连续的,在执行过程中不允许被中断实现:开关中断信号量的使用:必须置一次且只能置一次初值初值不能为负数只能执行P、V操作信号量的P、V操作(续)用P、V操作解决线程间互斥问题P(mutex)V(mutex)P1P2P3互斥区P(mutex)P(mutex)V(mutex)V(mutex)优先级反转问
本文标题:实时操作系统(RTOS)培训
链接地址:https://www.777doc.com/doc-975016 .html