当前位置:文档之家› 第六章、嵌入式操作系统(精)

第六章、嵌入式操作系统(精)

– 应用程序使用的是虚拟地址,CPU实际执行程 序所示用的是物理地址,从虚拟地址到物理地 址的转换需要操作系统和MMU硬件的参与
高速缓冲(Cache)简介
• Buffer Cache • Page Cache • Swap Cache • Hardware Cache
虚拟存储功能
• 巨大的寻址空间 • 内存映射 • 公平的物理内存分配 • 共享虚拟内存
一个设备与一个应用程序之间需要传输数据时, 这些数据会先保存在内存中,这个内存区域称为 缓冲区
高速缓存
• 高速缓存(Caching)是指把低速存储器的
部分数据保存在高速存储器中以提高系统 性能的技术 • 缓冲技术跟缓存技术的区别:缓冲块中的 数据是独一无二仅此一份的,而缓存中的 数据是低速存储器中的数据的拷贝。
驱动程序 可感知DPM的应用 软件 普通应用软件 DPM包装器中应 用软件
策略管理层
驱动程序 驱动程序
DPM子系统
系统软件
手机操作系统内核
存储管理
• 多程序模型
– 这是没有硬件地址转换的内存管理模型。即使 没有硬件地址转换功能支持,多个程序也可以 共享相同的物理地址
• 具有地址转换硬件的内存管理模型
输入输出与设备管理概述
• I/O设备抽象 • I/O调度 • 缓冲技术 • 高速缓存 • 错误处理 • 性能与优化
I/O设备抽象
• 不同的I/O设备,它们的读写方式不尽相同 • 对于应用程序来说最好是所有的设备都可
以通过一个相同的界面来进行读写操作 • 需要通过一套机制对某一类相似的I/O设备 的具体操作细节进行封装 • 在操作系统中是通过设备驱动来实现的
Buddy算法
• 这个算法首先找它请求大小的内存页块 ,它跟踪 •

free_area数据结构中的list单元队列中的空闲页的 链表 如果找到的页块大于请求的页块,则该块将被分 开成为合适大小的块 因为所有的块都是2的幂次的页数组成,所以这个 分割的过程比较简单,你只需要将它平分就可以 了。空闲的块则放到适当的队列,而分配的页块 则返回给调用者。

及Linux内核本身作为一个优先级最低的任务,而 实时任务作为优先级最高的任务以Linux的内核模 块(Loadable Kernel Module,LKM)的形式存在的 资源核方法:这种方法是为解决传统实时操作系 统中固定优先级抢占式调度策略的局限性而产生 的
Linux 2.6内核实时性分析
• 2.6中内核自身是可抢占的,它允许自身在执
DPM简介
• DPM-Dynamic Power Management • 在面向Linux的DPM架构中,内核中的DPM
子系统负责维持整个系统的电源状态 • 并把DPM系统的不同电源管理模块联系在 一起。 • 可以把DPM看成是为驱动程序、中间件和 应用程序提供服务的元素
DPM框架
应用软件 中间件
错误处理
• 使用保护内存 • I/O设备和传输操作在很多情况下都会发生
错误,有的是暂时性的,有的是永久性的 • 操作系统的错误提示能力相对硬件设备来 说一般都比较低 • 一个硬件设备可以提供非常丰富和详细的 出错信息,但是操作系统往往会忽略其中 的很多信息
/O性能对系统性能的影响
• 首先它需要CPU执行设备驱动程序,并对I/O请求

