收藏 分享(赏)

2-嵌入式Linux.ppt

上传人:hyngb9260 文档编号:7799819 上传时间:2019-05-26 格式:PPT 页数:67 大小:3.74MB
下载 相关 举报
2-嵌入式Linux.ppt_第1页
第1页 / 共67页
2-嵌入式Linux.ppt_第2页
第2页 / 共67页
2-嵌入式Linux.ppt_第3页
第3页 / 共67页
2-嵌入式Linux.ppt_第4页
第4页 / 共67页
2-嵌入式Linux.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、第3章 嵌入式Linux操作系统,3.1 Linux及其应用(自行阅读) 3.2 Linux内核 3.3 典型嵌入式Linux系统(简介),2,3.1 Linux及其应用,Linux是UNIX的一种克隆,1991年10月5日第一次正式向外公布,借助于Internet,经过世界各地计算机爱好者的共同努力,已成为当今使用最多的一种UNIX类操作系统,且使用人数还在迅猛增长。,1 Linux与UNIX和GNU 2 Linux的特点 3 Linux的发展及应用,Linux与UNIX和GNU,UNIX:美国贝尔实验室的Ken.Thompson和Dennis Ritchie于1969年夏在DEC PDP-

2、7小型计算机上开发的一个分时操作系统。 Ken Thompson,1969年夏天利用一个月时间开发了UNIX原型。 Dennis Ritchie,1972年用C语言进行改写,在大专院校得到推广。 MINIX:由Andrew S. Tanenbaum(AST)于1987年开发,主要用于学生学习操作系统原理。,4,Linux与UNIX和GNU,GNU计划和自由软件基金会FSF(the Free Software Foundation):由Richard M. Stallman于1984年创办,旨在开发一个类似UNIX的自由软件的完整操作系统,GNU(GNUs Not UNIX,发音“gun-NEW

3、”)。各种使用Linux为核心的GNU操作系统被广泛使用,Linux也称为GNU/Linux。 20世纪90年代初,GNU项目已开发出许多高质量的免费软件,如:emacs编辑系统、bash shell程序、gcc系列编译程序、gdb调试程序,等等,为Linux的开发创造了合适的环境,是Linux诞生的基础之一。,5,POSIX(Portable Operating System Interface for Computing Systems):由IEEE和ISO/IEC开发的一组标准。该标准基于现有UNIX实践经验,描述了OS的API,用于保证调用API编制的应用程序在源代码一级上可以在多种操

4、作系统上移植和运行。 20世纪90年代初,POSIX标准制定,使得Linux能够在标准的指导下进行开发,并能够与绝大多数UNIX兼容。,POSIX标准,6,UNIXLinux是UNIX的一种克隆系统。 MINIX也是UNIX的一种克隆系统,提供源码(只免费用于大学内),Linux刚开始参照MINIX开发。 GNU计划开发Linux以及Linux上所用大多数软件。Linux只是一个OS内核,没有GNU软件环境(如bash shell),Linux寸步难行。 POSIX标准在推动Linux朝着正规路上发展起着重要的作用。 Internet若没有Internet和无数计算机黑客的无私奉献,Linux

5、最多只能发展到0.13(0.95)版。,影响Linux发展的几大因素,7,Linux的特点-1,开放性:遵循世界标准规范特别是开放系统互联(OSI)国际标准,能彼此兼容,方便互联。采用GPL授权,公开源码,任何人都可使用、修改、散布;核心采用模块化设计,易增减功能,高度可伸缩性。 多用户:系统资源可被不同用户各自使用,互不影响。 多任务:计算机同时执行多个程序,各个程序的运行互相独立。系统调度每个进程平等地访问微处理器,由于CPU速度快,使得所有启动的应用程序看起来好像在并行运行。 稳定性强:无数人参与Linux核心的改进、调试与测试,造就了稳定度高的Linux。虽不是商业产物,但质量不逊于商

