710 likes | 852 Views
嵌入式 系统 An Introduction to Embedded System 浙江大学计算机学院 2012 年 4 月. 第 3 课 嵌入式操作系统 概述. 内容摘要. 典型嵌入式操作系统 嵌入式 Linux 简介 嵌入式 Linux 内存管理 嵌入式 Linux 进程管理 嵌入式 Linux 文件系统. 嵌入式操作系统一览. 常见 嵌入式 硬实时 操作系统. RTlinux uC /OS-II Windriver Vxworks QNX pSOS OS/9 VRTX eCOS. 常见 嵌入式 软实时 操作系统 .
E N D
嵌入式系统 An Introduction to Embedded System 浙江大学计算机学院 2012年4月
内容摘要 • 典型嵌入式操作系统 • 嵌入式Linux简介 • 嵌入式Linux内存管理 • 嵌入式Linux进程管理 • 嵌入式Linux文件系统
常见嵌入式硬实时操作系统 • RTlinux • uC/OS-II • WindriverVxworks • QNX • pSOS • OS/9 • VRTX • eCOS
常见嵌入式软实时操作系统 • Microsoft的windows CE、Embedded windows xp • Palm公司的Palm OS • Symbian公司的EPOC • 一些嵌入式Linux系统
几款典型嵌入式操作系统 • uC/OS II • ThreadX • Windows系列的嵌入式操作系统 • VxWorks • 嵌入式Linux
1、uC/OS II • 免费的公开源码实时操作系统 • 内核提供任务调度和管理、时钟管理、任务间同步与通信、内存管理和中断服务等功能 • 最多支持64个任务,分别对应优先级0~63,其中0为最高优先级 • 可抢占式实时调度 • 调度工作分为两部分:最高优先级任务的寻找和任务切换
内核是针对实时系统的要求来设计实现的,相对比较简单,可以满足较高的实时性要求内核是针对实时系统的要求来设计实现的,相对比较简单,可以满足较高的实时性要求 • 但是没有网络功能和文件系统,对于像媒体播放、需要网络和图形界面支持的应用就比较差
2、ThreadX操作系统 • 只需要很小的存储器容量(最低5k) • 硬实时的处理能力 • 有功能强大的专门的开发调试支持工具 • 支持了市场上绝大部分的CPU • 同样也是商业化的操作系统
Pocket PC • 信息消费 • 浏览和输入数据 • 把电话融入PDA • 可以与Office, Exchange和SQL Server交互 • .NET Compact Framework • ASP.NET 移动控件 • Smartphone • 信息消费 • 基本数据浏览 • 把PDA融入电话 • 可以与Exchange交互 • .NET Compact Framework • ASP.NET 移动控件 • 平板电脑 • 复杂的文档编辑和读写 • 桌面键盘输入 • 支持数字墨水 • 可以支持键盘,也可以把键盘拿走 • 键盘、鼠标、数字墨水和语音输入 • 完整的 .NET framework支持 • 提供笔,数字墨水,手写和语音识别API • 小型个人产品 • 单向网络 • 信息消费 • 笔记本PC • 复杂的文档编辑和读写 • 桌面键盘输入 • 键盘和鼠标输入法 • 完整的.NET framework 支持 Windows CE Windows Mobile Windows XP/XPE 3、微软的移动平台 更强的功能
Windows Embedded 家族 Embedded Operating Systems
Windows CE • 主要用于PDA,smartphone等个人手持终端上 • 支持多线程 • 支持多种软硬件 • 最大的特点就是能提供与PC机类似的图形界面和主要的应用程序 • 地道的商业操作系统
Windows CE(2) • 主要模块 • 内核模块:支持进程和线程处理及内存管理等基本服务 • 内核系统调用接口模块:运行应用程序访问操作系统提供的服务 • 文件系统模块:支持DOS,FAT等格式的文件系统 • 图形窗口和事件子系统模块:控制图形显示,并提供Windows GUI界面 • 通信模块:运行同其他设备进行信息交换
4、VxWorks嵌入式实时操作系统 • VxWorks是风河(WindRiver)公司开发的一款商用硬实时操作系统 • 支持主流的32位CPU,包括 • x86、 68K、PowerPC、MIPS、ARM等 • 基于微内核结构,由400多个相对独立的,短小精悍的目标模块组成,可裁剪性和可配置性相当出色 • 给用户最大的控制权
VxWorks • Vxworks的基本构成包括以下部分 : • 实时微内核wind:以灵活性和可配置性为设计目标,它主要包括 • 基于优先级的任务调度 • 任务同步和通信 • 中断处理 • 定时器 • 内存管理 • 兼容POSIX标准
I/O处理系统:Vxworks提供与ANSIC兼容的I/O处理系统,主要包括I/O处理系统:Vxworks提供与ANSIC兼容的I/O处理系统,主要包括 • UNIX缓冲I/O处理系统,和 • 面向实时的异步I/O处理系统 • 本机文件系统 • 网络处理模块:如TCP/IP、NFS、UDP、SNMP、FTP等
虚拟内存模块VxVMI:VxVMI主要用于对指定内存区的保护,如内存块只读等 • 共享内存模块VxMP:主要用于多处理器行运行任务之间的共享信号量、消息队列、内存块管理 • 板级支持包BSP:提供各种硬件的初始化、中断的建立、定时器、内存映象
VxWorks的评价 • Vxworks是一款非常出色的嵌入式实时操作系统,但是它是不公开源码的商业化操作系统,价格比较高 • 为追求系统的实时性而设计的,并不是以通用OS为设计目标。 • 去掉了一些OS模块,因为这些模块在某种程度上会影响系统的实时性 (如在内存管理中没有采用页面管理模式,采用的是平板式内存)。 • 应用领域主要局限在对实时性要求较严格的硬实时系统中 • 航空航天,汽车控制等
任务调度采用的是基于优先级的抢占式任务调度模式,优先级分256级(0-255)任务调度采用的是基于优先级的抢占式任务调度模式,优先级分256级(0-255) • 用户可以动态的改变优先级,但是这种做法不提倡 • 用户可以锁定一个任务使它不被更高的任务或中断抢占 • 允许使用固定优先级响应时间来检查任务调度的性能
资源共享和优先级继承机制 • 采用优化的上下文切换和中断返回机制. • 内核从不禁止非屏蔽中断 NMI (non-maskable interrupts)
VxWorks缺点 • 不支持很多应用和APIs(只支持部分POSIX标准的函数集) • 尽管采用了平板式内存管理,但是由于内存的动态分配,仍然存在内存段,这样仍然存在时间上的不可预测性
内容摘要 • 典型嵌入式操作系统 • 嵌入式Linux简介 • 嵌入式Linux内存管理 • 嵌入式Linux进程管理 • 嵌入式Linux文件系统
Linux的诞生与发展 • Linux的诞生与版本历史 • Linux的诞生 • Linux的版本发展历史 • Linux的应用领域 • Linux在嵌入式领域的延伸 • 嵌入式Linux的发展及应用前景
Linux的诞生 Linux 操作系统的诞生、发展和成长过程依赖着以下五个重要支柱: • UNIX 操作系统是美国贝尔实验室于1969年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统 • MINIX 系统是由 Andrew S. Tanenbaum(AST)1987 年开发的,主要用于学生学习操作系统原理 • GNU 计划旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU 系统。 • POSIX可移植操作系统接口标准是由 IEEE 开发的, 由 ISO/IEC 标准化的一簇标准。该标准是基于现有 的 UNIX 实践和经验,描述了操作系统的调用服务 接口,用于保证编制的应用程序可以在源代码一级 上在多种操作系统上移植运行。 • 如果没有 Internet 网,没有遍布全世界的无数计算 机黑客通过网络的无私奉献,那么 Linux 绝对不可 能发展到现在的水平。
从未停止过升级 Linux的版本发展历史 • 从 Linux 诞生开始,Linux 内核就从来没有停止过升级,从0.02 版本到 1999年具有里程碑意义的2.2 版本,一直到我们现在看到的 2.6.38版本。 • Linux 内核版本有两种: --稳定版和开发版 • Linux内核的命名机制:num.num.num。 • --第一个数字是主版本号 • --第二个数字是次版本号 • --第三个数字是修订版本号
Linux的应用领域 服务器 桌面系统 Linux 嵌入式 应用
嵌入式Linux的发展及应用前景 • 由于 Linux 具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、IA 设备、PDA、掌上电脑、WAP 手机、寻呼机、车载盒以及工业控制等智能信息产品中。 • 与 PC 相比,手持设备、IA 设备以及信息家电的市场容量要高得多,而 Linux 嵌入式系统的强大的生命力和利用价值,使越来越多的企业和高校表现出对它极大的研发热情。 • Linux 嵌入式操作系统所具有的技术优势和独特的开发模式给业界理由相信,它能成为Internet 时代嵌入式操作系统中的最强音。
嵌入式Linux的分类1市场 • 根据应用的市场来划分 • 航空航天、汽车系统、消费性电子产品、电信等
嵌入式Linux的分类2规模 • 嵌入式系统的规模由一些不同的因素来决定,首先实际的尺寸大小 • 有些相当大,例如服务器集群 • 有些非常小,例如IBM的Linux手表 • 嵌入式系统的规模与系统中硬件的属性有关,如CPU的运算速度、RAM容量、永久性存储器的容量等
嵌入式Linux的分类2电子元件的规模 • 根据嵌入式系统的电子元件的规模分类,包括 • 小型、中型、大型 • 小型系统的特性是:低运算能力的CPU,并且可以使用至少2MB的ROM和4MB的RAM。对于更小的系统,你会发现也许不用操作系统或者使用其他的操作系统更加合适,因为将Linux嵌入到这样的系统中比较费功夫
嵌入式Linux的分类2电子元件的规模 • 中型系统的特性是:中等运算能力的CPU,并且可以使用大约32MB的ROM和64MB的RAM。 • 大多数以Linux构建的消费性产品皆属此类,包括PDA、MP3播放器,娱乐系统以及网络设备。 • 有些产品可能会包含如下形式的辅助存储器:固态硬盘(以RAM芯片制成的硬盘)、快闪存储卡甚至是传统的硬盘。
嵌入式Linux的分类2电子元件的规模 • 大型系统的特性是:使用运算能力强大的CPU,或是使用多个CPU并且可以使用大量的RAM和永久性存储器通常,这类系统需要进行大量计算来完成特定的任务。 • 例如大型的电信交换机以及飞行仿真器。
嵌入式Linux的分类3实时要求 • 根据嵌入式系统的时限要求,可以分为 • 硬实时系统 系统必须在预定的截止期之内作出反应,否则会发生灾难事件。 • 软实时系统像音频、视频流系统往往是软实时系统,因为该系统一时的失误并不会造成无法弥补的灾难。 • 非实时系统 一般会被应用在需要及时(或适时)作出响应但不必立即完成的系统上。这样的系统虽然比较慢,但是不会影响最后结果
基于Linux的嵌入式操作系统 • uCLinux • ARMLinux • RT-Linux/RTAI • Embedix • Blue Cat Linux • Hard Hat Linux • 等等 Embedded Operating Systems
uCLinux • uCLinux,代表着“Micro-Control-Linux”,意为“针对微控制领域而设计的Linux系统”。 • uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。 • uCLinux支持2.6内核,已经被成功地移植到很多平台上。
RT-Linux • RT-Linux是开放源代码的具有硬实时特性的多任务操作系统。 • RT-Linux是美国新墨西哥州立大学计算机科学系Victor Yodaiken和MicaeBrannanov开发的嵌入式Linux操作系统。 • RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。
红旗嵌入式Linux • 由北京中科红旗软件技术有限公司推出,是国内做得较好的一款嵌入式Linux操作系统。 • 精简内核,适用于多种常见的嵌入式CPU; • 提供完善的嵌入式GUI和嵌入式X-Windows; • 提供嵌入式浏览器、邮件程序和多媒体播放程序; • 提供完善的开发工具和平台。
Linux内核结构 • Linux内核概述 • Linux内核特点 • Linux2.6内核新特性 • Linux内核的组成 • 存储与进程管理 • 存储管理 • 进程调度 • 内核源代码目录结构
Linux内核特点 可移植性 编程容易 可量测性 • Linux 内核既能支持 32 位体系结构 又能支持 64 位体系结构。 • Linux 内核全部源代码是遵守 GPL 软件许可的免费软件 模块化 标准化和 互用性 Linux 内核 • 开发者可以免费得到社区的贡献、 支持、检查代码和测试。驱动程 序可以免费发布给其他人,可以 静态编译进内核。 稳定性和 可靠性 完善的网 络支持 • 以源码形式发布驱动程序,可以 不必为每一个内核版本和补丁版 本都提供二进制的程序 安全性
Linux2.6内核新特性 文件系统 声音 新的调度器 内核抢占 新的线程模型 Linux2.4 Linux2.6 总线 网络 用户界面层 电源管理 统一的设备模型
Linux内核的组成 • 进程调度程序(SCHED)负责控制进程访CPU。 保证进程能够公平地访问 CPU,同时保证内核可 以准时执行一些必需的硬件操作; • 内核管理程序(MM)使多个进程可以安全地共 享机器的主存系统,并支持虚拟内存; • 虚拟文件系统(VFS)通过提供一个所有设备 的公共文件接口,VFS 抽象了不同硬件设备的细 节。此外,VFS 支持与其他操作系统兼容的不同 的文件系统格式; • 网络接口(NET)提供对许多建网标准和网络硬 件的访问; • 进程间通信(IPC)子系统为进程与进程之间的 通信提供了一些机制。 这 5 部分之间是相互依赖的关系
内存管理 • 屏蔽各种硬件的内存结构 并向上层返回统一的访问 界面 • 每个页面的大小随处理机芯片而异 • 支持虚拟内存 内存管理 任务 页式存储管理机制 分类 页表 • 硬件无关部分 • 进程的映射和逻辑内存的对换 • 硬件相关部分 • 为内存管理硬件提供了虚拟接口 • 每个进程保留一张页表,用于将本进程 空间中 的虚拟地址变换成物理地址。
policy priority rt-priority counter 进程调度 当需要选择下一个进程运行时,由调度程序选择最值得运行的进程,依据每个进程的task_struct结构 • counter 是进程剩余的时间片 • policy 是进程的调度策略 • 两类 Linux 进程:普通进程与实时进程 • 实时进程的优先级高于其他进程 • priority 是调度管理器分配给进程的优先级 • rt_priority 用于实时进程间的选择 • 调度器使用这个域给每个实时进程一个相对优先级 • 可以通过系统调用来改变实时进程的优先级。
内容摘要 • 典型嵌入式操作系统 • 嵌入式Linux简介 • 嵌入式Linux内存管理 • 嵌入式Linux进程管理 • 嵌入式Linux文件系统
Linux 内存管理 • 进程虚存空间的管理 • 虚存空间的映射和虚存区域的建立 • Linux 的分页式存储管理 • 物理内存空间的管理 • uCLinux的内存管理
进程虚存空间的管理 Linux 的存储管理主要是管理进程虚拟内存的用户区 • 进程运行时能访问的存储空间只是 它的虚拟内存空间。对当前该进程 而言只有属于它的虚拟内存是可见 的。 • Linux 操作系统采用了请求式分页存储 管理方法。系统为每个进程提供4GB 的虚拟内存空间。各个进程的虚拟内 存彼此独立。 • 每一个进程,用一个 mm-struct 结构 体来定义它的虚存用户区。 mm_struct 结构体首地址在任务结 构体 task-struct 成员项 mm 中: struct mm-struct *mm。 mm_struct 结构定义在 /include/linux/schedul.h 中