您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 5、嵌入式实时操作系统分析详解
1ARM原理及应用第五讲实时操作系统C/OS-Ⅱ分析2实时操作系统C/OS-II1324C/OS-II概述任务管理中断和时间管理任务之间的通信与同步5存储管理3通用操作系统和嵌入式(实时)操作系统通用操作系统:Windows/NT/XP、Linux、UNIX等,用于PC机、服务器,嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点;嵌入式(实时)操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等;嵌入式(实时)操作系统的重要指标:实时性(中断响应时间、任务切换时间等)、尺寸(可裁剪性)、可扩展性(内核、中间件);4嵌入式操作系统特点:可装卸性。开放性、可伸缩性的体系结构。强实时性。EOS实时性一般较强,可用于各种设备控制当中。统一的接口。提供各种设备驱动接口。操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。提供强大的网络功能,支持TCP/IP协议及其它协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。更好的硬件适应性,也就是良好的移植性。5嵌入式操作系统的发展操作系统内核应用程序驱动程序和固件操作系统内核文件系统驱动程序和固件APIGUI应用程序操作系统内核文件系统驱动程序和固件APIGUI应用程序通信协议库函数80年代初期80年代中期-90年代中期90年代末期-21世纪6常见的嵌入式操作系统实时嵌入式操作系统的种类繁多,大体上可分为两种,商用型和免费型。商用型的实操作系统功能稳定、可靠,有完善的技术支持和售后服务,但往往价格昂贵,如Vxworks、QNX、WinCE、PalmOS等。免费型的实时操作系统在价格方面具有优势,目前主要有Linux,μC/OS是一种源码开放的商业RTOS;μC/OS是商业操作系统7RTOS在嵌入式系统中的位置嵌入式硬件平台BSPKERNELFSTCP/IP设备驱动设备I/O调试工具其它组件应用RTOSC/C++8C/OS简介1、C/OS——MicroControllerOS,微控制器操作系统2、C/OS简介美国人JeanLabrosse1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等1998年C/OS-II,目前的版本C/OS-IIV2.61,2.722000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中网站()9公开源代码可移植性(Portable)绝大部分C/OS-II的源码是用移植性很强的ANSIC写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得C/OS-II便于移植到其他微处理器上。C/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。可固化(ROMable)C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),C/OS-II可以嵌入到读者的产品中成为产品的一部分。可裁剪(Scalable)可以只使用C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个C/OS-II调用,而另一个产品则使用了几乎所有C/OS-II的功能,这样可以减少产品中的C/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一)10占先式(Preemptive)多任务C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有256个任务可确定性全部C/OS-II的函数调用与服务的执行时间具有可确定性。任务栈每个任务有自己单独的栈,C/OS-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。系统服务C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。中断管理中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。稳定性与可靠性C/OS的性能特点(二)11µC/OS-II图书描述了µC/OS-II内部的工作原理随书的CD中包含了源代码工业界最清晰的源代码除英文版外,有中文和韩文版ChineseKoreanEnglishISBN1-57820-103-9美国CMPBOOKISBN7-81077-290-2北京航空航天大学出版社ISBN89-951540-5-512µC/OS-II的各种商业应用全世界有数百种产品在应用:AvionicsMedicalCellphonesRoutersandswitchesHigh-endaudioequipmentWashingmachinesanddryersUPS(UninterruptiblePowerSupplies)IndustrialcontrollersGPSNavigationSystemsMicrowaveRadiosInstrumentationPoint-of-saleterminals更多13µC/OS-II提供的系统服务信号量带互斥机制的信号量减少优先级倒置的问题事件标志消息信箱消息队列内存管理时钟管理任务管理14µC/GUIandµC/FSµC/GUI嵌入式的用户界面用ANSIC书写支持任何8,16,32-bitsCPU彩色,灰、度,等级或黑白显示代码尺寸小µC/FS嵌入式的文件系统WritteninANSIC用ANSIC书写支持任何8,16,32-bitsCPU支持SMC,MMC,SD,CF,IDE,Flash,RAM其他介质15C/OS-II的文件结构16多道程序技术为了提高计算机系统中各种资源的利用率,现代操作系统广泛采用多道程序技术(multi-programming),使多个程序同时在系统中存在并运行。17CPUI/O单道程序:多道程序:CPUI/O作业甲(红黄)作业乙(蓝绿)1819进程、线程和任务在多道程序系统中,各个程序之间是并发执行的,共享系统资源。CPU需要在各个运行的程序之间来回地切换,这样的话,要想描述这些多道的并发活动过程就变得很困难。为此,操作系统设计者提出了进程的概念。20什么是进程?Aprocess=aprograminexecution一个进程应该包括:程序的代码;程序的数据;PC中的值,用来指示下一条将运行的指令;一组通用的寄存器的当前值,堆、栈;一组系统资源(如打开的文件)总之,进程包含了正在运行的一个程序的所有状态信息。21main(){…..}A(){…..}PROCESS•AprogramisCstatementsorcommands静态的;•Aprocessisprogram+runningcontext动态的.main(){…..}A(){…..}PROGRAMheapStackAMainRegisters,PCProcess≠Program22进程的特性动态性:程序的运行状态在变,PC、寄存器、堆和栈等;独立性:是一个独立的实体,是计算机系统资源的使用单位。每个进程都有“自己”的PC和内部状态,运行时独立于其他的进程(逻辑PC和物理PC);并发性:从宏观上看各进程是同时独立运行的23四个进程在并发地运行(本图摘自AndrewS.Tanenbaum:“ModernOperatingSystems”)24什么是线程?自从60年代提出进程概念以来,在操作系统中一直都是以进程作为独立运行的基本单位,直到80年代中期,人们又提出了更小的能独立运行的基本单位线程。25Why线程?【案例】编写一个MP3播放软件。核心功能模块有三个:(1)从MP3音频文件当中读取数据;(2)对数据进行解压缩;(3)把解压缩后的音频数据播放出来。26单进程的实现方法main(){while(TRUE){Read();Decompress();Play();}}Read(){…}Decompress(){…}Play(){…}问题:•播放出来的声音能否连贯?•各个函数之间不是并发执行,影响资源的使用效率;I/OCPU27多进程的实现方法程序1main(){while(TRUE){Read();}}Read(){…}问题:进程之间如何通信,共享数据?程序3main(){while(TRUE){Play();}}Play(){…}程序2main(){while(TRUE){Decompress();}}Decompress(){…}28怎么办?需要提出一种新的实体,满足以下特性:(1)实体之间可以并发地执行;(2)实体之间共享相同的地址空间;这种实体就是:线程(Thread)29什么是线程?Thread:•Asequentialexecutionstreamwithinaprocess;•Athreadofexecution;•进程当中的一条执行流程。30从两个方面来理解进程:从资源组合的角度:进程把一组相关的资源组合起来,构成了一个资源平台(环境),包括地址空间(代码段、数据段)、打开的文件等各种资源;从运行的角度:代码在这个资源平台上的一条执行流程(线程)。资源平台线程31进程=线程+资源平台优点:一个进程中可以同时存在多个线程;各个线程之间可以并发地执行;各个线程之间可以共享地址空间。32线程所需的资源(本图摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)331324C/OS-II概述任务管理中断和时间管理任务之间的通信与同步5存储管理34什么是任务?在许多嵌入式操作系统当中,一般把能够独立运行的实体称为“任务”(Task),那么这里所说的任务到底是进程还是线程呢?35任务的实现在多道程序(多任务)的嵌入式操作系统中,任务之间的结构为层状结构,存在着父子关系;当嵌入式内核刚刚启动时,只有一个任务存在,然后由该任务派生出所有其他的任务。36任务的层次结构OS初始任务任务任务任务任务任务任务任务37任务的创建在嵌入式操作系统当中,任务的创建主要有两种模型:fork/exec和spawn;fork/exec:符合IEEE/ISOPOSIX1003.1标准,先用fork系统调用创建与父任务完全相同的一份内存空间,然后再用exec系统调用来移除父任务的内容,并调入子任务的程序代码。优点:允许继承;spawn:直接为子任务创建一个全新的地址空间,并装入其程序代码。38任务的描述问题:如果让你来设计OS当中的任务机制,那么你将如何来描述一个任务?描述任务的数据结构:任务控制块(TaskControlBlock,TCB)。系统为每个任务都维护了一个TCB,用来保存与该任务有关的所有信息。39任务控制块的内容任务ID、任务的状态、任务的优先级;CPU上下文信息:通用寄存器的值、PC寄存器的值、程序状态字、栈指针的值;如果在该OS中,任务描述的是进程,则还应包括其他的一些内容,如段表地址、页表地址等存储管理方面的信息;根目录、文件描述字等文件管理方面的信息。40任务的创建:
本文标题:5、嵌入式实时操作系统分析详解
链接地址:https://www.777doc.com/doc-5222363 .html