6、业产品。,8,Linux的特点-2,设备独立性:把所有外设统一看作文件,只要安装了驱动程序,用户可以像使用文件一样使用这些设备,而不必知道具体存在形式。用户也可以修改内核源码,以适应新增加的外部设备。丰富的网络功能:Linux在通信和网络功能方面优于其他OS,提供了完善的、强大的网络功能,包括支持Internet、文件传输和远程访问。 系统安全、可靠:Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,为网络多用户环境中的用户提供了必要的安全保障。,9,可移植性好:可移植性是指将OS从一个平台转移到另一个平台,并使它仍然能按其自身的方式运行的能力。

7、Linux开始是基于Intel 386设计的,随着网络的散布,加上许多工程师致力于各式平台的移植,使之可以在x86、MIPS、ARM/StrongARM、PowerPC、Motorola 68k、Hitachi SH3/SH4、Transmeta等平台上运行,几乎覆盖了所有嵌入式系统的CPU种类。 应用软件多:自由软件世界里有个很大的特点就是软件多,授权几乎都是采用GPL方式,用户可自由参考与使用,但设计者通常利用空余时间开发,不以赢利为目的,所以不能担保这些软件完全没有问题。尽管如此,仍有许多优秀软件出现,例如,KDE与GNOME便是很好的证明。,Linux的特点-3,10,Linux的发展

8、及应用-1,1991年10月5日,Linus Torvalds在新闻组comp.os.minix发布了约1万行代码的Linux v0.01版本。 1992年,约1000人使用Linux,基本上属于黑客。 1993年,约100余名程序员参与内核代码编写/修改工作,核心组5人,Linux 0.99的代码约十万行,用户约10万。 1994年3月,Linux 1.0发布,代码量为17万行,正式采用GPL协议。充实了对不同硬件系统的支持,提高了跨平台移植性。 1995年,Linux可在Intel、Digital,以及Sun SPARC处理器上运行,用户超过50万,介绍Linux的Linux Journa

9、l杂志的发行超过10万册。,11,Linux的发展及应用-2,1996年6月,Linux 2.0内核发布,约40万行代码,可支持多个处理器,进入实用阶段,约350万人使用。 1997年夏,好莱坞影片泰坦尼克号在制作特效中使用的160台Alpha图形工作站中,有105台采用了Linux。 1998年Linux迅猛发展。RedHat 5.0获得了InfoWorld的操作系统奖项。4月,Mozilla发布,Google采用的也是Linux服务器。mysql数据库充分得到发展。12月,IBM发布了适用于Linux的文件系统AFS 3.5,以及Jikes Java编辑器和Secure Mailer及DB

10、2测试版。迫于Windows和Linux的压力,Sun逐渐开放了Java协议,并在UltraSparc上支持Linux。1998年是Linux与商业接触的一年。,12,1999年,IBM与Redhat公司建立伙伴关系,以确保Redhat在IBM机器上正确运行。3月,第一届LinuxWorld大会的召开,象征Linux时代的来临。IBM、Compaq和Novell宣布投资Redhat公司,之前一直对Linux持否定态度的Oracle公司也宣布投资。5月,SGI公司宣布向Linux移植其XFS文件系统。7月,IBM启动对Linux的支持服务,并发布了Linux DB2。 2000年初,Sun公司在

11、Linux的压力下宣布Solaris8降低售价。事实上Linux对Sun造成的冲击比对Windows更大。2月,Red Hat发布嵌入式Linux开发环境,Linux在嵌入式行业的潜力逐渐被发掘出来。,Linux的发展及应用-3,13,2001年,Oracle宣布在OTN上的所有会员都可免费索取Oracle 9i的Linux版本。IBM则决定投入10亿美元扩大Linux系统的应用。5月,微软公开反对“GPL”,引起一场大规模的论战。8月,红色代码爆发,许多站点从Windows转向Linux。12月,Red Hat为IBM s/390大型计算机提供了Linux解决方案。 2002年是Linux企

