《嵌入式Linux体系结构优秀PPT.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux体系结构优秀PPT.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、东南大学集成电路学院国家ASIC系统工程技术研究中心嵌入式操作系统第十五章 嵌入式Linux体系结构戚隆宁longn_qiseu.edu 国家ASIC系统工程技术研究中心主要内容主要内容n什么是嵌入式什么是嵌入式Linuxn嵌入式嵌入式Linux的特点的特点n嵌入式嵌入式Linux系统结构系统结构国家ASIC系统工程技术研究中心什么是嵌入式Linuxn 嵌入式Linux一般是指对标准Linux进行裁剪、定制乃至改造处理之后,适合于特定嵌入式应用场合的专用Linux操作系统。uCLinuxRTLinuxRTAIMontaVista Linux(Hard Hat Linux)MobiLinuxEm
2、bedixBlue Cat LinuxAndroid Linux国家ASIC系统工程技术研究中心什么是嵌入式Linux:Linux简介nLinux 还是 GNU/Linux?nLinux:开源的类UNIX操作系统内核nGNU/Linux:集成GNU(GNUs Not Unix)软件(窗口系统、编译器、各种 shell、应用程序和开发工具等)和Linux内核的操作系统。nGPL(GNU General Public License)许可证协议下,GNU软件可以自由地“运用、复制、修改和发布”(CopyLeft)nLGPL(GNU Lesser General Public License)国家A
3、SIC系统工程技术研究中心什么是嵌入式Linux:Linux简介n1991年,Linux之父,芬兰赫尔辛基高校的学生:Linus Torvalds,发布第一个Linux版本国家ASIC系统工程技术研究中心什么是嵌入式Linux:Linux简介nLinux内核版本国家ASIC系统工程技术研究中心什么是嵌入式Linux:Linux简介n0.00(1991年24月):两个进程分别显示AAA BBB。n0.01(1991年9月):第一个正式向外公布的Linux 内核版本。n0.11(1991年12月):基本可以正常运行的内核版本。n0.13/0.95(1992年3月):加入虚拟文件系统思想的内核版本。
4、n1.0(1993年3月):在一批高水平黑客的参与下,诞生第一个正式版本。n2.0(1996年6月):可支持多个处理器SMP。n2.2(1999年1月):增加了对进程的POSIX实力的支持。n2.4(2001年1月):进一步提升SMP系统的扩展性,集成了很多用于支持桌面系统的特性,如对USB、PCMCIA的支持,内置的即插即用等功能。n2.6(2003年12月):更好地支持大型多处理服务器;更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;对鼠标和键盘指令等用户行为反应更加快速;块设备驱动程序做了彻底更新,如与硬盘和CD光驱通信的软件模块。国家ASIC系统工程技术研究中心什么是嵌入式L
5、inux:Linux简介nLinux 内核版本是由Linus Torvalds 作为总体协调人的Linux开发小组(分布在各个国家的近百位高手)开发出的系统内核的版本号nLinux 内核接受的是双树系统n稳定树(stable Linux kernel tree,简称stable tree),主要用于发行n非稳定树(unstable Linux kernel tree,简称unstable tree)或开发树(development tree),用于产品开发和改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树nx:主版本号。ny:次版本号。对于稳定树来说,y是偶数;对于开发树来说,y比相
6、应的稳定树大1,即为奇数。nz:修改号。表示小的修订次数。国家ASIC系统工程技术研究中心什么是嵌入式Linux:Linux简介nGNU/Linux发行套件国家ASIC系统工程技术研究中心什么是嵌入式Linux:嵌入式Linuxn内核的定制:嵌入式Linux 内核n为特殊的硬件配置、或为了支持特殊的应用而经过特殊的裁剪的修改过的Linux 内核n系统的定制:嵌入式Linux 系统n为了在嵌入式系统中运用而剪裁过的Linux系统软件n发行套件的定制:嵌入式Linux 发行套件n为了在嵌入式系统中运用而剪裁过的Linux应用软件国家ASIC系统工程技术研究中心什么是嵌入式Linux:嵌入式应用国家
7、ASIC系统工程技术研究中心什么是嵌入式Linux:嵌入式应用n实时性硬实时软实时宽松时限n硬件规模小型(CPU100MHz,内存32MB)中型(CPU500MHz,内存1GHz,内存1GMB)国家ASIC系统工程技术研究中心什么是嵌入式Linux nuClinux(Micro-Control-Linux):特地针对无MMU的微限制器领域而设计的嵌入式Linux 系统nARM Linux:特地针对无ARM处理器(有MMU)的嵌入式Linux 系统nRTLinux:硬实时微内核的实时操作系统,将一般Linux系统作为一个低优先级的任务来运行,其他的实时任务优先级比一般Linux 系统要高。nRA
8、TI(RealTime Application Interface):嵌入式Linux 系统的硬实时补丁,类同RTLinux,但通过实时硬件抽象层实现实时任务和Linux的交互。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点(1)n单体内核(monolithic)n借鉴了微内核的特性,具有动态调入模块的观念,比传统的单体内核操作系统可移植性更强。n多任务n接受时间片轮转优先级抢占的算法,实现多任务并行。n多用户n多个用户可以在同一时间内运用系统,同一用户可以同时并行执行多个任务。操作系统可以同时管理多个用户的恳求和多个任务。国家ASIC系统工程技术研究中心嵌入式L
9、inux的特点n标准Linux的特点(2)支持多种处理器体系结构X86、ARM、MIPS、M68K、PowerPC、SH、SPARC支持MMU和non-MMU的处理器支持32位和64位的处理器支持多处理器(SMP)支持32个CPU并行工作支持多种总线接口和外部设备国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点(3)n支持虚拟内存n4GB虚拟地址空间,用户空间3GB。n支持多种文件系统n通过虚拟文件系统(VFS)屏蔽了各种不同文件系统的内在差别,使得用户可以运用同样的方式访问各种不同格式的文件系统:EXT、FAT、YAFFS。n通过逻辑卷管理(LVM)可以在运行时动
10、态伸缩文件系统的大小,或增加文件系统。n支持网络文件系统(NFS)n支持内核虚拟机(KVM)n允许在宿主 Linux 内核的用户空间中运行其他客户操作系统。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点n规范性和可移植性n支持POSIX(Portable Operating System Interface)标准nGNU工具的支持:GCC、GDB、GNU make、GNU ldn实时性n支持内核线程(守护进程),2.6版本以后内核线程可抢占。n有效的延迟机制:下半部分,软中断,tasklet和工作列队等。可以针对任务的轻重缓急,更细粒度的选择执行时机。保证了系统运
11、行时尽量在平安时间(不关中断)。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点n开放性n遵循GPL许可证协议,开放源代码,全世界的开发者共同运用和维护n无授权费用n开源社区的支持,快速的技术更新国家ASIC系统工程技术研究中心嵌入式Linux的特点nLinux没有的n病毒n后门n强迫性的软件升级n私有的文件格式n产品注册登记n昂扬的软件价格国家ASIC系统工程技术研究中心嵌入式Linux的特点nLinux 2.6内核针对嵌入式系统的改进n实时性显著提高n允许抢占以内核态运行的任务(包括通过系统调用进入内核模式的用户任务)。n更加有效的调度算法。算法困难度为O(1)
12、。n同步性的提高。n增加对嵌入式处理器的支持n增加了对无MMU系统的支持。n面对嵌入式应用n子系统架构将功能模块化,可以定制而对其他部分影响最小,便于裁剪和移植。n改善了I/O子系统,供应了更多嵌入式外设的支持以实现各种应用开发。n可以配置成无输入和显示的纯粹无用户接口系统。国家ASIC系统工程技术研究中心嵌入式Linux的特点n嵌入式Linux的特点n须要交叉编译开发n具有更强的实时性n依据硬件资源限制和应用需求进行裁剪国家ASIC系统工程技术研究中心嵌入式Linux系统结构n引导系统(Bootloader)n系统内核(Kernel)n文件系统(File System)国家ASIC系统工程技
13、术研究中心嵌入式Linux系统结构:BootloadernBootLoader回顾nBoot Loader 是在操作系统内核运行之前首先运行的第一段小程序:初始化硬件设备;建立内存空间的映射图;加载操作系统内核镜像到RAM中,并将系统的限制权传递给它。nBootLoader依靠于CPU体系结构和板级硬件配置nBootLoader通常预先划分好固态存储设备的空间,用于存放镜像。nBootLoader通常支持启动加载和下载两种模式。nBootLoader的操作通常分为两个阶段。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern第一阶段操作n1.屏蔽全部的中断n2.设置
14、CPU 的速度和时钟频率n3.RAM 初始化n4.初始化硬件调试端口(LED/UART)。n5.关闭CPU 内部指令数据cachen6.为其次阶段准备RAM 空间n7.拷贝其次阶段代码到RAM 中n8.设置堆栈指针spn9.跳转到其次阶段的入口点国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern其次阶段操作n1.初始化本阶段要运用到的硬件设备n2.检测系统内存映射(memory map)n3.将kernel 映像和根文件系统映像从flash 上读到RAM 空间中n4.为内核设置启动参数n5.调用内核国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Boot
15、loadern在嵌入式Linux系统中,须要由BootLoader设置的参数有:n内核参数,如页面大小、根设备n内存映射状况n吩咐行参数ninitrd映像参数n起始地址,大小nRamdisk参数n解压后的大小国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern嵌入式Linux系统常用BootLoader:UBootRedBootBlob国家ASIC系统工程技术研究中心嵌入式Linux系统结构nGNU/Linux系统构成应用程序库系统内核国家ASIC系统工程技术研究中心嵌入式Linux系统结构n嵌入式Linux应用程序n程序文件接受ELF格式或AOUT格式n运行在用户
16、空间,必需通过Linux内核访问资源n支持图形用户界面,须要第三方GUI软件nX11 WindownQTnMicro WindownMiniGUIn库:通常为共享库(.so),须要链接到应用程序运行。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核:事实上仅仅是一个资源管理器。不管被管理的资源是进程、内存还是硬件设备,内核负责管理并裁定多个竞争用户对资源的访问(既包括内核空间也包括用户空间)。n内核构成n体系结构层n设备驱动n内存管理n进程管理n虚拟文件系统n网络协议n系统调用接口国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kernel国家ASIC系统
17、工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理n重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU 寄存器)。在用户空间,通常运用进程这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。应用程序通过内核供应的系统调用接口来创建一个新进程,停止进程,并在它们之间进行通信和同步(信号、管道、共享内存、信号量和套接字)。n进程管理还包括处理活动进程之间共享 CPU 的需求。内核实现了一种新型的调度算法,不管有多少个线程在竞争 CPU,这种算法都可以在固定时间内进行操作。国家ASIC系统工程技术研究中心嵌入式Linu
18、x系统结构:Kerneln进程管理nLinux中每一个进程由一个task_struct数据结构来描述(进程限制块PCB)n进程描述符放在动态内存中而且和内核态的进程栈放在一个独立的8KB的内存区中n进程描述符n进程标识n进程状态(State)n进程调度信息和策略n标识号(Identifiers)n进程通信有关的信息(IPC)n进程链接信息(Links)n时间和定时器信息(Times and Timers)n文件系统信息(Files System)n处理器相关的上下文信息国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理:状态机国家ASIC系统工程技术研究中心n进程
19、管理n基本操作nfork:通过复制调用进程来建立新的进程,是最基本的进程建立过程nexec:包括一系列系统调用,它们都是通过用一个新的程序覆盖原来的内存空间,实现进程的转变nwait:供应初级的进程同步措施,能使一个进程等待,直到另外一个进程结束为止。nexit:该系统调用用来终止一个进程的运行国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kernel国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理n新的进程通过克隆旧的进程来建立,当前进程是通过fork()系统调用来建立新的进程。当系统调用结束时,内核在系统的物理内存中为新进程安排新的task_st
20、ruct结构,并为新进程要运用的堆栈安排物理页和进程标记符nexec并不创建新进程,前后进程ID是不变的。它是用另外一个程序替代了当前进程的正文,数据,堆和栈国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理:进程父子关系国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理nLinux中的0号进程,通常称为swapper进程,是全部进程的祖先。由它执行cpu_idle()函数,当没有其他进程处于TASK_RUNNING的时候,调度程序会选择0号进程运行n0号进程创建1号进程,通常称为init进程。它创建和监控其他进程的活动国家ASIC系
21、统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理n进程调度n一般进程n动态优先调度n周期性地修改进程的优先级(避开饥饿)n依据进程的counter值n实时进程n静态优先级调度国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理nLinux接受了“虚拟内存”方式管理内存。Linux将内存划分为很多大小相同的内存页。在系统运行过程中,若某个应用程序对内存的需求大于物理内存时,Linux可将短暂不用的内存页交换到硬盘上。这样,空闲的内存页可以满足应用程序的内存需求,而应用程序却不会留意到内存交换的发生。n一般Linux通过MMU爱护内存访问,但对于无MM
22、U的处理器则没有。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理n与体系结构无关的三级页表模型npgd,页书目npmd,页中级书目npte,页表项国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理n各进程拥有自己的3G用户空间n内核占用最高的1G作为系统空间,系统空间由全部进程共享国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理n1G内核空间物理内存空间n1G的后128MB用作实现非连续内存安排和固定映射的线性地址国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理n实现
23、了基于区的伙伴系统(Buddy System)能够快速的满足各种大小的安排要求,同时削减碎片。n实现了slab安排器,把存储器区看作对象,对象依据类型分组成不同的高速缓存。解决恳求内存小于一页的问题,改进伙伴系统的效率。n非连续存储器区的管理,允许将连续的线性地址映射到非连续的物理页。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动n设备驱动程序实际限制操作系统和硬件设备之间的交互。设备驱动程序供应一组操作系统可理解的抽象接口,并利用该接口完成和操作系统之间的交互。而与硬件相关的具体操作细微环节由设备驱动程序完成。n设备驱动程序运行在高特权级的处理器环境中,从而
24、可以干脆对硬件进行限制。但正因为如此,任何一个设备驱动程序的错误都可能导致操作系统的崩溃。n可接受内核模块(Loadable Kernel Module,LKM)的实现方式国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核模块n在系统启动任何时候都可以动态链入内核的代码块。该机制使我们可以随意地、动态地加载与卸载操作系统部件。当我们不再须要某个功能部件时,可以将它对应的模块从内核中卸载并删除。Linux模块多指设备驱动程序、伪设备驱动程序,如文件系统的驱动程序等。n在内核空间运行。n事实上是一种目标对象文件,没有链接,不能独立运行。国家ASIC系统工程技术研究中心嵌入
25、式Linux系统结构:Kerneln内核模块的优点n将来修改内核时,节约编译时间;n若须要安装新的模块,只要插入(通过insmod吩咐)对应的模块即可;n削减内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能都交由模块实现。模块也可以用来尝试新的内核代码,而不须要每次都创建和重激活内核。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核模块潜在的问题:n对系统性能和内存利用有负面影响;n装入的内核模块和其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃;n有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依靠性。n内核必需
26、能够在卸载模块时通知模块,并且要释放安排给模块的内存和中断等资源;n内核版本和模块版本的不兼容也可能导致系统崩溃。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动(中断处理)n当执行中断处理程序或下半部时,内核处于中断上下文n中断上下文不同于进程上下文,中断或异样处理程序执行的代码不是一个进程。它是一个内核限制路径,代表了中断发生时正在运行的进程执行,作为一个进程的内核限制路径,中断处理程序比一个进程要“轻”(中断上下文只包含了很有限的几个寄存器,建立和终止这个上下文所须要的时间很少)n中断上下文不行以睡眠,也不能调用某些函数,具有较为严格的时间限制国家ASIC
27、系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动下半部可以通过多种机制实现,分别由不同的接口和子系统组成BH接口静态创建 由32 个 Bottom half组成的链表Taskqueue 任务队列 机制 软中断 Tasklet工作队列国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln嵌入式Linux内核源代码组织国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统n在Linux中没有盘符的概念,每个文件都以唯一的名称存储在系统的书目中。我们可以把整个书目系统看成一个树形结构,其中有很多书目分枝。全部的
28、书目都会连接到“根”书目,用单斜线(/)表示。nLinux继承了Unix的资源访问方式,全部的资源访问限制都是基于文件的。在Linux中各种硬件设备、端口设备甚至内存都是以文件形式存在的。n通过虚拟文件系统(VFS)在内核中供应一个文件系统框架(接口函数集、管理用的数据结构、各种缓存机制)为各种文件系统供应通用接口,即通用文件模型。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统构成国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统nVFS由以下对象类型组成n超级块对象:存放已安装
29、文件系统信息n索引节点对象:存放文件信息,每个索引节点对象的索引节点号唯一地标识了文件系统中的文件n文件对象:存放打开文件与进程间交互的信息n书目项对象:存放书目项与文件进行链接的信息nVFS还运用了磁盘高速缓存(软件机制),将常用的书目项对象放在书目项高速缓存中国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File System国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统n文件系统操作nmount、umount:挂载/卸载文件系统nsysfs:获得文件系统信息nstatfs、fstatfs、ustat:获得文件系统统计
30、信息nchroot:更改根书目nchdir、fchdir、getcwd:操纵当前工作书目nmkdir、rmdir:创建/删除书目ngetdents、readdir、link、unlink、rename:对书目项进行操作nreadlink、symlink:对符号链接进行操作nchown、fchown、lchown:更改文件全部者nchmod、fchmod、utime:更改文件属性nopen、close、create 国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File SystemnVFS支持的文件系统n基于磁盘的文件系统:它们管理在本地磁盘分区中可用的存储空间nLinux运用的文
31、件系统:ext2、ext3、ReiserFSnUnix家族的文件系统:SYSV文件系统,UFS,MINIX文件系统以及VERITAS VxFSn微软公司的文件系统:MS-DOS、VFAT以及NTFSnISO9660CD-ROM文件系统和通用磁盘格式的DVD文件系统n其他有专利权的文件系统,如HPFS、HFS、AFFS、ADFSn起源于非Linux系统的其他日志文件系统,JFS,XFSn网络文件系统:用于访问属于其他网络计算机的文件系统所包含的文件nNFS、Coda、AFS、SMB、NCPn特殊文件系统n不同于上述两大类n不管理具体的磁盘空间n/proc国家ASIC系统工程技术研究中心嵌入式操作系统 谢 谢!