欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    嵌入式操作系统的内核.ppt

    • 资源ID:6569778       资源大小:247.50KB        全文页数:66页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式操作系统的内核.ppt

    1.3嵌入式操作系统,嵌入式操作系统发展,近十年来,嵌入式操作系统得到飞速的发展从支持8位微处理器到16位、32位甚至64位微处理器;从支持单一品种的微处理器芯片到支持多品种微处理器芯片;从只有内核到除了内核外还提供其他功能模块,如文件系统,TCP/IP网络系统,窗口图形系统等。,嵌入式操作系统技术现状,适应不同的嵌入式硬件平台,具有可移植、可伸缩能力。采用的主要技术:编程语言普遍采用高级语言实现,主要以C语言为主。体系结构采用分层和模块化结构或微内核结构。,嵌入式操作系统技术现状(续),分层和模块化结构,将操作系统分为:硬件无关层硬件抽象层硬件相关层每层再划分功能模块移植工作集中在硬件相关层,与其余两层无关功能的伸缩集中在模块上,从而确保了系统具有良好的可移植性和可伸缩性。,嵌入式操作系统技术现状(续),良好的实时性:时间确定性是嵌入式实时操作系统必备的特点,特别对于强实时嵌入式系统而言尤为重要。采用的主要技术:采用实时调度算法。主要采用静态优先级的可抢占式调度、比率单调算法等。采用内存静态分配策略和零拷贝技术保证确定性。内存管理不采用虚存管理机制采用优先级继承和优先级天花板两种技术解决优先级反转(倒置)问题,嵌入式操作系统技术现状(续),可靠性和高可用 采用的主要技术:利用存储管理单元(MMU)、用户态和核心态机制,实现操作系统与应用程序的隔离,以及应用程序和应用程序之间的隔离,以防止应用程序破坏操作系统的代码、数据。,嵌入式操作系统的发展趋势,体系结构向微内核方向发展可伸缩、可移植、可剪裁、可配置行业的标准:多种操作系统平台,应用决定操作系统结构紧凑、功能强大高可用(High Available)、高可靠(High Reliable)、支持多处理器和分布式计算可动态加载和升级软件与开发工具有机的结合起来,行业标准,行业性嵌入式软硬件平台嵌入式系统是以应用为中心的系统,不会象PC一样只有一种平台吸取PC的成功经验,形成不同行业的标准。统一的行业标准具有开放、设计技术共享、软硬件重用、构件兼容、维护方便和合作生产的特点,是增强行业性产品竞争能力的有效手段。,1.嵌入式实时系统基础,实时计算(real-time computing)是许多重要应用领域中的关键技术。这些领域包括:过程控制、核电站、智能车辆公路系统、航空、飞行控制、通信、多媒体、办公自动化、自动化控制、计算机外设、消费电子、实时模拟、虚拟现实、医疗应用和军事等。几乎所有的安全关键(safety critical)系统和许多嵌入式计算机系统都是实时系统。实时计算正变得越来越重要和普遍。,2.嵌入式实时操作系统及发展,广泛使用的有三种操作系统即多道批处理操作系统、分时操作系统以及实时操作系统。多道批量处理系统一般用于计算中心较大的计算机系统中。由于它的硬件设备比较全,价格较高,所以此类系统十分注意CPU及其它设备的充分利用,追求高的吞吐量,不具备实时性。分时系统的主要目的是让多个计算机用户能共享系统的资源,能及时地响应和服务于联机用户,只具有很弱的实时功能,,IEEE的实时UNIX分委会认为实时操作系统应具备以下的几点:1.异步的事件响应2.切换时间和中断延迟时间确定3.优先级中断和调度4.抢占式调度5.内存锁定6.连续文件7.同步,嵌入式操作系统,嵌入式操作系统常常有实时要求早期:嵌入式操作系统=实时操作系统近期:1)手持计算机和掌上计算机的出现;2)CPU速度的提高;3)常规操作系统增加实时进程调度的支持,如POSIX.4 嵌入式操作系统 实时操作系统,实时操作系统可以分为两种:一般实时操作系统和嵌入式实时操作系统,嵌入式实时操作系统的发展,嵌入式实时操作系统得到飞速的发展,从支持8位微处理器到16位、32位甚至64位,从支持单一品种的微处理器芯片到支持多品种微处理器芯片,从只有实时内核到除了内核外还提供其他功能模块如:高速文件系统,TCP/IP网络系统,窗口系统。,嵌入式操作系统从八十年代初出现商业化产品,经过近二十年的发展,到目前为止,国际市场上已出现了近百个嵌入式操作系统家族,支持不同处理器的200多个产品。,Wind River公司的VxWorks,pSOS+,Microtec Research公司(MRI)的VRTX,弱实时,强实时,3 COM的PalmOS、微软的Windows CE、版本众多的嵌入式Linux。,嵌入式实时操作系统正向实时超微内核、定制化(ASOS)和支持无线网络、低功耗及动态加载等方向发展。,超微内核是一种非常紧凑的基本内核代码层,为嵌入式应用提供了可抢占,快而确定的实时服务,在它的基础上可以灵活地构造各种类型的、与现成系统兼容的、可伸缩的嵌入式实时操作系统。因此能满足应用代码的可重用和可伸缩性(scalability)的需求。,DeltaCORE2.0是一个强实时、嵌入式多任务操作系统内核。其目标CPU为Intel 80 x86,ARM,MPC860,MIPS运行方式为平面保护模式(flat protected mode),适用于内存要求较大、可靠性要求较高的嵌入式系统。DeltaCORE2.0的任务响应时间快速、确定,并且不随负载大小改变。DeltaCORE2.0提供任务扩展处理接口,用户可以通过这些接口扩展内核处理任务的功能。DeltaCORE2.0绝大部分源代码用C语言编写,具有良好的可移植性。DeltaCORE2.0提供系统配置表,用户可以根据应用的具体情况配置内核的规模。,任务管理,任务的定义有多种提法,常用的有以下几种:-一个可调度的单元-可获得处理器的实体-并发系统中互相竞争资源的单个执行体可以与其它计算序列并发执行的计算序列。具有独立功能的无限循环的程序段的一次运行活动,不同的内核实现对任务状态的定义不尽相同,但是都可以概括为以下三种状态:-执行态E 当前占有CPU的任务状态-就绪态R 一旦获得CPU就能执行的任务状态-阻塞态B 由于资源条件未满足,没有资格竞争CPU的任务状态,任务的上下文和上下文切换,任务的上下文记录了该任务的执行环境(如,寄存器的内容)。针对不同体系结构的处理器,任务的上下文有不同的定义。任务的上下文切换表示当前执行任务在将处理器的控制权交给即将运行的任务之前,把它的执行环境(该任务的上下文)保存到相应的数据结构中,用即将运行任务的上下文重新布置执行环境。,任务响应,任务响应是指从任务就绪到它真正开始运行这一过程。任务响应时间又称调度延迟(scheduling latency),表示完成这一过程需要的时间。,任务调度的概念,任务调度就是从就绪状态的任务中,挑选一个任务到处理器上运行。操作系统中负责任务调度的程序称为任务调度程序(scheduler)或任务调度器(dispatch)。,实时操作系统内核常用的几种任务调度算法,优先级调度算法 优先级调度就是让高优先级的任务优先得到处理的调度策略。1不可抢占调度(non-preemptive scheduling)系统中,一旦某个任务占有了处理器就一直运行下去,直到该任务由于自身的原因(如等待事件)自愿放弃处理器,任务调度程序才按优先级进行重调度,让其它任务运行。任务在运行过程中只能被中断打断(抢占)。,2可抢占调度(preemptive scheduling),任何时刻都严格按照高优先级任务在处理器上运行的原则进行任务调度,或者说,在处理器上运行的任务永远是就绪任务中优先级最高的任务。,同优先级任务的时间片轮转调度算法,时间片轮转调度算法是指当有两个或多个就绪任务具有相同的优先级且它们是就绪任务中优先级最高的任务时,任务调度程序按照这组任务就绪的先后次序调度第一个任务,让它运行一段时间。运行的这段时间称为时间片(time slicing)。当任务运行完一个时间片后,该任务即使还没有停止运行,也必须释放处理器让下一个与它相同优先级的任务运行(假设这时没有更高优先级的任务就绪)。释放处理器的任务被排到同优先级就绪任务链的链尾,等待再次运行。,一种嵌入式操作系统的任务调度机制,就绪任务队列链组 建立一个新任务通过系统调用task_create,系统会为这个新任务分配一个任务控制块,并完成一系列的初始化的操作,如设置任务调度方式,分配任务堆栈空间等,然后调用task_start,使得任务的状态变为就绪态,建立一个链表数组_Thread_Ready_chain255,数组的长度为255,分别代表优先级为从1到255的(0级被系统保留)255个就绪任务队列链。如新任务1的优先级为30,如果它的状态变为就绪态,则把它的任务控制块挂接到链表_Thread_Ready_chain30中。,优先级位图算法,在进行任务重调度时,要从所有就绪任务中找出优先级最高的那个任务。所以要在发生任务调度之前,先计算好_Thread_Heir,使继承任务为优先级最高的那个任务。但为了保证调度时间的确定性,采用优先级位图算法迅速计算优先级最高的任务,做到调度时间与就绪任务数无关。,优先级位图算法通过两个数据结构_the_Priority_map和_Priority_Major_bit_map来计算优先级最高的就绪任务。_the_Priority_map定义为一个无符号短整型数组,大小为16。无符号短整型长度为16比特,其中的每一位都表示一个优先级,若为1,表示相应的优先级上有任务已经处于就绪态(不一定只有一个任务),若为0,则相应的优先级上没有任务就绪。无符号短整型由16位比特组成,数组的大小又为16,所以一共可以表示256个优先级(其中0级为系统保留)。,位图_the_Priority_map,_Priority_Major_bit_map,使用了一个无符号的16位短整型_Priority_Major_bit_map来表示相应的优先级组中是否有任务就绪,为1则表示该组中有任务就绪。,寻找优先级最高的任务即成为先通过_Priority_Major_bit_map计算有就绪任务的最高优先级组,再根据找到的组号到位图_the_Priority_map相应的组中寻找有就绪任务的这组中的最高的优先级,最后根据这个优先级到就绪任务队列链组中寻找相应的就绪任务队列链,得到链首任务的任务控制块,这就是继承任务,把它赋值给_Thread_Heir。,任务调度,当发生任务调度的时候,通过调用函数_Thread_Dispatch()来完成。_Thread_Executing和_Thread_Heir是两个重要的指针常量,_Thread_Executing指向当前正在运行的任务的任务控制块,_Thread_Heir指向下一个应该得到运行的任务的任务控制块,,void _Thread_Dispatch(void)关中断;通过常量_Thread_Executing和_Thread_Heir得到进行调度的两个任务的任务控制块;转变任务常量等一系列的操作;执行任务上下文的切换函数_Context_Switch(运行任务,继承任务);开中断;,1.4.2 任务间同步、通信机制的分析,实时操作系统的内核一般通过信号量(semaphore)和事件(event)来满足同步的需要;通过消息机制(message queue)提供通信的服务。另外,有的操作系统内核还提供异步信号量机制(signal or asynchronous signal)、管道(pipe)和共享内存(shared memory)做为补充方式。,信号量机制,信号量用于实现任务之间、任务与中断服务程序之间的同步和任务之间的互斥。根据用途,信号量一般分为三种:用于解决互斥问题的互斥信号量、用于解决同步问题的二进制信号量和用于解决资源计数问题的计数信号量。其中互斥信号量比较特殊,存在的优先级反转问题。一般是通过解决它存在的优先级反转问题来解决资源竞争中存在的优先级反转问题。,简单二值信号量 仅用于实现同步机制,初始值为0。一个任务调用delta_semaphore_obtain等待另一个任务的到来。另一个任务到达同步点时,调用delta_semaphore_release唤醒等待的任务。一般二值信号量 可实现同步或者互斥机制。用于同步时初始值为0,用于互斥时初始值为1。用于互斥机制时,任务进入保护区前,需执行delta_semaphore_obtain防止其它任务进入,退出保护区前,需执行delta_semaphore_release允许其它任务进入。计数信号量,初始值为非负整数。控制若干资源的访问,优先级反转问题,优先级反转是一种不确定的延迟形式,经常出现于存在共享资源的多任务、可抢占的执行体中。当高优先级任务企图访问已被某低优先级任务占有的共享资源时,就会引起优先级反转。高优先级任务必须等待直到低优先级任务释放它占有的资源。如果该低优先级任务又被一个或多个中等优先级任务阻塞,问题就更加严重。因为低优先级任务得不到执行就不能访问资源、释放资源。于是,低优先级任务就以一个不确定的时间阻塞高优先级的任务,系统的实时性没有保障。,系统存在任务A、B、C(优先级从高到低排列)和资源 D。某时,任务A和任务B都被阻塞,任务C运行,占用资源D。一段时间后,任务A和任务B相继就绪,任务A抢占任务C运行,申请资源D失败被挂起。由于任务B的优先级高于任务C,任务B运行。任务A因任务C不能运行、释放资源D,一直被阻塞。极端情况下,任务A永远无法运行,处于饿死状态。解决优先级反转问题的常用算法有优先级继承和优先级天花板。,优先级继承,优先级继承是将低优先级任务的优先级抬升到等待它所占有的资源的高优先级任务的优先级。每当高优先级任务由于等待资源被阻塞,此资源的拥有者的优先级将会被抬升。使用按任务优先级等待策略的互斥信号量可以采用优先级继承算法。当占有互斥信号量的任务的优先级低于请求获得互斥信号量的任务的优先级时,占有互斥信号量的任务的优先级被抬升到请求互斥信号量的任务的优先级。当任务释放完它所占有的全部互斥信号量时,它的优先级才恢复到它在进行任何优先级继承操作前的优先级。,优先级继承的一个示例,优先级天花板,优先级天花板算法是将申请某资源的任务的优先级抬升到可能访问该资源的所有任务中最高优先级任务的优先级。这个优先级称为该资源的优先级天花板。互斥信号量的优先级天花板在它被创建时指定。,优先级继承与优先级天花板的比较,一方面,优先级天花板算法避免了优先级继承算法因为需要若干次改变占有资源的任务的优先级引入的额外开销,具有较高的效率。另一方面,优先级天花板算法要求在互斥信号量被创建时就确定出可能访问竞争资源的任务情况,从而获得该资源的优先级天花板。对于一个简单的系统这一点不成问题,但是对于一个复杂的系统要确定竞争资源的优先级天花板是一件非常困难的事。,事件机制事件机制用于任务之间、任务与ISRs之间的同步。一个事件就是一个标志,不具备其它信息。往往内核会定义若干个事件,称为事件组。信号量也能用于同步,那么提供事件机制的意义何在呢?,事件可以提供更复杂的同步机制。等待事件的操作可以有“与”或者“或”的关系。“与”关系表示等待的几个事件都要发生才算等待的结果发生了。“或”关系表示等待的几个事件只要有一个发生就算等待的结果发生了。,DeltaCORE定义的事件有以下特点:1事件只与任务相关,事件间相互独立DeltaCORE定义的每个任务拥有DELTA_EVENT_0到DELTA_EVENT_31,共32个事件标记,用一个32-bit无符号整形数记录,每一个bit代表一个事件。若干个事件构成一个事件组。2事件仅用于同步,不提供数据传输功能3事件无队列,即多次向任务发送同一事件,其效果等同于只发送一次。delta_event_send 发送事件delta_event_receive 接收事件,DELTA_EVENT_3|DELTA_EVENT_15|DELTA_EVENT_22|DELTA_EVENT_31这是一个包括事件3、15、22、31的事件组。,消息机制,消息机制在任务和任务之间、任务和中断服务程序之间提供消息传送(通信)机制。DeltaCORE提供双向同步消息机制,定义的消息是一段长度可变的缓冲区,其内容可以是实际的数据或者是数据块的指针。,嵌入式操作系统的存储管理机制分析,一般操作系统的存储管理非常复杂,广泛使用了虚拟存储管理。在具体的嵌入式应用中,任务的数量和各自可能使用的内存容量在开发时就已预测。另外,对于实时、嵌入式应用,如果采用虚拟存储管理,由于页交换的时间不可预测会影响整个系统的确定性。所以实时、嵌入式系统通常不采用虚拟存储管理,采用静态内存分配;或者为了提高内存分配的灵活性,采用动态内存分配。动态内存分配根据内存块的大小是否固定,分为固定大小的内存分配和可变大小的内存分配两种方式。其中,可变大小的内存分配一般没有回收内存碎片的处理,而是通过对申请的内存大小加一些限制和在算法中加入一些技巧来避免内存碎片的产生。,DeltCORE内存管理机制提供分区和堆两种管理机制。分区用于固定大小内存块的分配,堆用于可变大小内存块的分配。,中断管理机制的分析,中断是对内部、外部事件立即做出响应的一种机制,由外设或者机器指令触发,不受调度程序支配。用于处理某一中断的程序称为该中断的服务程序或者处理程序(ISR)。,中断的处理包括以下三部分:前导部分 保存中断现场,通知系统进入中断处理。用户的ISR这部分由用户提供,完成对中断的处理,包括使用一些系统调用,与任务通信与同步。用户ISR与普通的函数(无参数和返回值)具有完全相同的模式。后续部分恢复中断现场,通知系统退出中断处理程序。最后一级中断退出时,产生调度,返回到优先级最高的任务,否则退出到上一级被中断的中断处理程序。,图4-6中断接管机制,中断嵌套每个中断都有一个硬件上定义好了的优先级。有的实时内核允许一个中断的处理过程被优先级更高的中断打断,即中断嵌套。,中断延迟时间,中断延迟时间定义为中断发生到开始执行ISR第一条指令之间的时间。即中断延迟时间=最大关中断时间+硬件开始处理中断到开始执行ISR第一条指令之间的时间。,中断响应时间中断响应时间是实时系统重要的性能指标。它被定义为从中断发生到开始执行用户中断服务程序的第一条指令之间的时间。根据内核是可抢占内核还是不可抢占内核,中断响应时间的内容不同。-不可抢占内核中断响应时间=中断延迟时间+中断现场保存时间。-可抢占内核处理中断时先要做一些处理,确保中断返回前调度器能正常工作。这些处理包括通知内核处于中断处理中、保存中断嵌套计数器,以便中断解除嵌套后允许重调度的发生。所以,中断响应时间=中断延迟时间+中断现场保存时间+内核所做处理的时间。,中断恢复时间中断恢复时间的定义为用户中断服务程序结束到返回被中断的代码之间的执行时间。根据内核是否可被抢占中断恢复时间的内容不同。-不可抢占内核中断恢复时间=中断现场恢复时间+中断返回指令之前的执行时间。-可抢占内核因包括重调度在内,所以中断恢复时间=中断现场恢复时间+重调度时间+中断返回指令之前的执行时间。,时间、定时管理,时间分为两种,绝对时间和相对时间。绝对时间就是日历时间,以年、月、日、时、分、秒的时间格式记录,时间单位为秒。相对时间是相对某一刻经过的时间,时间单位为时基。时间设备以一定的晶振频率(该频率可能是固定的或者可调节,要看硬件是否提供相应的支持,并且该频率与CPU的频率无关)提供一个规则的脉冲序列,若干个脉冲序列(通常称为初始计数值)完成后产生一次时钟中断,时基的时间长度=时钟中断的个数*脉冲序列的个数*脉冲周期。,定时管理实时内核中的定时管理提供以下功能:维持日历时间。任务有限等待的计时。软定时器的定时管理。维持系统时间片轮转调度。,DeltaCORE的时间管理,DeltaCORE的时间管理通过硬件时钟设备的中断服务程序实现。DeltaCORE提供相对时间和日历时间,时间单位分别是时基(tick)和秒(second),其中秒是时基的整数倍,时基是系统中精度最高的时间单位。一个时基与具体时间的对应关系可在硬件时钟设备初始化时设定。我们在目前支持的所有平台下提供的缺省对应关系为1个时基对应于10个毫秒。DeltaCORE维护时基链和秒链两个链表,分别用于维护相对时间和日历时间,都以差分时间链加以管理。,差分时间链中每个表项所包含的计时值并非当前时刻到表项激活时刻的绝对记数,而是该表项和先于它的所有表项的记数值之和。例如,系统已形成一个8、7、9、3、6的差分时间链,现在有37和18两个新的定时对象要插入该链表,加入过程:,37,硬件时钟中断每发生一次,其中断服务程序将时基链或者秒链的链头项记数值减1,当值减为0时,执行与该项相关的操作。,出错处理的设计与实现,1.对一般性错误的处理 这类错误的处理由DeltaCORE和应用协做完成。DeltaCORE向应用提供处理错误的手段,实际的处理由应用完成。DeltaCORE的每个系统调用在结束时都会返回一个带有错误类型的状态值delta_status_code给调用者。当调用成功时,delta_status_code为0;否则,根据不同的错误原因有不同的状态值。调用者可以根据状态值做一定的纠正。表征错误原因的状态值均大于0,并且定义了带有概括性含义的宏与之对应。,2.对严重性错误的处理 这类错误对系统会造成致命影响,其后果不可恢复。DeltaCORE提供delta_fatal_error_occurred和delta_shutdown_executive系统调用对这类错误进行处理,让系统处于一个确定状态。另外,DeltaCORE还向应用提供对严重错误处理的扩展调用点。,

    注意事项

    本文(嵌入式操作系统的内核.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开