12、业化的一年。2月,微软公司迫于各州政府的压力,宣布扩大公开代码行动,这是Linux开源带来的深刻影响的结果。3月,内核开发者宣布新的Linux支持64位的计算机。,Linux的发展及应用-4,14,2003年1月,NEC宣布将在其手机中使用Linux,代表着Linux成功进军手机领域。 2004年6月的统计报告显示在世界500强超级计算机系统中,使用Linux的已经占到了280席,抢占了原属于各种UNIX的份额。9月HP开始网罗Linux内核代码人员,以影响新版本的内核朝对HP有利的方式发展,而IBM则准备推出OpenPower服务器,仅运行Linux系统 。,Linux的发展及应用-5,15

13、,银行业信息化水平高、建设投入力度大,是中国各行业中开展信息化建设最早的行业之一。 (1)数据量大且集中,对主机、存储设备、网络设备等硬件设备需求很大;同时对存储管理、数据仓库、网络管理、网络安全、CRM等方面的软件需求也不小,金融安全问题越发突出。Linux的高可靠性和安全性是它在这一行业中应用的有力保障。 (2)成本因素,选择Linux的动力很大程度上来自于各个企业公司预算的减少。 (3)优良集群特性,Linux集群系统能够让相对落后的PII或PIII计算机变成可处理复杂任务的超级计算机系统,对客户非常有吸引力。,Linux的应用和优势(以银行为例),16,(4)北京市商业银行综合业务系统

14、建设采用了基于IBM Server i系列服务器的Linux解决方案,从整体上减少了总拥有成本和系统管理的复杂性,实现了对人员、财政及信息技术的有效管理,同时还提高了服务器管理能力。 (5)印度工业开发银行(IDBI)自1995年开始使用Linux系统从事关键的电话银行、资产追踪及人力资源管理等业务,节省的IT预算达70%。 (6)越来越多的商业公司采用Linux作为操作系统,例如,科学工作者使用Linux来进行分布式计算,ISP使用Linux配置Intranet服务器、电话拨号服务器等网络服务器,CERN(西欧核子中心)采用Linux做物理数据处理。,Linux的应用和优势(以银行为例),1

15、7,Linux一般包括四个主要部分:内核(Kernel)命令解释层(Shell或其他操作环境)文件结构(File Structure)实用工具,Linux的主要组成部分,18,内核是Linux系统的心脏,管理程序运行和硬件设备,决定着系统的性能和稳定性。内核以独占方式执行最底层任务,保证系统正常运行,协调多个并发进程,管理进程使用的内存,满足进程访问磁盘的请求等。 Linux内核源程序通常安装在/usr/src/linux下。,1、内核,19,Shell:系统的用户界面,提供用户与内核进行交互操作的一种接口,接收用户输入的命令并把它送入内核去执行,可编程(Shell编程)。常见Shell版本:

16、Bourne Shell:贝尔实验室开发BASH:GNU的Bourne Again Shell,系统默认Korn Shell:Bourne Shell的发展,大部分兼容C Shell:Sun公司Shell的BSD版本 X-Window的图形用户界面(GUI):提供了很多窗口管理器,有窗口、图标和菜单,所有的管理都通过鼠标控制。如KDE和GNOME。,2、命令解释层(Shell或其他环境),20,文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。 Linux文件系统包含三类文件: 普通文件:数据和程序,不包含任何特定的结构 目录文件:目录是一种结构,允许文件和目录放

17、在一起 特殊文件:包含多种类型,与进程间通讯、设备通讯有关 目录是管理文件的一个方便而有效的途径:用户可切换目录、设置目录和文件的权限采取多级树形结构,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。文件结构的相互关联性使共享数据变得容易,不同用户可访问同一个文件。,3、文件结构,21,标准Linux系统有一些专门的程序,辅助用户完成一些特定的任务,常用的工具包括编译开发工具、文本编辑工具、办公套件、网络管理及安全等。,4、实用工具,22,Linux内核,Linux的内核版本不断更新,修改旧内核的缺陷,增加新特性。如果想在自己的系统中使用新特性,或想根据自己的系统量