嵌入式Linux启动过程分析
• 在内核运行之前需要系统引导程序(Bootloader)完 •
成加载内核和一些辅助性的工作,然后跳转到内 核代码的起始地址并执行。 整个arm linux内核的启动可分为三个阶段:第一 阶段主要是进行cpu和体系结构的检查、cpu本身 的初始化以及页表的建立等;第二阶段主要是对 系统中的一些基础设施进行初始化;最后则是更 高层次的初始化
– 运行于linux内核空间的进程(核心态)不能被 抢先 – 在linux中,中断有时候会出于保护临界区操作 的目的而被屏蔽 – 通用linux的时间滴答长度为10ms(硬件时钟频 率100HZ),但是这对于时间精度要求很高 (微秒级)的实时进程来说是不够的
嵌入式Linux的实时性改造
• 可以引入一个双内核结构 • 对Linux内核代码作一些修改Linux本身的任务以
主存与辅存层次信息传送
• 页式虚拟存储器 • 段式虚拟存储器 • 段页式虚拟存储器
Linux存储管理
• Linux使用了上述第二种存储管理模型。 • 应用程序在标准Linux中的加载使用了“按
需”分页的策略 • Linux 的内存管理采取的是分页机制 • Linux虚拟内存的实现,需要几种不同的机 制来实现:地址映射机制、内存的分配与 回收、请求页机制、交换机制、内存共享 机制。
嵌入式Linux的启动优化
• 系统任务裁减
– 裁减不适合本系统的部分任务
• 系统任务并行
– 明确任务依赖关系 – 任务并行启动(make -j 工具的使用)
电源管理综述
• 现在Linux中,最主要的电源管理方案主要
有三种:APM、ACPI、DPM • 传统的APM(Advanced Power Management) 是一种基于bios的电源管理标准 • ACPI(Advanced Configuration and Power Interface),它主要是将电源管理的主要执 行者由bios转换成为操作系统,这样可以提 供更大的灵活性以及可扩展性
嵌入式系统的文件系统管理
• 嵌入式系统的物理存储
• 嵌入式系统中使用Flash存储器,通常有两
种使用方式
– Flash存储器由于其安全性高,存储密度大,体 积小,价格相对便宜,是嵌入式领域中最受欢 迎的一类存储器
– 只进行只读访问 – 在系统运行的时候既需要进行读操作,也需要 进行写操作。
存储设备的管理方式
缓冲技术
• 引入缓冲技术,主要有以下三个原因 :
– 一、是协调数据产生设备(producer)和数据接收设备 (consumer)的速度 – 二、是协调数据产生设备和数据接收设备的数据大小 – 三、是因为为了保证写入外设的数据的一致性,要先 把数据转移到内核空间
• 在缓冲技术(Buffering)中,两个设备之间或者
μCLinux存储管理
• 其设计针对没有MMU的处理器,不能使用处理器
• • • •
的虚拟内存管理技术 μCLinux仍采用存储器的分页管理,系统在启动时 把实际存储器进行分页 没有MMU管理,所以实际上μCLinux采用实存储 器管理策略(real memeory management) μCLinux系统对于内存的访问是直接 一个进程在执行前,系统必须为进程分配足够的 连续地址空间,然后全部载入主存储器的连续空 间中
I/O设备抽象层次结构
操作系统内核
操作系统内核I/O子系统 软 件 LCD驱动 触摸屏驱 动 …… PCI bus 驱 动 PCI bus 控 制器
LCD 控 制 触 摸 屏 控 器 制器 硬 件 LCD 触摸屏
……
……
PCI bus
I/O调度
• I/O调度指的是对一组I/O请求进行安排,决
定它们的执行顺序 • 操作系统一般会把对某个设备的I/O请求放 入那个设备的请求队列中去 • 然后由I/O调度器对这些请求进行重新安排 以改进系统的整体性能
嵌入式操作系统
陈天洲、陈文智
实时性简介
• 对于什么是实时系统,POSIX 1003.b作了
这样的定义:指系统能够在限定的响应时 间内提供所需水平的服务 • 实时系统根据其对于实时性要求的不同, 可以分为软实时和硬实时两种类型 • 一个计算机系统为了提供对于行有效的调度和管理,即实时调度
实时调度分类
• 各种实时操作系统的实时调度算法从调度策略上
可以分为如下三种类别:基于优先级的调度算法 (Priority-driven scheduling-PD)、基于CPU使用 比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法 (Time-driven scheduling-TD) 从调度方式上来讲可以分为:可抢占、不可抢占; 从时间片来分:固定时间片、可变时间片
行任务时被打断 • 2.6版本的Linux内核使用了由 Ingo Molnar 开发的新的调度器算法,称为O(1)算法
RTLinux硬实时操作系统简介
• RTLinux是一硬实时操作系统 • 实现了一个微内核的小的实时操作系统,而将普

• •
通Linux系统作为一个该操作系统中的一个低优先 级的任务来运行 普通Linux系统中的任务可以通过FIFO和实时任务 进行通信 通过软件来模拟硬件的中断控制器 RT-Linux通过将系统的实时时钟设置为单次触发 状态,可以提供十几个微秒级的调度粒度
• 直接访问Flash
– 自己编写Flash的驱动程序(即基本操作函数)
• Flash Disk
– 有些Flash存储设备上附带了控制电路,并且提 供了IDE的接口。这些设备通常都是模拟了PC 中的IDE之类设备的接口
• 专用于Flash的文件系统
– JFFS等文件系统,目前已经非常成熟,并有了 成功的应用

实时性改造
• 对操作系统实时性的扩展可以从两方面进
行:向外扩展和向上扩展 • 向外扩展是从范围上扩展,让实时系统支 持的范围更广,支持的设备更多 • 向上扩展是扩充操作系统内核,从功能上 扩充系统的实时处理
Linux的实时性
• 一般的通用linux已经具备一定的实时性 • 但无法满足硬实时的要求
RTLinux内核结构
Linux进程 实时任务 Linux内核
RTLinux内核
硬件环境
启动优化基本技术
• 一、固化各种不可扩展硬件的设置,尽量标准化

可扩展设备的接口,节约设备检测时间。 二、Lazy Loading,也即不加载当前非必需的模 块,这些模块可以在启动后待机时间内加载,或 者在具体用到之后再加载,把启动时间打散,从 而缩短对用户来说至关重要的反应时间 (Responding Time)。 三、任务并行化,很多系统在启动任务时,是顺 序执行,按部就班。为了减少启动时间,我们可 以考虑任务的并行化,以减少启动时间的消耗。
相关主题