第六章、嵌入式操作系统.ppt
《第六章、嵌入式操作系统.ppt》由会员分享,可在线阅读,更多相关《第六章、嵌入式操作系统.ppt(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式操作系统陈天洲、陈文智实时性实时性简介对于什么是实时系统,POSIX1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU和其他资源进行有效的调度和管理,即实时调度实时调度分类各种实时操作系统的实时调度算法从调度策略上各种实时操作系统的实时调度算法从调度策略上可以分为如下三种类别:基于优先级的调度算法可以分为如下三种类别:基于优先级的调度算法(Priority-drivenscheduling-PDPriority-drivensched
2、uling-PD)、基于)、基于CPUCPU使用使用比例的共享式的调度算法(比例的共享式的调度算法(Share-drivenShare-drivenscheduling-SDscheduling-SD)、以及基于时间的进程调度算法)、以及基于时间的进程调度算法(Time-drivenscheduling-TDTime-drivenscheduling-TD)从调度方式上来讲可以分为:可抢占、不可抢占;从调度方式上来讲可以分为:可抢占、不可抢占;从时间片来分:固定时间片、可变时间片从时间片来分:固定时间片、可变时间片 实时性改造实时性改造对操作系统实时性的扩展可以从两方面进行:向外扩展和向上扩展
3、向外扩展是从范围上扩展,让实时系统支持的范围更广,支持的设备更多向上扩展是扩充操作系统内核,从功能上扩充系统的实时处理Linux的实时性一般的通用linux已经具备一定的实时性但无法满足硬实时的要求运行于运行于linuxlinux内核空间的进程(核心态)不能被内核空间的进程(核心态)不能被抢先抢先 在在linuxlinux中,中断有时候会出于保护临界区操作中,中断有时候会出于保护临界区操作的目的而被屏蔽的目的而被屏蔽 通用通用linuxlinux的时间滴答长度为的时间滴答长度为10ms10ms(硬件时钟频(硬件时钟频率率100HZ100HZ),但是这对于时间精度要求很高),但是这对于时间精度要
4、求很高(微秒级)的实时进程来说是不够的(微秒级)的实时进程来说是不够的 嵌入式Linux的实时性改造可以引入一个双内核结构可以引入一个双内核结构 对对LinuxLinux内核代码作一些修改内核代码作一些修改LinuxLinux本身的任务以及本身的任务以及LinuxLinux内核本身作为一个优先级最低的任务,而实内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务以时任务作为优先级最高的任务以LinuxLinux的内核模块的内核模块(LoadableKernelModule(LoadableKernelModule,LKM)LKM)的形式存在的的形式存在的 资源核方法:这种方法是为解
5、决传统实时操作系资源核方法:这种方法是为解决传统实时操作系统中固定优先级抢占式调度策略的局限性而产生统中固定优先级抢占式调度策略的局限性而产生的的 Linux 2.6内核实时性分析内核实时性分析2.6中内核自身是可抢占的,它允许自身在执行任务时被打断2.6版本的Linux内核使用了由IngoMolnar开发的新的调度器算法,称为O(1)算法RTLinux硬实时操作系统简介硬实时操作系统简介RTLinuxRTLinux是一硬实时操作系统是一硬实时操作系统 实现了一个微内核的小的实时操作系统,而将普实现了一个微内核的小的实时操作系统,而将普通通LinuxLinux系统作为一个该操作系统中的一个低优
6、先系统作为一个该操作系统中的一个低优先级的任务来运行级的任务来运行 普通普通LinuxLinux系统中的任务可以通过系统中的任务可以通过FIFOFIFO和实时任务和实时任务进行通信进行通信 通过软件来模拟硬件的中断控制器通过软件来模拟硬件的中断控制器 RT-LinuxRT-Linux通过将系统的实时时钟设置为单次触发通过将系统的实时时钟设置为单次触发状态,可以提供十几个微秒级的调度粒度状态,可以提供十几个微秒级的调度粒度 RTLinux内核结构内核结构启动优化基本技术启动优化基本技术一、固化各种不可扩展硬件的设置,尽量标准化一、固化各种不可扩展硬件的设置,尽量标准化可扩展设备的接口,节约设备检
7、测时间。可扩展设备的接口,节约设备检测时间。二、二、LazyLoadingLazyLoading,也即不加载当前非必需的模,也即不加载当前非必需的模块,这些模块可以在启动后待机时间内加载,或块,这些模块可以在启动后待机时间内加载,或者在具体用到之后再加载,把启动时间打散,从者在具体用到之后再加载,把启动时间打散,从而缩短对用户来说至关重要的反应时间而缩短对用户来说至关重要的反应时间(RespondingTime)(RespondingTime)。三、任务并行化,很多系统在启动任务时,是顺三、任务并行化,很多系统在启动任务时,是顺序执行,按部就班。为了减少启动时间,我们可序执行,按部就班。为了减
8、少启动时间,我们可以考虑任务的并行化,以减少启动时间的消耗。以考虑任务的并行化,以减少启动时间的消耗。嵌入式嵌入式Linux启动过程分析启动过程分析在内核运行之前需要系统引导程序在内核运行之前需要系统引导程序(BootloaderBootloader)完成加载内核和一些辅助性的工作,然后跳转到完成加载内核和一些辅助性的工作,然后跳转到内核代码的起始地址并执行。内核代码的起始地址并执行。整个整个armarmlinuxlinux内核的启动可分为三个阶段:第一内核的启动可分为三个阶段:第一阶段主要是进行阶段主要是进行cpucpu和体系结构的检查、和体系结构的检查、cpucpu本身本身的初始化以及页表
9、的建立等;第二阶段主要是对的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初始化;最后则是更系统中的一些基础设施进行初始化;最后则是更高层次的初始化高层次的初始化 嵌入式嵌入式Linux的启动优化的启动优化系统任务裁减裁减不适合本系统的部分任务裁减不适合本系统的部分任务系统任务并行明确任务依赖关系明确任务依赖关系任务并行启动(任务并行启动(makemakej j工具的使用)工具的使用)电源管理综述电源管理综述现在Linux中,最主要的电源管理方案主要有三种:APM、ACPI、DPM传统的APM(AdvancedPowerManagement)是一种基于bios的电源管理标准A
10、CPI(AdvancedConfigurationandPowerInterface),它主要是将电源管理的主要执行者由bios转换成为操作系统,这样可以提供更大的灵活性以及可扩展性DPM简介简介DPMDynamic Power Management在面向Linux的DPM架构中,内核中的DPM子系统负责维持整个系统的电源状态并把DPM系统的不同电源管理模块联系在一起。可以把DPM看成是为驱动程序、中间件和应用程序提供服务的元素DPM框架存储管理存储管理多程序模型这是没有硬件地址转换的内存管理模型。即使这是没有硬件地址转换的内存管理模型。即使没有硬件地址转换功能支持,多个程序也可以没有硬件地址
11、转换功能支持,多个程序也可以共享相同的物理地址共享相同的物理地址 具有地址转换硬件的内存管理模型应用程序使用的是虚拟地址,应用程序使用的是虚拟地址,CPUCPU实际执行程实际执行程序所示用的是物理地址,从虚拟地址到物理地序所示用的是物理地址,从虚拟地址到物理地址的转换需要操作系统和址的转换需要操作系统和MMUMMU硬件的参与硬件的参与 高速缓冲(高速缓冲(Cache)简介)简介BufferCachePageCacheSwapCacheHardwareCache虚拟存储功能虚拟存储功能巨大的寻址空间内存映射公平的物理内存分配共享虚拟内存主存与辅存层次信息传送页式虚拟存储器段式虚拟存储器段页式虚拟
12、存储器Linux存储管理存储管理Linux使用了上述第二种存储管理模型。应用程序在标准Linux中的加载使用了“按需”分页的策略Linux的内存管理采取的是分页机制Linux虚拟内存的实现,需要几种不同的机制来实现:地址映射机制、内存的分配与回收、请求页机制、交换机制、内存共享机制。地址映射机制地址映射机制,主要完成主存、辅存和虚存之间的关联Linux采用一系列的数据结构和一个硬件缓存(TLB)来实现地址映射机制Linux内核的映射机制被设计成三层,在页面目录和页表之间增设了一层“中间目录”内存的分配与回收最近被执行过的地址转换结果会被保留在MMU的转换后备缓存(TLB)中页分配使用2的幂数大
13、小的块Linux使用Buddy算法有效地分配和回收页块Buddy算法这个算法首先找它请求大小的内存页块这个算法首先找它请求大小的内存页块,它跟踪,它跟踪free_areafree_area数据结构中的数据结构中的listlist单元队列中的空闲页的单元队列中的空闲页的链表链表 如果找到的页块大于请求的页块,则该块将被分如果找到的页块大于请求的页块,则该块将被分开成为合适大小的块开成为合适大小的块 因为所有的块都是因为所有的块都是2 2的幂次的页数组成,所以这个的幂次的页数组成,所以这个分割的过程比较简单,你只需要将它平分就可以分割的过程比较简单,你只需要将它平分就可以了。空闲的块则放到适当的队
14、列,而分配的页块了。空闲的块则放到适当的队列,而分配的页块则返回给调用者。则返回给调用者。CLinux存储管理存储管理其设计针对没有其设计针对没有MMUMMU的处理器,不能使用处理器的处理器,不能使用处理器的虚拟内存管理技术的虚拟内存管理技术 CLinuxCLinux仍采用存储器的分页管理,系统在启动时仍采用存储器的分页管理,系统在启动时把实际存储器进行分页把实际存储器进行分页 没有没有MMUMMU管理,所以实际上管理,所以实际上CLinuxCLinux采用实存储采用实存储器管理策略器管理策略(real(realmemeorymemeorymanagement)management)CLinu
15、xCLinux系统对于内存的访问是直接系统对于内存的访问是直接 一个进程在执行前,系统必须为进程分配足够的一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空连续地址空间,然后全部载入主存储器的连续空间中间中 嵌入式系统的文件系统管理嵌入式系统的文件系统管理嵌入式系统的物理存储嵌入式系统的物理存储FlashFlash存储器由于其安全性高,存储密度大,体存储器由于其安全性高,存储密度大,体积小,价格相对便宜,是嵌入式领域中最受欢积小,价格相对便宜,是嵌入式领域中最受欢迎的一类存储器迎的一类存储器 嵌入式系统中使用Flash存储器,通常有两种使用方式只进行只读访问只
16、进行只读访问在系统运行的时候既需要进行读操作,也需要在系统运行的时候既需要进行读操作,也需要进行写操作。进行写操作。存储设备的管理方式直接访问Flash自己编写自己编写FlashFlash的驱动程序(即基本操作函数)的驱动程序(即基本操作函数)FlashDisk有些有些FlashFlash存储设备上附带了控制电路,并且提存储设备上附带了控制电路,并且提供了供了IDEIDE的接口。这些设备通常都是模拟了的接口。这些设备通常都是模拟了PCPC中的中的IDEIDE之类设备的接口之类设备的接口 专用于Flash的文件系统JFFSJFFS等文件系统,目前已经非常成熟,并有了等文件系统,目前已经非常成熟,
17、并有了成功的应用成功的应用 嵌入式文件系统的类型RAMDISKRAMDISK 在在RAMDISKRAMDISK文件系统中,当系统启动的时候,会把外存中的映像文件系统中,当系统启动的时候,会把外存中的映像文件加压缩到内存中,形成文件加压缩到内存中,形成RAMDISKRAMDISK环境,便可以开始运行程序环境,便可以开始运行程序了。这种文件系统最大的问题就是,运行的程序的代码在内存和了。这种文件系统最大的问题就是,运行的程序的代码在内存和外存都占据了空间外存都占据了空间 cramfscramfs cramfscramfs也是一种压缩式的文件系统。但是它不是一次性地把所有也是一种压缩式的文件系统。但
18、是它不是一次性地把所有内容都解压缩到内存中,而所需数据的位置,计算数据在内容都解压缩到内存中,而所需数据的位置,计算数据在cramfscramfs的位置,然后把所需的部分解压缩到内存中,再通过访问内存来的位置,然后把所需的部分解压缩到内存中,再通过访问内存来得到所需的数据。由于这个整个过程,包括内存中数据的位置都得到所需的数据。由于这个整个过程,包括内存中数据的位置都是由是由cramfscramfs文件系统自己来维护。所以对开发人员是透明的,也文件系统自己来维护。所以对开发人员是透明的,也节省了空间。节省了空间。romfsromfs romfsromfs是一种只读文件系统,占用的系统资源也比较
19、小。在是一种只读文件系统,占用的系统资源也比较小。在romfsromfs中,文件系统的管理代码占用的空间也比较小,但是中,文件系统的管理代码占用的空间也比较小,但是romfsromfs的文件的文件访问权限和属主这些信息尚没有完全实现。此外,由于访问权限和属主这些信息尚没有完全实现。此外,由于romfsromfs文件文件系统是只读的,所以可以做得很小。系统是只读的,所以可以做得很小。日志文件系统日志文件系统在嵌入式设备断电可能性比一般的计算机的可能性要大日志文件系统相对于普通文件系统,主要的变化就是增加了日志记录JFFS与JFFS2文件系统2000年Axis公司发布了他们开发的日志式Flash文
20、件系统JFFS文件系统是开放源代码的文件系统,可以说是专门用于嵌入式Linux等系统的JFFS是直接在Flash设备上实现的文件系统JFFS2没有为Flash设备专门设计一个转换层来模拟普通的文件系统,而是直接对Flash进行操作输入输出与设备管理概述输入输出与设备管理概述I/O设备抽象设备抽象I/O调度调度缓冲技术缓冲技术高速缓存高速缓存错误处理错误处理性能与优化性能与优化I/O设备抽象设备抽象不同的I/O设备,它们的读写方式不尽相同对于应用程序来说最好是所有的设备都可以通过一个相同的界面来进行读写操作需要通过一套机制对某一类相似的I/O设备的具体操作细节进行封装在操作系统中是通过设备驱动来
21、实现的I/O设备抽象层次结构操作系统内核操作系统内核I/O子系统LCD驱动触 摸 屏 驱动PCI bus驱动LCD控 制器触 摸 屏 控制器PCI bus控制器LCD触摸屏PCIbus硬件软件I/O调度调度I/O调度指的是对一组I/O请求进行安排,决定它们的执行顺序操作系统一般会把对某个设备的I/O请求放入那个设备的请求队列中去然后由I/O调度器对这些请求进行重新安排以改进系统的整体性能缓冲技术缓冲技术引入缓冲技术,主要有以下三个原因引入缓冲技术,主要有以下三个原因:一、是协调数据产生设备(一、是协调数据产生设备(producerproducer)和数据接收设备)和数据接收设备(consume
22、rconsumer)的速度)的速度 二、是协调数据产生设备和数据接收设备的数据大小二、是协调数据产生设备和数据接收设备的数据大小 三、是因为为了保证写入外设的数据的一致性,要先三、是因为为了保证写入外设的数据的一致性,要先把数据转移到内核空间把数据转移到内核空间 在缓冲技术(在缓冲技术(BufferingBuffering)中,两个设备之间或者)中,两个设备之间或者一个设备与一个应用程序之间需要传输数据时,一个设备与一个应用程序之间需要传输数据时,这些数据会先保存在内存中,这个内存区域称为这些数据会先保存在内存中,这个内存区域称为缓冲区缓冲区 高速缓存高速缓存高速缓存(Caching)是指把低
23、速存储器的部分数据保存在高速存储器中以提高系统性能的技术缓冲技术跟缓存技术的区别:缓冲块中的数据是独一无二仅此一份的,而缓存中的数据是低速存储器中的数据的拷贝。错误处理错误处理使用保护内存I/O设备和传输操作在很多情况下都会发生错误,有的是暂时性的,有的是永久性的操作系统的错误提示能力相对硬件设备来说一般都比较低一个硬件设备可以提供非常丰富和详细的出错信息,但是操作系统往往会忽略其中的很多信息/O性能对系统性能的影响首先它需要首先它需要CPUCPU执行设备驱动程序,并对执行设备驱动程序,并对I/OI/O请求请求进行调度进行调度其次,其次,I/OI/O操作造成的程序执行上下文切换操作造成的程序执
24、行上下文切换(contextswitchcontextswitch)也加重了)也加重了CPUCPU和缓存的负担和缓存的负担并且并且I/OI/O是中断操作的主要组成部分,内核的中断是中断操作的主要组成部分,内核的中断处理性能稍有不足就会在处理性能稍有不足就会在I/OI/O操作中暴露无遗操作中暴露无遗最后,最后,I/OI/O操作需要频繁的在设备控制器与内存、操作需要频繁的在设备控制器与内存、内存中用户空间与内核空间缓冲区之间拷贝数据内存中用户空间与内核空间缓冲区之间拷贝数据 性能与优化性能与优化减少上下文切换次数。减少上下文切换次数。减少数据在内存与设备之间复制的次数。减少数据在内存与设备之间复制
25、的次数。通过使用更大的数据传输单元、智能化的设备控通过使用更大的数据传输单元、智能化的设备控制器和轮循(如果空等可以有效减少)等手段来制器和轮循(如果空等可以有效减少)等手段来减少中断次数。减少中断次数。把一部分把一部分I/OI/O处理工作转移到硬件设备中去,使得处理工作转移到硬件设备中去,使得外设能够跟外设能够跟CPUCPU形成一定的并行处理,分担形成一定的并行处理,分担CPUCPU的的任务。任务。在在CPUCPU、存储器、总线和、存储器、总线和I/OI/O之间平衡工作量。因之间平衡工作量。因为任何一部分的过载都会导致其余部分的等待,为任何一部分的过载都会导致其余部分的等待,从而造成整体性能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 嵌入式 操作系统
限制150内