18、身定制更高效、更稳定可靠的内核,只需重新编译内核。,1 Linux的内核特征 2 进程管理 3 内存管理 4 文件系统管理 5 设备管理 6 进程间通信机制,23,Linux的内核特征-1,内核是OS的内部核心程序,向外部提供对计算机设备的核心管理调用。 操作系统将代码分为两部分:内核代码所在的地址空间称为内核空间,外部管理程序与用户进程所占据的地址空间称为外部空间(用户空间)。一个程序通常会跨越两个空间。 核心态:程序执行内核空间代码时的状态 用户态:程序执行外部空间代码时的状态,24,Linux的内核特征-2,单一内核(Monolithic Kernel):OS中所有的系统相关功能都被封装

19、在内核中,与外部程序处在不同的内存地址空间中,并通过各种方式防止外部程序直接访问内核中的数据结构。程序只有通过一套系统调用(System Call)的访问内核结构。 微内核(Micro Kernel):内核只提供最基本、最核心的操作(如,创建和删除任务、内存管理、中断管理等),其他管理程序(如文件系统、网络协议栈等)则尽可能放在内核外。这些外部程序可以独立运行,并对外部用户程序提供操作系统服务,服务之间使用进程间通信机制(IPC)进行交互。,25,Linux的内核特征-3,微内核使OS内部结构变得简单清晰。内核以外的程序独立运行,可分别维护和拆装,维护方便,体现了面向对象式软件的结构特征。(教

20、材P64) 微内核的不足:程序代码之间的相互隔离,使得整个系统丧失了许多优化机会。部分资源浪费在外部进程之间的通信上,微内核结构在效率上低于传统单一内核结构,这些效率损失将作为结构精简的代价。 总体上,当前硬件条件下,微内核在效率上的损失小于其在结构上获得的收益,选取微内核成为OS的一大潮流。,26,Linux使用单一内核结构。原因:Linux是一个实用主义OS,注重代码执行效率,全局性优化则损失结构精练,Linux中的每个部件都不能被轻易拆出,否则会破坏整体效率。Linux与传统单一内核(如UNIX)不同。传统单一内核系统中,内核代码被静态编译连入的。Linux可在需要时动态装入和卸载内核中

21、的部分代码(模块,Module)。Linux 内核为非抢占式,不能通过改变优先权来影响内核当前的执行流程,不是一个“硬”实时操作系统。,Linux的内核特征-4,27,进程管理-定义,进程是运行于自己的虚拟地址空间的一个程序,除了程序的指令和数据,还包括PC和CPU的所有寄存器,以及存储临时数据的进程堆栈 。 进程管理主要包括进程创建、运行、阻塞、唤醒再运行、释放以及删除上述管理中,都有可能涉及进程调度,故核心是进程调度,28,进程状态(教材图3-3),TASK_RUNNING就绪,TASK_RUNNING占有CPU执行,TASK_INTERRUPTIBLE浅度睡眠,TASK_UNINTERR

22、UPTIBLE深度睡眠,TASK_STOPPED暂停,TASK_ZOMBIE死亡但户口未注销,fork(),schedule(),时间片到,ptrace() schedule(),do_exit(),sleep_on() schedule(),interruptible_sleep_on() schedule(),收到信号SIG_CONT wakeup(),资源到位 wake_up_interruptible() 或收到信号wakeup(),资源到位 wake_up(),29,进程互斥与同步,进程并发执行引发的问题: 如何实现多个进程调用同一个互斥型驱动程序? 如何解决进程调用多个驱动程序时的

