收藏 分销(赏)

嵌入式实时操作系统简介.ppt

上传人:二*** 文档编号:12509893 上传时间:2025-10-22 格式:PPT 页数:85 大小:14.41MB 下载积分:5 金币
下载 相关 举报
嵌入式实时操作系统简介.ppt_第1页
第1页 / 共85页
本文档共85页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,.,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,嵌入式系统,An Introduction to Embedded System,第五课 嵌入式实时操作系统(RTOS)简介,教师:蔡铭,cm,助教:王广辉,embededsystem.cai,浙江大学计算机学院人工智能研究所,航天科技浙江大学基础软件研发中心,1,.,课程大纲,嵌入式实时操作系统概况,嵌入式实时操作系统特点,嵌入式实时操作系统功能简介,ARM-Linux嵌入式操作系统内核实验,2,.,背景分析,早期嵌入式系统:硬件所限,汇编语言,基本不采用操作系统,基础条件成熟,硬件的提升,微处理器性能提高、存储器容量增加,软件技术快速发展,编译器、操作系统、集成开发环境,3,.,嵌入式操作系统概述发展阶段(1/4),嵌入式操作系统的发展主要经历了以下四个阶段:,无操作系统的阶段,单芯片为核心,具有与一些监测、伺服、指示设备相配合的功能,一般没有明显的操作系统支持,通过汇编语言编程对系统进行直接控制。,主要特点,系统结构和功能都相对单一,针对性强,无操作系统支持,几乎没有用户接口,4,.,嵌入式操作系统概述发展阶段(2/4),简单监控式的实时操作系统阶段,以嵌入式处理器为基础,以简单监控式的操作系统为核心,主要特点:,处理器种类繁多,通用性比较弱;,开销小,效率高;,一般配备系统仿真器,具有一定的兼容性和扩展性;,用户界面不够友好,主要用来控制系统负载,以及监控应用程序运行。,八十年代初:出现了以,VRTX,(1981),、,pSOS,等为代表的,第一代系统(实时内核),提供了实时操作系统基本功能。,5,.,嵌入式操作系统概述发展阶段(3/4),通用的嵌入式实时操作系统阶段,以通用型嵌入式操作系统为标志的嵌入式系统,主要特点:,运行在不同的微处理器,具有强大的通用型操作系统的功能,文件和目录管理,多任务,设备驱动支持,网络支持,图形窗口,用户界面,具有丰富的API和嵌入式应用软件,八十年代后期到九十年代初期,出现以,VxWorks,、,RTEMS,、,Nucleus,PLUS,、,QNX,、,OSE,为代表的第二代系统。,6,.,嵌入式操作系统概述发展阶段(4/4),二十世纪末,出现了以,Integrity,为代表的第三代系统,进一步在实时性、高可靠性、高可用性等方面提供了强有力的支持。,新一代实时操作系统的发展方向主要包括高可信、高可靠、高可用、高安全、微型化、支持多核等。,近年来,出现了以,Internet,为标志的嵌入式系统,嵌入式系统与Internet的全面结合,嵌入式操作系统与应用设备的无缝结合,代表着嵌入式操作系统发展的未来,新的名词:,WebOS,嵌入式实时操作系统发展,7,.,典型的嵌入式实时操作系统,嵌入式实时操作系统数量众多,如:,VxWorks,Windows CE,pSOS,QNX,PalmOS,Nucleus,Android,国产嵌入式实时操作系统,如:,HOPEN,DeltaOS,SmartOS,SZOS,RT-Linux,Symbian,uc,/OS,RTEMS,T-Kernel,Integrity,ThreadX,8,.,嵌入式实时操作系统,VxWorks,VxWorks,操作系统是美国,WindRiver,公司于,1983,年设计开发的嵌入式实时操作系统,具有高性能、稳定的内核以及友好的用户开发环境,是,世界第一大嵌入式操作系统提供商,,应用于航空航天、工业控制、网络设备、汽车电子等领域,。,VxWorks,所具有的显著特点是:,可靠性、实时性和可裁剪性。,支持多种处理器,如,x86,、,PowerPC,、,ARM,、,Sparc,、,MIPS,、,DSP,等。,经典应用:,1997,年,NASA,火星探路者、,2007,年凤凰号火星探测器,在火星沙丘前进,在火星上拍摄的日落全景,9,.,嵌入式实时操作系统,Integrity,美国,Green Hills,公司是,世界排名第二的嵌入式操作系统提供商,,,I,ntegrity,是,Green Hills,公司的,RTOS,产品,,代表了目前最先进的,RTOS,技术,被,NASA JPL,选中用于测试在太空中的新技术。,分为普通,Embedded,RTOS,和关键应用中使用的,DO-178B,实时操作系统两类。,系统技术优势突出,内核服务优化,系统调用的开销降至最小。,复杂的系统调用可以被抢占。,系统的调度器是一个真正的实时调度器。,具有快速中断处理能力,内核从不阻塞某些中断。,具有一流的集成开发环境,MULTI,支持。,10,.,嵌入式实时操作系统,Windows Embedded,Microsoft,公司针对针对,PDA,、,PocketPC,、移动电话、小型终端设备提供的操作系统,。,用户开发环境、接口,API,、系统界面等与,Windows,相似,因而具有较多的应用。,1996-卡西欧蛤壳式PDA,(Win CE1.0),2006年,1996年,2003年,11,.,开源的嵌入式实时操作系统,嵌入式Linux,嵌入式系统追求数字化、网络化和智能化,要求系统必须是开放的、提供标准的,API,,并能够方便地与众多第三方软硬件沟通。尤其是处于核心地位的操作系统。,Linux,是开放源码的,不存在黑箱技术,遍布全球的众多,Linux,爱好者是其开发的强大技术后盾。,对,Linux,进行实时性改造与裁剪,形成:,Clinux,Embedix,RTLinux,RTAI,Monta,Vista Linux,12,.,开源的嵌入式实时操作系统,C/OSII,C,/OSII,是一种基于优先级抢占式、可移植、可裁剪的多任务实时操作系统。绝大部分源码是用,ANSI C,写的,与硬件相关的那部分汇编代码被压缩至最低限度,使得系统移植性强。,C/OSII,诞生于,90,年代初,最初名称是,C/OS,,由,Jean,J.Labrosse,开发,并在网络上开源,,其特点为短小、精悍,。,C,/OSII,经裁剪最小可达,2KB,,最小数据,RAM,需求,10KB,。,C,/OSII,可以在,8,位,64,位,超过,40,种不同架构的微处理器上运行,在世界范围内得到广泛应用,包括:手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。,13,.,开源的嵌入式实时操作系统,ThreadX,ThreadX,是一款强实时操作系统,以内核小(最小内核为,2K,,最小,RAM 500byte,)、实时性强、高可靠性、源代码开放,免收产品版权费而闻名。由美国,Express Logic,提供解决方案,适于深度嵌入的系统,有功能强大的开发调试环境,MULTI,支持。,典型应用:,2005,年,7,月,4,日,美国,NASA,实施,深度撞击,号宇宙飞船对坦普尔,1,号彗星的准确撞击,关键任务由,ThreadX,完成。,14,.,开源的嵌入式实时操作系统,T-Kernel,由日本东京大学的坂村健教授主持开发,具有执行效率高、实时性好等特点,。,1984,年提出计算机操作系统规范,TRON,(,T,he,R,eal-time,O,perating system,N,ucleus,)构想,先后推出了,ITRON,、,JTRON,、,BTRON,、,CTRON,等规范。,其应用从汽车、移动电话、传真机到电视机、家电等领域,主要用户包括:丰田、松下、日立、富士通、东芝、索尼、佳能、理光、,NEC,等,装机量超过,30,亿,。,IBM,、,Microsoft,、,ARM,、,MIPS,、,Sun,、,Oracle,等企业相继加入其开放式系统架构,。,15,.,手机嵌入式操作系统,IPhone OS,iPhone,OS,或,OS X,iPhone,是由苹果公司为,iPhone,开发的操作系统,iPhone,、,iPod,touch,以及,iPad,以,Darwin,为基础的,系统架构分为四个层次,内核操作系统层(,the Core OS layer,),内核服务层(,the Core Services layer,),媒体层(,the Media layer,),可轻触层(,the Cocoa Touch layer,),系统操作占用大概,240MB,的内存空间,源码模式:封闭源码,+,开放源码 组件,最新版本,4.3.3,2011-5-5,16,.,手机嵌入式操作系统,Windows phone,2010,年,2,月,微软公司正式发布,Windows Phone 7,智能手机操作系统,,Windows Mobile,系列彻底退出了手机操作系统市场。,2011年2月,诺基亚在英国伦敦宣布与微软达成战略合作关系。诺基亚手机将采用Windows Phone系统,并且将参与系统开发。,Windows,phone,把网络、个人电脑和手机的优势集于一身,,提供良好的用户体验:,仪表盘主屏,桌面定制,图标拖拽,滑动控制,将于,2011,年,5,月发布,Window Phone Mango,(,windows phone 7.5,),17,.,手机嵌入式操作系统,Android,Android是Google开发的基于Linux,平台的开源手机,嵌入式操作系统,。,形成了具有,30,多家技术和无线应用的领军企业组成的开放手机联盟,包括:中国移动、摩托罗拉、高通、宏达和,T-Mobile,等。,Android,的优点,融入全部的,Web,应用,包括:,Gmail,、,Google Maps,、,YouTube,、,Google,日历、,Google Talk,Android,操作系统免费向开发人员提供,18,.,嵌入式实时操作系统,Symbian,Symbian,(,EPOC,系统,),由,Nokia,、,Motorola,、,Siemens,等手机厂商联合注资成立的,公司,专注于手机的嵌入式智能操作系统,支持,c+,、,Java,语言,通讯、多媒体处理功能强,目前占有,60,的智能手机市场。,Symbian,具有功能:,协议标准:,IPv4,、,IPv6,、蓝牙、,WAP,、,SyncML,、,USB,通讯能力:支持,2G,、,2.5G,、,3G,系统应用开发,,GSM,、,GPRS,、,CDMA(IS-95),以及,2000,技术支持,多媒体支持:图片、音乐、视频浏览,信息定制:,SMS,、,EMS,、,MMS,、,EMAIL,和,FAX,支持,安全稳定,:支持数据完整性、可靠高效的电池管理、数据同步、数据加密、证书管理、软件安装管理等,19,.,手机嵌入式操作系统,Palm OS,3Com,公司的,Palm,专用于掌上电脑,,在,PDA,市场上占有很大的市场份额,它具有开放的操作系统,应用程序接口,,开发商可以根据需要自行开发所需要的应用程序。,Palm,操作系统是最早的,PDA,操作系统,(1996),,,因而具有最多的应用软件支持,。,Palm OS,的最大优点,简单易用,占用系统资源少,1996-PalmPilot 1000,2002-handera 330,2009-Palm Pre,20,.,新一代嵌入式操作系统简介,WebOS(1/2),WebOS,互联网操作系统,WebOS,概念最早由,Syracuse,大学(雪城大学)的,G.C.Fox,于,1995,年提出,当时称之为,WebWindows,WebOS,是运行在浏览器中的虚拟操作系统,能够在,WebOS,中打开应用程序(执行,Web,服务),提供了,WebOS,API,,能够根据,WebOS,API,进行编程,WebOS,的功能,通过浏览器,在,WebOS,上运用基于,Web,的各种在线应用,实现操作系统上的各种操作,包括:文档的存储、编辑、媒体播放、地图应用、即时通讯等等。,21,.,新一代嵌入式操作系统简介,WebOS(2/2),现有,WebOS,情况,Google(Android,),、,Palm(WebOS,),是典型的,WebOS,已有多于,30,个的,WebOS,系统,大都处于,Alpha,或者,beta,状态,I-Cube,EyeOS,Desktoptwo,YouOS,Craythur,G.ho.st,TomOS,WebOS,Goowy,Glide,Orca,Purefect,SSOE,22,.,I-Cube,提供1G的在线存储和文件共享,多媒体支持和一些常用办公工具。同时拥有一个email客户端和编程开发工具。,23,.,EyeOS,开源软件,可以下载使用,也可以在其服务器上在线使用。拥有丰富的网络程序,以及办公套件。,24,.,Desktoptwo,基于Flash的WebOS,提供了搜索、时钟、MP3播放器、RSS阅读器、即时通讯工具、OpenOffice、HTML编辑器,以及笔记本等工具。,25,.,YouOS,提供了很多有用的应用程序,聊天客户端、IM软件、文件浏览器、RSS阅读器等等。,程序执行的响应速度比较快。,26,.,Craythur/G.ho.st,类似于Windows的操作界面,Craythur,G.ho.st,27,.,国产WebOS,TomOS(千脑),epokos,28,.,课程大纲,嵌入式实时操作系统概况,嵌入式实时操作系统特点,嵌入式实时操作系统功能简介,ARM-Linux嵌入式操作系统内核实验,29,.,嵌入式实时操作系统内核重要特性,嵌入式实时操作系统内核的重要特性,实时性,可裁剪、可配置性,可靠性支持,应用编程接口支持,可移植性,30,.,嵌入式实时操作系统内核实时性能指标,嵌入式实时操作系统内核的实时性能定量指标包括,任务上下文切换时间,中断延迟时间,中断响应时间,中断恢复时间,任务响应时间,31,.,嵌入式实时操作系统内核实时性能关键指标,最大中断禁止时间,反映内核对外界停止中断响应的最长时间,任务上下文切换时间,系统中最频繁发生的动作,影响整个系统性能,包括:保存当前任务上下文、选择新任务,及恢复新任务上下文三个阶段,32,.,提高内核实时性的方法任务调度算法,嵌入式实时操作系统抢占式调度,提高对关键性任务响应,关注最坏执行时间,函数的可重入性设计,通用操作系统非抢占式调度,公平和最小化任务平均响应时间,提高系统吞吐率,33,.,提高内核实时性的方法可抢占内核,嵌入式实时操作系统可抢占内核,内核服务可响应中断,中断退出后可进行调度,通用操作系统不可抢占内核,内核服务不能被中断,内核服务可中断,但不调度,低优先级,内核服务,ISR,高优先级,低优先级,内核服务,ISR,高优先级,34,.,提高内核实时性的方法内核关中断时间,嵌入式实时操作系统,小内核、微内核,内核抢占点等技术,通用操作系统,内核规模大,中断禁止时间长,RTEMS,的内核程序示例,void _Thread_Resume(,Thread_Control *the_thread,boolean force,),ISR_Level level;,States_Control current_state;,_ISR_Disable(level);,-从该行代码开始关中断,进行内核互斥操作,if(force=TRUE),the_thread-suspend_count=0;,else,the_thread-suspend_count-;,if(the_thread-suspend_count 0),_ISR_Enable(level);,return;,current_state=the_thread-current_state;,if(current_state&STATES_SUSPENDED),current_state=,the_thread-current_state=_States_Clear(STATES_SUSPENDED,current_state);,if(_States_Is_ready(current_state),_Priority_Add_to_bit_map(,_Chain_Append_unprotected(the_thread-ready,_ISR_Flash(level);-,该行代码为内核抢占点,if(the_thread-current_priority current_priority),_Thread_Heir=the_thread;,if(_Thread_Executing-is_preemptible|,the_thread-current_priority=0),_Context_Switch_necessary=TRUE;,_ISR_Enable(level);,-从该行代码开始开中断,结束内核互斥操作,35,.,提高内核实时性的方法系统运行状态,许多嵌入式操作系统不划分“系统空间”和“用户空间”,如,VxWorks,、,RTEMS,等,操作系统内核与外围应用程序之间不再有物理的边界,系统中“进程”实际上都是内核线程。,操作系统、应用程序均运行在特权级别的优缺点:,优点:减少由于空间切换导致的执行开销,提高实时性。,缺陷:应用程序可破坏操作系统内核,导致系统崩溃。,操作系统内核,应用程序系统,Ring0:特权级,Ring1,Ring2,Ring3:用户级,操作系统、应用程序,通用系统运行状态,实时系统运行状态,系统调用 陷入内核,36,.,不支持,虚拟存储,:如果采用虚存技术,一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的,因此实时性无法得到保证。许多嵌入式操作系统不直接支持虚拟存储管理技术。,不支持,动态内存分配,:由于动态内存分配具有时间及分配结果的不确定性,因而在,强实时型,系统(,OSEK,)中采用静态内存分配方法,即在系统初始化时,为每个实时任务划分固定的内存区域,系统运行只使用内存,而不再分配内存和释放内存。,提高内核实时性的方法存储管理机制,37,.,资源有限等待,:任务没能获得需要的资源会被阻塞。如果资源不是任务继续运行必备的,任务可选择有限等待该资源。,提高内核实时性的方法任务互斥、同步,优先级逆转,问题解决,抢占式任务调度中的资源竞争:,1997,年,7,月,4,日,火星探路者在火星表面成功着陆并进行观测,发回了各种火星表面全景图,被大肆宣称为“完美”。但是在着陆后的第,10,天,也就是开始采集气象资料后不久,探路者开始犯傻,反复无规律地重启,每次重启都造成了数据丢失,在每天的记者招待会上这都是记者们不会放过的最热门的话题。,JPL,(美国国家航空航天局喷气推进实验室)的工程师们花了相当多的时间在实验室仿真,希望能够再现引起重启的情况。几天过去了,一个清晨,几乎所有的工程师都走了,只剩下最后一位,Mr.So-So,的时候,火星上那台探路者兄弟身上发生的重启情况终于被再现了。经过数据分析,得出了原因,优先级逆转,。,38,.,提高内核实时性的方法优先级逆转问题,嵌入式实时操作系统,优先级逆转现象,采用,优先级继承,协议消除,39,.,中断嵌套处理,:确保高优先级的中断能及时处理。,中断服务层次化,:对中断的处理,不需要完全由中断服务程序(,ISR,)进行处理,采用,ISR,与任务相结合的方法处理,如,eCos,系统,分为两个层次进行:,ISR,、中断滞后服务程序,DSR,。,ISR,在响应中断时立即调用,,DSR,由,ISR,发出请求后调用。,提高内核实时性的方法中断处理,任务执行,ISR,DSR,1、ISR促使DSR就绪,2、ISR退出DSR参与调度,中断请求,40,.,可裁剪性,:用以满足不同复杂程度的应用需求。嵌入式环境资源配置及需求情况各异,一般只要求嵌入式操作系统的功能子集,因而需要裁剪掉部分功能,并保证功能的相对完整性。内核的可裁剪程度取决与模块之间的耦合程度。,裁剪方法,:模块级裁剪、函数级裁剪、代码级裁剪,一个最小的多任务嵌入式软件包括:,Bootloader,具有任务管理及定时功能的基本内核,一个初始化任务,可配置性,:可根据应用需求,配置系统任务数目、调度算法、任务堆栈等。,嵌入式实时操作系统内核的可裁剪、可配置性,41,.,裁剪,目标:内核,100K,模块级裁剪:通过条件编译,裁剪不需要的模块,内核约,35K,函数级裁剪:裁剪未被引用的函数,代码级裁剪:修改代码,如,合并功能相似函数,优化算法实现方法,降低模块耦合度,裁剪模块,未被引用函数,嵌入式实时操作系统内核,裁剪举例VxWorks,内部引用函数,外部引用函数,42,.,代码级裁剪:降低模块耦合度,裁剪模块,嵌入式实时操作系统内核裁剪举例VxWorks,内核模块耦合性分析,43,.,可靠性对于实时系统比非实时应用系统更为重要。,嵌入式实时操作系统内核提供诸多机制进行保障:异步信号、定时器、异常处理、用户扩展、内存保护等。,典型内核可靠性增强技术:,内存释放清理,冗余内存分配,内存冗余编码,内存保护增强,看门狗支持增强,嵌入式实时操作系统内核的可靠性,44,.,每一个嵌入式操作系统提供的应用编程接口(系统调用)的功能和种类都不相同,种类越多、功能越强越好。,应用编程接口的标准化:,POSIX(a,Portable Operating System Interface based on Unix),实时系统标准,,POSIX1003.1c,、,1003.1d,汽车电子标准:,OSEK,航空电子标准:,ARINC653,(,APEX,接口),电气电子标准:,IEC61508,信息家电规范:,T-Kernel,嵌入式实时操作系统内核的应用编程接口,45,.,EAL/CC,:,CC,安全评估是,1999,年起效的一项国际安全标准,共分为,7,级安全评估。,VxWorks,、,Integrity,均通过了,EAL6+,认证。,DO-178B/ED-12B,:美国航空无线电技术委员会(,RTCA,)提出,被美国联邦航空局,/,欧洲航空管理部门接受的机载软件适航认证。,VxWorks,、,Integrity,、,C,/OSII,均得到,Level A,认证。,OSEK/VDX,:欧共体汽车产业联盟规定的汽车电子嵌入式系统标准。风河的,MotoWorks,、微软的,Windows Automotive,、,Nucleus OSEK,、,OSEKturbo,均得到认证。,嵌入式实时操作系统的安全性认证,46,.,课程大纲,嵌入式实时操作系统概况,嵌入式实时操作系统特点,嵌入式实时操作系统功能简介,ARM-Linux嵌入式操作系统内核实验,47,.,嵌入式实时操作系统内核基本功能,嵌入式实时操作系统内核的基本功能,实时多任务管理,中断与异常管理,共享资源互斥管理,多任务同步与互斥,内存管理,时钟定时器管理,电源管理,48,.,1970,年,美国,UIUC,大学的,C.Liu,、,Jane,教授建立了,RTSL,(,real time system lab,)实验室。,1973,年,,C.Liu,、,Layland,在,ACM,杂志上,提出并分析了单调速率调度算法(,Rate Monotonic,,,RM,)和时限调度算法(,Deadline,),开辟了实时系统抢占式任务调度算法、可调度性分析领域的先河。,实时内核基本功能任务调度,49,.,在实时任务抢占式调度算法中,根据任务的优先级确定时机,实时任务调度算法可分为静态调度和动态调度两类。,实时内核基本功能实时任务调度算法分类,实时任务,调度算法,静态调度算法,动态调度算法,执行时间相关,任务周期相关,任务CPU使用率,任务紧急程度,截止时间优先(EDF),最小松弛度优先(LLF),50,.,单调速率调度算法(,C.Liu,、,Layland,;,ACM,,,1973,),现代实时系统任务调度的理论基础,最佳的静态调度算法,算法建立在下述假设基础上,所有任务都是周期任务,每个任务执行截止期等于该任务的周期,每个任务在周期中,执行时间固定,保持常量,任务之间不通信,也不同步,任务可以在任何位置被抢占,不存在临界区,不可调度:指某一个任务在周期内无法完成任务,即:,任务的执行结束时间,任务的截止期,实时内核基本功能任务调度经典算法举例,51,.,不可调度情况举例,假设系统存在任务、执行时间及运行周期如下,实时内核基本功能任务调度经典算法举例,任务,执行时间,周期,优先级,T1,1,2,1,T2,1,4,2,T3,3,8,3,0 2 4 6 8 10 12 14 16,T1,T2,T3,超周期,52,.,RM,算法规定:任务的优先级与任务的周期表现为单调函数,任务周期越短,优先级越高。,对,RM,算法研究的贡献在于,提出了,临界时间,概念,用于判定调度过程中的最坏情况;,证明了,RM,算法是静态调度算法中的,最优性,;,提出了一个,RM,算法中任务可调度性分析的,充分条件,。,临界时间,:一个任务响应所需的最大时间称为临界时间。,如果所有任务的临界时间均小于任务周期,则任务可调度。,一个任务什么时候到达其临界时间?,定理:任何任务在与比其优先级高的所有任务同时被触发时,将达到其临界时间。,实时内核基本功能任务调度经典算法举例,53,.,定理:如果一个任务集能够被其他静态算法调度,那么,RM,算法就一定能调度这个任务集,即,RM,调度是最优的静态调度算法。,证明:采用交换法思路,假设一个任务集,S,采用其他静态优先级算法可以调度,设,ti,和,tj,是其中两个优先级相邻的任务,,Ti,Tj,,而,Pi,Pj,,将,ti,和,tj,的优先级互换,可以证明这时,S,仍然可以调度:,交换这两个任务优先级,不会影响其它任务的完成时间;,Tj,执行时间提前,因而必定不会超过截止时间;,Ti,的执行时间高优先级任务的执行时间,tj,执行时间,ti,执行时间,Tj,1 0.780,,不可调度!,实时内核基本功能任务调度经典算法举例,任务,执行时间,周期,优先级,T1,1,2,1,T2,1,4,2,T3,3,8,3,0 CPU使用率上界 1,可调度 不可判定 不可调度,56,.,中断是一种异步机制,中断服务程序(,ISR,)不需要内核的调度就可以执行。,但,ISR,要和其他应用任务之间协作,以快速、合理响应外部事件。,内核提供与中断相关的功能:,挂接,ISR,:中断向量与处理函数关联,获取,ISR,入口地址,获取中断嵌套层数,开,/,关中断,实时内核基本功能中断管理,57,.,中断服务程序设计中需特别注意,中断冲突,问题:,当,ISR,、,ISR,之间,或,ISR,、任务之间共享变量,或调用含有共享变量的函数时,需防止,共享变量冲突,;,当,ISR,、,ISR,之间,或,ISR,、任务之间共享寄存器,或调用含有共享寄存器的函数时,需防止,寄存器冲突,。,ISR,不允许执行,I/O,操作,,或调用含有,I/O,操作的函数。,ISR,不允许申请信号量(但可以释放信号量!),,或调用含有申请信号量操作的函数(如,malloc,)。,实时内核基本功能中断管理,58,.,实时内核基本功能共享资源互斥,实现共享资源互斥的方法很多,不同之处在于互斥的影响范围和程度不同,常用的方法包括:,关中断:互斥力度最强,但可能降低系统实时性,测试并置位指令:利用某个全局变量判断资源互斥,禁止任务抢占:对任务调度上锁,但不禁止中断,使用信号量:对共享资源上锁,比关中断、禁止任务抢占粒度更精细,lock=0;key=1;,do,_asm(“,xchg,(,while(key);,进入临界区代码;,checkTaskSwitch:,cmpl$0,WIND_TCB_LOCK_CNT(%edx),jnecheckTaskReady,59,.,实时内核基本功能共享资源互斥方法比较,共享资源互斥的设计原则:,当任务之间互斥,可使用所有方法,测试,/,置位、信号量方法,对其他任务运行的干扰小;,当,ISR,之间互斥,只能使用关中断法;,当,ISR,与任务之间互斥,只能使用关中断法。,60,.,同步与通讯的需求,任务任务之间:单向、双向,ISR,任务之间:,单向,常用的同步、通讯机制:,共享内存,信号量,消息:邮箱、消息队列,事件,信号,管道,实时内核基本功能同步与通讯,61,.,共享数据结构,最直接的任务间通信方式,全局变量、线性缓冲区、循环缓冲区、链表,可以被不同上下文环境中运行的代码直接访问,需采用互斥方法进行保护,实时内核基本功能通讯,62,.,信号量:解决任务间同步与互斥的主要手段,。,常用信号量分类,二元信号量(,binary,):快速、通用,对互斥与同步做了优化。,互斥信号量(,mutex,):针对互斥问题进行优化的二元信号量。,递归资源访问:如递归调用包含获取信号量的函数体,安全删除问题:已获取信号量的任务不被意外删除,计数信号量(,counting,):控制共享资源的多个实例。,被信号量阻塞的任务排队策略,FIFO,优先级排序,实时内核基本功能同步、互斥,63,.,消息,是内存空间中一段长度可变的缓冲区。,是一种在任务之间、,ISR,任务之间的通讯机制,注意:,ISR,只可以写消息,但不能读消息!,常用消息分类:,邮箱(,mailbox,):传递简单消息,消息队列(,message queue,):传递可变长的复杂消息,消息进入队列的策略,FIFO,优先级排序,实时内核基本功能通讯,64,.,管道,管道是一个虚设备,提供了通过,I/O,设备接口访问消息队列的一个界面。任务可以使用标准的,I/O,接口,open,、,read,、,write,,以及,ioctl,调用。,事件,用于实现任务之间、,ISR,任务之间多对一、多对多的同步操作,通讯数据量小,主要动作分为接收事件、发送事件。,信号,用于实现任务之间、,ISR,任务之间的异步操作。,实时内核基本功能同步与通讯,65,.,在不更改内核代码的情况下,在内核调用点扩展用户功能。,内核可提供的扩展点包括:,任务创建、任务启动、任务删除、任务上下文切换、任务退出,例如:在任务上下文切换时扩展增加功能,实时内核基本功能用户扩展管理,taskSwitchTable,函数指针4,函数指针3,函数指针2,函数指针1,switchTasks:,。,cmpl$0,_taskSwitchTable,jnedoSwitchHooks,doSwitchHooks,遍历taskSwitchTable,执行动作函数,执行动作1,执行动作2,执行动作3,执行动作4,66,.,课程大纲,嵌入式实时操作系统概况,嵌入式实时操作系统特点,嵌入式实时操作系统功能简介,ARM-Linux嵌入式操作系统内核实验,67,.,两个问题问题1,问题1,:嵌入式软件系统如何获取操作系统内核提供的各类功能服务?,什么方法?,答案:,系统调用,68,.,库函数与系统调用的关系,库函数是,C,语言的一部分,系统调用是操作系统的一部分,。,库函数与操作系统内核提供的系统调用关系,可分为如下三类:,1,:,0,,如:,strcpy,、,strcmp,、,strstr,等;,1,:,1,,如:,printf,、,fopen,、,fread,等,1,:,n,printf(),write(),应用软件,sys_write(),C运行库,操作系统内核,用户级别,特权级别,69,.,ARM-LINUX系统调用原理,printf(),write(),应用软件,sys_write,C运行库,操作系统内核,用户级别,特权级别,软中断指令,swi,系统调用号,系统调用参数,系统调用,映射表,call.S,70,.,两个问题问题2,问题2,:从应用程序访问系统调用方法有哪些?,答案:,1、由库函数访问系统调用,2、通过汇编访问系统调用,71,.,实验目的,熟悉系统调用原理,熟悉ARM-Linux系统调用扩展方法,熟悉操作系统内核编译方法,熟悉通过汇编访问系统调用方法,72,.,实验三内容清单,创建和使用不带参数的系统调用(,必做,),创建和使用带1个参数的系统调用(,必做,),创建和使用带5个参数的系统调用(,必做,),创建和使用带6个参数的系统调用(,选做,),73,.,必做一 创建不带参数的系统调用(1/4),在 arch/arm/kernel/目录下创建一个新的文件mysyscall.c,在 arch/arm/kernel/call.S 中添加新的系统调用,新的系统调用号0 x900000+226,void hello(void),printk,(“hello worldn”);,.long SYMBOL_NAME(sys_gettid),.long SYMBOL_NAME(sys_readahead),.long SYMBOL_NAME(hello),_syscall_end:,.rept NR_syscalls-(_syscall_end-_syscall_start)/4,.long SYMBOL_NAME(sys_ni_syscall),.endr,74,.,修改arch/arm/kernel/目录下的Makefile文件,在obj-y后面添加mysyscall.o,编译内核,obj-y:=arch.o compat.o dma.o$(ENTRY_OBJ)entry-common.o irq.o,process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o,time.o traps.o$(O_OBJS_$(MACHINE)mysyscall.o,必做一 创建不带参数的系统调用(2/4),75,.,一个测试程序来使用新的系统调用:,test.h:,#definesys_hello(),do,_asm_ _volatile_(swi 0 x900000+226nt);,while(0),test.c:,#include,#include “test.h”,int main(void),printf(start hellon);,sys_hello();,printf(end hellon);,必做一 创建不带参数的系统调用(3/4),注意:上面的例子是直接用汇编使用系统调用的,而不是使用libc库函数,因为应用程序使用的是新添加的系统调用,而libc中并没有,所以只能直接用汇编。,76,.,然后执行,启动开发板,将应用程序test通过zmodem协议下载到开发板的文件系统目录下,在板子上运行test程序所得结果如下:,#arm-linux-gcc test.c-o test,#./test,start hello,hello world,end hello,必做一 创建不带参数的系统调用(4/4),77,.,进而,实现一个带参数的系统调用,必做,二 创建带一个参数的系统调用,test.c:,#include,#include “test.h”,int main(void),char*str=“hello worldn”;,printf(start hellon);,sys_hello(str);,printf(end hellon);,78,.,创建和使用不带参数的系统调用实验代码如下:,test.h:,#definesys_hello(),do _asm_ _volatile_(swi 0 x900000+226nt);while(0),test.c:,#include,#include “test.h”,int main(void),printf(start hellon);,sys_hello();,printf(end hellon);,操作系统内核编程风格说明#define中的do while(0)作用(1/2),79,.,在宏定义中的dowhile(0)结构将宏定义中的多条执行语句进行了保护,可以确保语句的模块化:,#def
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服