资源预览内容
第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
第9页 / 共70页
第10页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式系统嵌入式系统An Introduction to Embedded System浙江大学计算机学院2012年4月1第3课 嵌入式操作系统概述内容摘要典型嵌入式操作系统嵌入式Linux简介嵌入式Linux内存管理嵌入式Linux进程管理嵌入式Linux文件系统嵌入式操作系统一览常见嵌入式硬实时操作系统RTlinuxuC/OS-IIWindriver VxworksQNXpSOSOS/9VRTXeCOS常见嵌入式软实时操作系统 Microsoft的windows CE、Embedded windows xp Palm公司的Palm OS Symbian公司的EPOC 一些嵌入式Linux系统几款典型嵌入式操作系统uC/OS IIThreadXWindows系列的嵌入式操作系统VxWorks嵌入式Linux1、uC/OS II免费的公开源码实时操作系统 内核提供任务调度和管理、时钟管理、任务间同步与通信、内存管理和中断服务等功能最多支持64个任务,分别对应优先级063,其中0为最高优先级 可抢占式实时调度调度工作分为两部分:最高优先级任务的寻找和任务切换 内核是针对实时系统的要求来设计实现的,相对比较简单,可以满足较高的实时性要求 但是没有网络功能和文件系统,对于像媒体播放、需要网络和图形界面支持的应用就比较差2、ThreadX操作系统 只需要很小的存储器容量(最低5k) 硬实时的处理能力 有功能强大的专门的开发调试支持工具 支持了市场上绝大部分的CPU 同样也是商业化的操作系统 更强的功能笔记本笔记本PC复杂的文档编辑和读写桌面键盘输入键盘和鼠标输入法完整的.NET framework 支持Windows XP/XPEWindows XP/XPE平板电脑平板电脑复杂的文档编辑和读写桌面键盘输入支持数字墨水可以支持键盘,也可以把键盘拿走键盘、鼠标、数字墨水和语音输入完整的 .NET framework支持提供笔,数字墨水,手写和语音识别APIWindows CEWindows CE小型个人产小型个人产品品单向网络信息消费Windows MobileWindows MobileSmartphone信息消费基本数据浏览把PDA融入电话可以与Exchange交互.NET Compact FrameworkASP.NET 移动控件Pocket PC 信息消费浏览和输入数据把电话融入PDA可以与Office, Exchange和SQL Server交互.NET Compact FrameworkASP.NET 移动控件3、微软的移动平台Windows Embedded 家族Windows CE主要用于PDA,smartphone等个人手持终端上 支持多线程 支持多种软硬件最大的特点就是能提供与PC机类似的图形界面和主要的应用程序 地道的商业操作系统Windows CE(2)主要模块 内核模块:支持进程和线程处理及内存管理等基本服务 内核系统调用接口模块:运行应用程序访问操作系统提供的服务文件系统模块:支持DOS,FAT等格式的文件系统图形窗口和事件子系统模块:控制图形显示,并提供Windows GUI界面通信模块:运行同其他设备进行信息交换4、VxWorks嵌入式实时操作系统 VxWorks 是风河(WindRiver)公司开发的一款商用硬实时操作系统支持主流的32位CPU,包括x86、 68K、PowerPC、MIPS、ARM等基于微内核结构,由400多个相对独立的,短小精悍的目标模块组成,可裁剪性和可配置性相当出色给用户最大的控制权VxWorksVxworks的基本构成包括以下部分 :实时微内核wind:以灵活性和可配置性为设计目标,它主要包括基于优先级的任务调度任务同步和通信中断处理定时器内存管理 兼容POSIX标准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)用户可以动态的改变优先级,但是这种做法不提倡用户可以锁定一个任务使它不被更高的任务或中断抢占允许使用固定优先级响应时间来检查任务调度的性能资源共享和优先级继承机制采用优化的上下文切换和中断返回机制.内核从不禁止非屏蔽中断 NMI (non-maskable interrupts)VxWorks缺点不支持很多应用和APIs(只支持部分POSIX标准的函数集)尽管采用了平板式内存管理,但是由于内存的动态分配,仍然存在内存段,这样仍然存在时间上的不可预测性Tornado 集成开发环境GDB 调试工具WindView 多任务跟踪和观察工具内容摘要典型嵌入式操作系统嵌入式Linux简介嵌入式Linux内存管理嵌入式Linux进程管理嵌入式Linux文件系统Linux的诞生与发展Linux的诞生与版本历史Linux的诞生Linux的版本发展历史Linux的应用领域Linux在嵌入式领域的延伸嵌入式Linux的发展及应用前景Linux的诞生UNIX 操作系统是美国贝尔实验室于1969年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统 Linux 操作系统的诞生、发展和成长过程依赖着以下五个重要支柱:MINIX 系统是由 Andrew S. Tanenbaum(AST)1987 年开发的,主要用于学生学习操作系统原理GNU 计划旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU 系统。 POSIX可移植操作系统接口标准是由 IEEE 开发的, 由 ISO/IEC 标准化的一簇标准。该标准是基于现有 的 UNIX 实践和经验,描述了操作系统的调用服务 接口,用于保证编制的应用程序可以在源代码一级 上在多种操作系统上移植运行。 如果没有 Internet 网,没有遍布全世界的无数计算 机黑客通过网络的无私奉献,那么 Linux 绝对不可 能发展到现在的水平。 Linux的版本发展历史从 Linux 诞生开始,Linux 内核就从来没有停止过升级,从0.02 版本到 1999年具有里程碑意义的2.2 版本,一直到我们现在看到的 版本。Linux 内核版本有两种: 稳定版和开发版Linux内核的命名机制。第一个数字是主版本号第二个数字是次版本号第三个数字是修订版本号从未停止过升级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的嵌入式操作系统uCLinuxARMLinuxRT-Linux/RTAIEmbedixBlue Cat LinuxHard Hat Linux等等38uCLinuxuCLinux,代表着“Micro-Control-Linux”,意为“针对微控制领域而设计的Linux系统”。uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux支持2.6内核,已经被成功地移植到很多平台上。RT-LinuxRT-Linux是开放源代码的具有硬实时特性的多任务操作系统。RT-Linux是美国新墨西哥州立大学计算机科学系Victor Yodaiken和Micae Brannanov开发的嵌入式Linux操作系统。RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。红旗嵌入式Linux由北京中科红旗软件技术有限公司推出,是国内做得较好的一款嵌入式Linux操作系统。精简内核,适用于多种常见的嵌入式CPU;提供完善的嵌入式GUI和嵌入式X-Windows;提供嵌入式浏览器、邮件程序和多媒体播放程序;提供完善的开发工具和平台。Linux内核结构Linux内核概述Linux内核特点Linux2.6内核新特性Linux内核的组成存储与进程管理存储管理进程调度内核源代码目录结构Linux内核特点Linux内核编程容易可移植性可量测性模块化稳定性和可靠性安全性标准化和互用性完善的网络支持Linux 内核既能支持 32 位体系结构 又能支持 64 位体系结构。Linux 内核全部源代码是遵守 GPL 软件许可的免费软件开发者可以免费得到社区的贡献、 支持、检查代码和测试。驱动程 序可以免费发布给其他人,可以 静态编译进内核。以源码形式发布驱动程序,可以 不必为每一个内核版本和补丁版 本都提供二进制的程序Linux2.6内核新特性Linux2.4Linux2.6新的调度器内核抢占新的线程模型文件系统声音总线电源管理网络用户界面层统一的设备模型 Linux内核的组成进程调度程序(进程调度程序(SCHED)负责控制进程访CPU。 保证进程能够公平地访问 CPU,同时保证内核可 以准时执行一些必需的硬件操作;内核管理程序(内核管理程序(MM)使多个进程可以安全地共 享机器的主存系统,并支持虚拟内存; 虚拟文件系统(虚拟文件系统(VFS)通过提供一个所有设备 的公共文件接口,VFS 抽象了不同硬件设备的细 节。此外,VFS 支持与其他操作系统兼容的不同 的文件系统格式; 网络接口(网络接口(NET)提供对许多建网标准和网络硬 件的访问; 进程间通信(进程间通信(IPC)子系统为进程与进程之间的 通信提供了一些机制。 这 5 部分之间是相互依赖的关系内存管理内存管理任务n屏蔽各种硬件的内存结构 并向上层返回统一的访问 界面页式存储管理机制n每个页面的大小随处理机芯片而异n支持虚拟内存n 硬件无关部分n进程的映射和逻辑内存的对换n 硬件相关部分n为内存管理硬件提供了虚拟接口分类页表n每个进程保留一张页表,用于将本进程 空间中 的虚拟地址变换成物理地址。进程调度 counter 是是进程剩余的程剩余的时间片片当需要选择下一个进程运行时,由调度程序选择最值得运行的进程,依据每个进程的task_struct结构policypriorityrt-prioritycounter policy 是进程的调度策略是进程的调度策略 两类两类 Linux 进程:普通进程与实时进程进程:普通进程与实时进程 实时进程的优先级高于其他进程实时进程的优先级高于其他进程 priority 是调度管理器分配给进程的优先级是调度管理器分配给进程的优先级 rt_priority 用于实时进程间的选择用于实时进程间的选择 调度器使用这个域给每个实时进程一个相对优先级调度器使用这个域给每个实时进程一个相对优先级 可以通过系统调用来改变实时进程的优先级。可以通过系统调用来改变实时进程的优先级。内容摘要典型嵌入式操作系统嵌入式Linux简介嵌入式Linux内存管理嵌入式Linux进程管理嵌入式Linux文件系统Linux 内存管理 进程虚存空间的管理 虚存空间的映射和虚存区域的建立 Linux 的分页式存储管理 物理内存空间的管理 uCLinux的内存管理进程虚存空间的管理n每一个进程,用一个 mm-struct 结构 体来定义它的虚存用户区。 mm_struct 结构体首地址在任务结 构体 task-struct 成员项 mm 中: struct mm-struct *mm。 Linux 的存储管理主要是管理进程虚拟内存的用户区nLinux 操作系统采用了请求式分页存储 管理方法。系统为每个进程提供4GB 的虚拟内存空间。各个进程的虚拟内 存彼此独立。n进程运行时能访问的存储空间只是 它的虚拟内存空间。对当前该进程 而言只有属于它的虚拟内存是可见 的。mm_struct 结构定义在/include/linux/schedul.h 中进程虚存空间的管理struct mm_struct int count; pgd_t * pgd; unsigned long context; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack, start_mmap; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rss, total_vm, locked_vm; unsigned long def_flags; struct vm_area_struct * mmap; struct vm_area_struct * mmap_avl; struct semaphore mmap_sem; ;mm_struct 结构定义在/include/linux/schedul.h 中进程虚存空间的管理struct vm_area_struct struct mm_struct * vm_mm; unsigned long vm_start; unsigned long vm_end; pgprot_t vm_page_prot; unsigned short vm_flags; short vm_avl_height; struct vm_area_struct * vm_avl_left; struct vm_area_struct * vm_avl_right; struct vm_area_struct * vm_next; struct vm_area_struct * vm_next_share; struct vm_area_struct * vm_prev_share; struct vm_operations_struct * vm_ops; unsigned long vm_offset; struct inode * vm_inode; unsigned long vm_pte; ; 定义在/include/linux/mm.h 中每个虚拟区域用一个 vm-area-struct 结构体进行描述虚存空间的映射和虚存区域的建立虚拟存储技术用户的代码和数据(可执行映像)等并不是完整地装入物理内存,而是全部映射到虚拟内存空间。在进程需要访问内存时,在虚拟内存中“找到”要访问的程序代码和数据等unsigned long do_mmap(struct file * file, unsigned long addr, unsigned long len,unsigned long prot, unsigned long flags, unsigned long off) 虚拟存储技术Linux 使用 do_mmap()函数完成可执行映像向虚存区域的映射Linux 的分页式存储管理页表是从线性地址向物理地址转换中不可缺少的数据结构,而且 它使用的频率较高。页表必须存放在物理存储器中。Linux 采用了三级页表结构,以利于节省物理内存。三级分页 管理把虚拟地址分成四个位段: 页目录、页中间目录、页表、 页内编址。 系统设置三级页表系列n页目录 PGDn PaGe Directoryn页中间目录 PMDn Page Middle Directoryn页表 PTEn Page Table Entry物理内存空间的管理物理内存的页面管理 空闲页面的管理Buddy 算法 nLinux 对物理内存空间按 照分页方式进行管理,把 物理内存划分成大小相同 的物理页面。nLinux设置了一个 mem_map数组管理内存 页面。mem_map在系统 初始化时由free_area_init ()函数创建,它存放在 物理内存的底部(低地址 部分)n内存空闲空间的管理采用 Buddy 算法nBuddy 算法是把内存中的所有页 面按照 2n划分,其中 n=05,对 一个内存空间按 1 个页面、2 个页 面、4个页面、8 个页面、16 个页 面、32 个页面进行六次划分。n对于每种页面块按前后顺序两两结 合成一对Buddy“伙伴”。uCLinux的内存管理uCLinux专门针对没有MMU的处理器。不能使用虚拟内存管理技术;采用实存储器管理(Real Memory Management)。为节省内存,进程的私有堆被取消,所有进程共享一个由操作系统管理的堆空间。对内存空间没有保护,各个进程共享一个地址空间。内容摘要典型嵌入式操作系统嵌入式Linux简介嵌入式Linux内存管理嵌入式Linux进程管理嵌入式Linux文件系统Linux进程管理Linux进程管理介绍进程与作业进程管理RT-Linux的进程管理uCLinux的进程管理Linux进程管理介绍Linux 是一个多用户多任务的操作系统。指多个用户可以在同一时间使用计算机系统多任务是指 Linux 可以同时执行几个任务n操作系统监控着一个等待执 行的任务队列,这些任务包 括u用户作业u操作系统任务u邮件u打印作业n操作系统根据每个任务的优 先级为每个任务分配合适的 时间片进程概念u在自身的虚拟地址空间运行的一个单独的程序随时都可能发生变化的使用系统运行资源的动态的+程序+进程管理 由于 Linux 是个多用户系统,同时也是一个多进程系统,经常需要对这些进程进行一些调配和管理,就要知道当前的进程情况。who命令w命令ps命令top命令kill命令u该命令主要用于查看当前线上的用户情况u可以显示出当前用户当前正在进行的工作u是非常强大的进程查看命令utop 命令和 ps 命令的基本作用是相同的u该命令可以终止后台进程nohup命令u使进程在用户退出后仍继续执行Linux进程的系统调用fork系统调用exec系统调用vfork系统调用Linux进程调度算法分时调度策略(SCHED_OTHER)先到先服务的实时调度策略(SCHED_FIFO)时间片轮转的实时调度策略(SCHED_RR)RT-Linux的进程管理RT-Linux有两种中断:硬中断和软中断软中断是常规Linux内核中断。硬中断的延迟低于15s。RT-Linux通过一个高效的、可抢占的实时调度核心来全面接管中断,并把Linux作为此实时核心的一个优先级最低的进程运行。当有实时任务需要处理时,RT-Linux运行实时任务;无实时任务时,RT-Linux运行Linux的非实时进程。RT-Linux的系统结构图采用基于优先级的调度策略uCLinux的进程管理uCLinux下,由于uCLinux没有MMU管理存储器,在实现多个进程时需要实现数据保护。uClinux系统fork调用完成后,要么子进程代替父进程执行(此时父进程已经sleep),直到子进程调用exit退出;要么调用exec执行一个新的进程,这个时候产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不可避免。当子进程执行exit或exec后,子进程使用wakeup把父进程唤醒,使父进程继续往下执行。内容摘要典型嵌入式操作系统嵌入式Linux简介嵌入式Linux内存管理嵌入式Linux进程管理嵌入式Linux文件系统嵌入式文件系统基于Flash的文件系统JFFS2文件系统YAFFS2文件系统Cramfs基于RAM的文件系统RamDiskRamfs/TmpfsNFS服务NFS(Network File System)是由Sun MicroSystem公司开发的一套协议通过RPC(Remote Procedure Call)技术,使我们可以达到文件的共享,能够在多台计算机上透明的访问彼此间的目录。它们使用分布式文件系统方案来实现,在UNIX工作站和Linux系统下比较常见。NFS使用mount命令来将远程的文件系统挂载到本机上的文件系统上,用户在使用时不会感觉到两者有任何差异。Thanks!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号