23、同步需求,如显示器等待键盘输入的数据? 常用同步互斥机制: 自旋锁 信号量 原子操作 读写锁,30,进程间通信,Linux的常用通信方式:信号:发往某进程的异步消息。管道和命名管道:允许在两个进程之间进行面向连接的单向的数据传输,可以显式地建立管道连接,也可以通过文件系统中的命名管道进行通信。信号量:允许创建信号量数组。消息队列:一种无连接的数据传输模型。消息是字节序列,并带有类型,通信时将消息写入到消息队列中,或从消息队列读取消息。共享内存:若干进程可以访问同一块物理内存区域。,31,内存管理,内存管理的主要功能:屏蔽硬件的内存结构,向上层返回统一的访问界面。如用户模式下的malloc()和

24、free()以及内核模式下的kmalloc()、kfree()解决内存不足的问题,按需调页。阻止进程肆意访问其他进程的地址空间和内核空间。实现共享内存。,32,虚拟内存管理下的地址类型,凡是通过MMU页表访问的地址都叫虚拟地址,而一旦启用了MMU,那CPU发出的所有地址都是虚拟地址。 内核用到的地址范围通常是3G4G,称为内核虚拟地址(与用户态的03G的用户虚拟地址相对应),在3G4G这段范围内,有段子集3G 3G+main_memory_size,这段主存大小的虚拟地址空间,由于在MMU页表映射时是采用的是平坦的线性映射,所以又专门起个称呼,叫内核逻辑地址。 在内核代码里,对于内核逻辑地址,

25、可以通过简单的偏移(3G),获晓对应的物理地址,而内核逻辑地址以外的那部分内核虚拟地址,是不能直接获晓物理地址的。,33,虚拟内存管理下的地址类型,假设物理主存是256M,总线地址为00x10000000(256M),那么虚拟地址子集0xC0000000(3G)0xD0000000(3G+256M)为内核逻辑地址, 即:内核逻辑地址0xC0000000对应物理主存地址0,内核逻辑地址0xD0000000对应物理地址256M。 故:内核逻辑地址-偏移量PHYS_OFFSET(0xC0000000)=物理主存地址,这种映射叫做平坦的线性映射 kmalloc 分配的内存返回的地址为内核逻辑地址,vm

26、alloc分配的内存则是内核逻辑地址之上的内核虚拟地址。,34,多值交互,返回不能被复制的字节数,故成功返回0 unsigned long copy_from_user(void *to,const void *from,unsigned long n); unsigned long copy_to_user(void *to, void *from,unsigned long len);,用户态和内核态内存交互,/单值交互,可以是char/int/long int put_user(data,ptr); int get_user(local,ptr);,内核态和用户态使用不同的内存定义,二者

27、不能直接互访,需要使用下列交互函数(在include/asm /uaccess.h中声明,使用前需用#include包含),/检查用户地址合法性,type取VERIFY_READ和VERIFY_WRITE int assess_ok(int type,const void *addr,unsigned long size);,35,static size_t dev_read(struct file *file, char *userbuf, size_t count, loff_t *ppos) if(!assess_ok(VERIFY_WRITE, userbuf, count)retur

28、n EFAULT;if (copy_to_user(userbuf, kernelbuf, count)return EFAULT;return count; ,用户态和内核态内存交互示例,36,物理地址到虚拟地址的映射,CPU对外设I/O端口物理地址的编址方式有两种: I/O映射(独立编址) 内存映射(统一编址) I/O映射可以采用outb、inb等函数操作I/O端口 内存映射方式下,外设I/O端口地址已知,而CPU没有为它们预定义核心虚拟地址,驱动程序不能直接通过物理地址访问I/O端口,而必须将它们映射到核心虚地址空间内(由mm/ioremap.c实现)。 为保证跨平台的可移植性,建议使用

29、Linux特定的函数来访问I/O资源,而不应该通过指向核心虚拟地址的指针来访问。,37,比如,开发板上有点阵模块的物理地址为:,访问IO内存地址示例,因为已经ioremap,所以在驱动程序中可使用下述两种写法,建议使用后一种,声明在linux/asm/io.h中,38,推荐的I/O端口访问定义(linux/asm/io.h),39,内核空间到用户空间的映射,如果想在用户空间访问内核地址,可采用mmap方法,用户可以通过内存映射直接访问设备的I/O存储区或DMA缓冲。 unsigned long mmap(unsigned long addr,unsigned long len,int prot

30、,int flags,int fd,long offset);,40,文件管理,在Linux系统中,所有的文件被组织到一个统一的树形目录结构中。,41,有关目录详细说明-1,42,有关目录详细说明-2,43,Linux支持的文件子系统,稳定支持的文件系统包括ext2/3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB、reisterfs、Yaffs、Cramfs、Romfs等,44,用户程序(进程),VFS,minix,FAT,设备文件,ext2,用户程序对文件系统的系统调用:应用程序和GNU C库(glibc)如read(),write(),open(),close

31、()等,通过file结构中的f_op指针实现的”文件系统总线”,用户空间,系统空间,VFS:把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是内核的一部分,位于用户程序和具体的文件系统之间,屏蔽了不同文件系统对于应用程序的差异性,为用户程序提供了标准的文件系统调用接口。,VFS,标准的文件系统调用接口:sys_read() sys_write() sys_open()等,45,由于嵌入式设备的一些特殊性,使得嵌入式文件系统除了满足一般文件系统的基本要求外,还有一些自身的特性:存储介质特殊,主要是flash存储芯片。快速恢复实时性安全性和均衡负载 日志型文件系统可解决安全性问题,已成为嵌

32、入式文件系统的主流。,嵌入式Linux文件系统,46,FLASH类型,Flash闪存存储器低功耗、高密度、小体积,按整体/扇区擦除和按字节编程,主要有NOR和NAND两种类型。,47,嵌入式Linux文件结构,48,jffs yaffs romfs cramfs,嵌入式Linux常用文件系统,Flash,ramdisk ramfs,RAM,网络,nfs,文件系统,49,RedHat公司基于JFFS开发的闪存文件系统,最初其eCos系统,也可用在Linux、uCLinux中。主要用于NOR型闪存,基于MTD驱动层。特点:可读写、支持数据压缩、基于哈希表、日志型,提供崩溃/掉电安全保护、支持“写平

33、衡”,支持多种节点类型、能提高Flash利用率。 缺点:当文件系统已满或者接近满时,因为垃圾收集的关系使得jffs2的运行速度大大放慢。,jffs2(Journalling Flash FileSystem2),50,专为嵌入式系统使用NAND型闪存设计的日志型文件系统。比jffs2少了一些功能,如不支持数据压缩等,速度更快,挂载时间短,内存占用较小。跨平台,支持Linux、eCos、WinCE, pSOS和ThreadX。自带NAND芯片驱动,提供了直接访问文件系统的API,用户可绕过MTD与VFS直接操作文件系统,也可与MTD驱动配合使用。yaffs与yaffs 2的区别:小页(512B)

34、 大页(2KB) ,在内存空间占用、垃圾回收速度、读/写速度等也有大幅提升。JFFS2在Nand闪存上不稳定,yaffs更适合大容量Nand闪存。,yaffs/yaffs2(Yet Another Flash File System),51,简单、紧凑、只读、传统型的文件系统。不支持动态擦写保存,按顺序存放数据,只支持应用程序以XIP(eXecute In Place,片内运行)方式运行,在系统运行时可节省RAM空间。uClinux通常采用romfs。,romfs(ROM File System),52,只读压缩文件系统,基于MTD驱动程序。每一页(4KB)被单独压缩,可随机页访问,其压缩比高

35、达2:1,可节省大量的Flash存储空间。在读取档案时,只对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当读取的档案不在内存时,cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。速度快,效率高缺点:只读,使得用户无法扩充内容,cramfs(Compressed ROM File System),53,ramdisk将一部分固定内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,可以作为根文件系统。 ramdisk上的内容会因系统的重新开机而丢失,通常从经压缩的磁盘文件系统(如ext2)加载其内容(压缩的ramdisk镜

36、像)。ext2是ramdisk中最常用的文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过ramdisk放在内存中,可以明显地提高系统的性能。,ramdisk,54,ramfs是一种基于内存的文件系统,工作于虚拟文件系统(VFS)下,不能格式化,可创建多个,创建时可指定最大可用内存。VFS本质上也是一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。ramfs是一个非常简单的文件系统,它输出Linux的磁盘缓存机制(页缓存和目录缓存)作为一个大小动态的基于内存的文件系统。通常,所有的文件被Linux缓存在内存中。页的数据从保持在附件后备存储(一般被挂

37、载的是块设备文件系统)中读取,并标记为可用以防虚拟内存系统(Virtual Memory System)需要使用这些内存。,ramfs/tmpfs,55,nfs(Network File System) :在不同Linux间通过网络共享文件的技术。当用户想使用某个远程文件时,只要运行挂载命令“mount”就可以将远程的文件系统安装在自己的文件系统下,就跟操作本地文件一样,方便用户对远程文件的使用。nfs使用方法参见第5章 嵌入式Linux应用程序开发,nfs,56,设备管理,设备驱动是操作系统内核中最接近硬件设备,是操作系统内核和底层硬件设备之间的接口,操作系统内核就是通过调用这些接口函数来完

38、成对底层硬件设备的使用。应用程序怎样使用底层的硬件平台呢? - 参见第6章嵌入式Linux驱动程序开发,57,3.3 典型嵌入式Linux系统,3.3.1 CLinux 3.3.2 RTLinux 3.3.3 MontaVista Linux 3.3.4 RTAI,58,CLinux,标准Linux内核采用虚拟内存管理技术来提高系统运行效率,硬件上需要内存管理单元(MMU)的支持。在一些没有MMU的应用中,虚拟内存管理就变得冗余了,甚至会对系统整体性能产生负面的影响。 CLinux是专为嵌入式系统设计的Linux,这里字母即为micro(微小)的意思,字母C是Control的缩写,CLinux

39、符合GNU/GPL,开放代码。 CLinux从Linux 2.0/2.4内核派生而来,通过对标准内核的裁减,去除虚拟内存管理部分代码,并且对内存分配进行优化,达到提高系统运行效率的目的。,59,CLinux特点, Clinux高度优化的、代码紧凑,体积很小,但仍然保留了Linux大多数优点:稳定、良好的移植性、优秀的网络功能、支持各种文件系统,标准丰富的API。主要特征: (1)通用Linux API; (2)内核512 KB; (3)内核文件系统900 KB; (4)完整的TCP/IP协议栈; (5)支持大量其他的网络协议; (6)支持各种文件系统,包括NFS、EXT2、romfs和JFFS

40、、MS-DOS和FAT16/32,60,(1)必须保证由内核载入的进程能够在各自独立的内存空间中运行。方法一是在程序载入内存前就确定进程将占据的地址范围;方法二是在代码生成时只使用相对地址。CLinux对这两种方法都能够支持。 (2)内存的分配和释放直接在一维内存映像中进行,频繁动态内存分配在系统内存中产生很多碎片,导致系统内存不足。CLinux通过改写malloc()系统调用,使内存在一个内存块的池中进行预分配。 (3)无法实现内存页面的换入与换出。内存需求比系统实际具有的物理内存大的程序无法运行。,CLinux,61,CLinux通常采用romfs文件系统,比EXT2省空间。两个方面:首先

41、,支持romfs文件系统比支持EXT2文件系统需要更少的代码;其次,romfs文件系统相对简单,在建立文件系统超级块(superblock)时需要更少的存储空间。romfs文件系统不支持动态擦写和保存,对于系统需要动态保存的数据采用虚拟ram盘/JFFS的方法进行处理(ram盘将采用EXT2文件系统)。CLinux带有一个完整的TCP/IP协议,还支持许多其他网络协议。 CLinux应用广泛,例如,VPN路由器/防火墙、家用操作终端、协议转换器、IP电话、工业控制器、Internet摄像机、PDA设备等。,CLinux,62,RTLinux,为了保持原有Linux的强大功能(如网络连接、用户界

42、面等),同时又能满足硬实时应用要求,新墨西哥州立大学的FSM实验室提出了用虚拟机(Virtual Machine)技术改造Linux内核的思想,成果就是RTLinux。 RTLinux是源码开放、硬实时特性的多任务操作系统。通过底层对Linux实施改造,没有重写Linux的内核,原因:工作量大,失去Linux的兼容性。 RTLinux有一个高效的、可抢先的实时调度核心,并把Linux作为此核心的一个优先级最低的进程运行,用户可以编写自己的实时进程,和标准Linux共同运行。实时调度模块的调度算法是基于优先级的抢占式调度方法,速度快,系统在满足硬实时应用方面有很好的效果。,63,RTLinux,

43、在Linux内核和中断控制硬件之间增加一层仿真软件截取所有的硬件中断。 将所有的中断分成Linux中断和实时中断两类,实时中断继续向硬件发出中断,对普通Linux中断则设置标志位,等到RTLinux内核空闲时通过软中断传递给Linux内核去处理。 无论Linux处于什么状态,都不会对实时系统的中断响应时间增加任何延迟,从而避免了时间上的不可预测性。,64,MontaVista Linux,重点考虑小内存、确保响应、高可用性。直接修改Linux的调度机制和算法,把Linux内核修改成称为Relatively Fully Preemptable Kernel的抢占式内核,以达到一定的实时性,是一种

44、软实时的Linux。优点是:用户进程可以调用Linux提供的系统调用,Linux程序无需修改或者重新编译即可增强性能。提供集成开发环境,包括CDK(Cross Development Kit)、图形化Trace工具,等等。,65,1支持多种硬件及平台 支持IA-32/x86、PowerPC、StrongARM、XScale、SuperH、MIPS、ARM等6种CPU系列/22种CPU 。 支持超过60种开发板或者应用板,如CompactPCI、VME、PC/104、EBX、ATX等。 支持更多的主机操作系统平台,包括RedHat Linux、YellowDog Linux、Solaris、Ma

45、ndrake、Suse和Windows下的VMWare等。 2多种实用的开发工具包 交叉开发工具、C和C+语言工具、源代码调试工具和跟踪工具、目标配置工具、库优化工具、Java技术的支持。 3性能优越的实时性 4完整的图形及网络支持,MontaVista Linux特点,66,缺点:中断封锁时间过长;非抢占式的Linux内核; 耗尽式、机会均等的进程调度策略。,MontaVista Linux不足,解决方案: (1)完全的抢占性内核-SMP(Symmetric Multi Processing) (2)透明的实时调度器: 提高Linux系统的响应速度; 提供标准的Linux API和以线程为基

46、础的用户编程模式; 能够配置多种实时优先级; 能够处理毫秒级150微秒级的调度需求。,67,RTAI,RTAI,Real-Time Application Interface,是一套实时应用程序接口,和 RT-Linux类似,架空Linux,用可加载式核心模块作为实时进程(real-time process)。每一个实时进程实际上就是一个可加载式核心模块。RTAI定义了一组RTHAL(Real-Time Hardware Abstraction Layer),将RTAI需要在Linux中修改的部分定义成一组程序界面,RTAI只使用这组界面和Linux沟通。好处:可以将直接修改Linux核心的程序代码减至最小,降低将RTHAL移植到新版Linux的工作量。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报