第九章嵌入式Linux的文件系统.ppt

上传人:本田雅阁 文档编号:2121340 上传时间:2019-02-18 格式:PPT 页数:42 大小:255.51KB
返回 下载 相关 举报
第九章嵌入式Linux的文件系统.ppt_第1页
第1页 / 共42页
第九章嵌入式Linux的文件系统.ppt_第2页
第2页 / 共42页
第九章嵌入式Linux的文件系统.ppt_第3页
第3页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第九章嵌入式Linux的文件系统.ppt》由会员分享,可在线阅读,更多相关《第九章嵌入式Linux的文件系统.ppt(42页珍藏版)》请在三一文库上搜索。

1、1,嵌入式系统 第九章 嵌入式Linux 的文件系统,2,第九章 Agenda,9.1 Linux 的文件系统结构概要 9.2 MTD 9.3 嵌入式Linux 专用的文件系统 9.4 如何构造根文件系统 9.5 Ramdisk,3,9.1 Linux 的文件系统结构概要,9.1.1 Linux 文件系统的特点 9.1.2 Mount 命令 9.1.3 文件的类型 9.1.4 Linux 常见的文件系统 9.1.5 VFS,4,9.1.1 Linux 文件系统的特点,文件系统是指操作系统中于管理文件有关的软件和数据。 Linux的文件系统和Windows中的文件系统是有很大的区别的 Windo

2、ws文件系统是以驱动器的盘符为基础的,而且每一个目录是与相应的分区对应,例如“C:Projects”是指此文件在C盘这个分区下。 而Linux恰好相反,文件系统是一个文件树,且它的所有文件和外部设备(如硬盘,光驱等)都是以文件的形式挂结在这个文件树上,例如“/dev/floppy”。对于Windows而言,就是指所有分区都是在一些目录下。 总之,在Windows下,目录结构属于分区;Linux下,分区属于目录结构。,5,Linux的目录结构,6,根文件系统的基本结构,7,Mount,在Linux中把每一个分区和某一个目录相对应,以后在对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手

3、段和软件目录管理手段的统一,这个把分区和目录对应的过程叫做挂载(Mount),而这个挂载在文件树中的位置就是挂载点。这种对应关系可以由用户随时中断和改变。,8,9.1.2 Mount 命令,mount命令的功能是加载指定的文件系统。 它的语法如下所示: 命令格式: mount -t vfstype -o options device dir 其中: 1. -t vfstype 指定文件系统的类型,通常不必指定。 mount 会自动选择正确的类型。 2. -o options 主要用来描述设备或档案的挂接方式。 3. device 要挂接 (mount) 的设备。 4. dir 设备在系统上的挂

4、接点 (mount point) 。 例如: mount -t nfs -o nolock 192.168.0.20:/home /mnt/nfs,9,9.1.3 文件的类型,Linux中的文件类型与Windows中的文件类型有显著区别,其中最显著的区别在于Linux对目录和设备都当作文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。 普通文件 目录文件 链接文件 设备文件,10,1. 普通文件,普通文件如同Windows中的文件一样,是用户日常使用最多的文件。它包括文本文件,shell脚本,二进制的可执行程序和各种类型的数据。,11,2. 目录文件,在Linux中,目录也是文

5、件,它们包含文件名和子目录名以及指向那些文件和子目录的指针。 目录文件是Linux中存储文件名的唯一地方,当把文件和目录对应起来的时候,也就是用指针将其链接起来之后,就构成了目录文件。 Linux系统中的每个文件都被赋予一个唯一的数值,而这个数值被称做索引节点。一个索引节点包含文件的所有信息 Linux文件系统把索引节点号1赋于根目录,这也就是Linux的根目录文件在磁盘上的地址。 Linux通过上下链接目录文件系统来实现对整个文件系统的操作。,12,3. 链接文件,链接文件(软链接)有些类似于Windows中的“快捷方式”,但是它的功能更为强大。它可以实现对不同的目录、文件系统甚至是不同机器

6、上的文件直接访问,并且不需要重新分配磁盘空间。,13,硬链接,目录中每一对文件名和inode的对应关系称为一个硬链接。显然一个inode号可以出现在多个目录中,甚至可以在一个目录中多次出现,也就是说,一个文件可以有多个不同的名称 硬链接是一个指针,指向文件索引节点,系统并不为它重新分配inode。 硬链接节省空间,是Linux系统整合文件系统的传统方式 存在不足之处: 不可以在不同文件系统的文件间建立链接 只有超级用户才可以为目录创建硬链接。,14,软链接,软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。,15

7、,区别,硬链接原文件链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件链接文件拥有不同的inode号,表明他们是两个不同的文件; 在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系; 链接数目是不一样的,软链接的链接数目不会增加; 文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,而软链接显示的大小与原文件就不同了。,16,4. 设备文件,Linux把设备都当作文件来进行操作,这样就大大方便了用户的使用。在Linux中,与设备相关的文件一般都在/dev目录下,它包括两种,一种是块设备文件,另一种是字符设备文件。 块

8、设备文件是指数据的读写,它们是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如硬盘(/dev/hda1)等。字符设备主要是指串行端口等接口设备。,17,9.1.4 Linux 常见的文件系统,EXT2 Ext2是GNU/Linux系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。其单一文件大小及文件系统本身的容量上限与文件系统本身的簇大小有关,在一般常见的X86系统中,簇最大为4KB,则单一文件大小上限为2048GB,而文件系统的容量上限为16384GB。,18,9.1.4 Linux 常见的文件系统,Ext3 Ext3是E

9、xt2的下一代,也就是在保有目前Ext2的格式之下再加上日志功能。 日志文件系统(Journal File System) :它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。,19,9.1.4 Linux 常见的文件系统,swap Linux中有一种专门用于交换分区的swap文件系统,Linux使用整个分区来作为交换空间,而不像Windows使用交换文件。 一般这个SWAP格式的交换分区的容量大小是主内存的2倍。,20,9.1.5 VFS,虽然Linux内核是用C语言写的,但是其中借鉴了很多“面向对象”的思想 VFS层类似于面向对象理论中的“抽象基类”的概念,而下

10、面的一个个具体文件系统就相当于是这个抽象基类的“派生类”。 所有对文件的操作如open,write,read等在VFS中只是实现了一个类似于“纯虚函数”的接口,针对每种具体的文件系统,就会使用其派生类中被“改写”的“虚函数”。,21,9.1.5 VFS,这样一来就可以面向用户界面(系统调用)提供一个统一的编程接口。例如用户可以在不同的文件系统上创建文件,但所使用的函数或命令都是相同的。,22,第九章 Agenda,9.1 Linux 的文件系统结构概要 9.2 MTD 9.3 嵌入式Linux 专用的文件系统 9.4 如何构造根文件系统 9.5 Ramdisk,23,9.2 MTD,在Linu

11、x下,MTD(Memory Technology Device,存储技术设备)是用于访问存储设备(如ROM和Flash等)的系统。 MTD的主要目的是为了使新的存储设备的驱动更加简单,为此,它在硬件和上层间提供了一个统一的抽象接口,把文件系统和存储设备相隔离。,24,MTD驱动程序,MTD驱动程序是在Linux下专门为嵌入式环境应用而开发的一类驱动程序。 相对于常规的块设备驱动程序,使用MTD驱动程序的主要优点在于,它主要是专门针对各种非易失性存储器(以Flash为主)而设计的,所以它对Flash又更好的支持,管理和基于扇区的擦除,读写操作的接口。,25,9.3 嵌入式Linux 专用的文件系

12、统,9.3.1 JFFS/JFFS2 9.3.2 YAFFS/YAFFS2 9.3.3 Cramfs,26,背景知识:Flash,Flash和EEPROM都是常用的非易失性存储(即系统掉电以后,存储器中的数据仍然可以保存)技术。在使用上Flash和EEPROM最主要的区别是什么呢? 从容量上说,随着Flash技术的发展,Flash的容量远远超过EEPROM 最主要的区别还是在读写特性上。Flash在写入之前,必须要经过擦除(erase)操作,而且擦除只能以块(block)为单位,整块擦除,即使要修改一个字节的数据,也需要擦除整个块的内容;而EEPROM是可以逐字节修改的。,27,NOR和NAN

13、D,NOR(或非)和NAND(与非)是现在市场上2种主要的非易失闪存技术 Intel公司于1988年首先开发出NOR Flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。 1989年,Toshiba公司发表NAND Flash结构,强调降低每比特的成本,提供更高的性能,并且像磁盘一样可通过接口轻松升级,28,NOR和NAND,NOR的传输效率较高,在1-4MB的小容量时有明显的成本优势,但是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,可达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。,2

14、9,NOR和NAND比较,1. 性能比较 从软件角度来说,对Flash设备的写入速度,其实是写入和擦除的综合速度。NAND器件执行擦除操作是十分简单的,而NOR则要求再进行擦除前先将目标块内的所有位都写为0 由于擦除NOR器件时是以64-128KB的块进行的,执行一个块写入/擦除操作的典型时间大概为0.7s;与此相反,擦除NAND器件是以8-32KB的块进行的,执行相同的操作通常不会超过4ms。,30,NOR和NAND比较,2. 接口差别 NOR Flash的接口时序与SRAM一样,它与支持Host Bus的嵌入式处理器很容易连接。有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

15、NAND Flash使用地址和数据通用的I/O口,通过多次寻址存取数据。通常,其读和写操作采用512(或者2K)字节的页(page),这更类似于硬盘管理的操作,自然地,基于NAND的存储器就可以取代硬盘或其他块设备,但实际上还要考虑Flash均匀磨损的问题。,31,NOR和NAND比较,3. 容量和成本 NOR Flash常见的容量1-32MB,主要应用在代码存储介质中; 而NANDFlash通常应用在8-128MB的产品中,它更适合于数据存储。NAND在Compact Flash,Secure Digital,PC Cards和MMC存储卡市场上所占份额较大。,32,NOR和NAND比较,4

16、. 可靠性和耐用性 寿命:在NAND闪存中每个块的最大擦写次数是一百万次甚至千万次;而NOR的擦写次数是十万次数量级 位交换:所有Flash器件都受位交换现象的困扰。在某些情况下,一个比特位会发生反转。NAND发生的次数要比NOR多 ,需要使用错误探测/错误更正(EDC/ECC)算法 NAND器件中的坏块是随机分布的,所有NAND器件需要对介质进行初始化扫描,以发现坏块,并将坏块标记为不可用 可以非常直接地使用基于NOR的闪存,它像SRAM等存储器那样连接,并能在上面直接运行代码;而NAND因为有特殊的时序,访问起来要复杂一些,33,9.3.1 JFFS/JFFS2,2000年,Axis公司发

17、布了日志式Flash文件系统jffs 2001年初,Red Hat公司在此基础上推出了jffs2文件系统。 它们都是针对嵌入式系统中的Flash存储器进行设计的。,34,(1)JFFS存储格式,第一版本的jffs是一个日志结构的文件系统。在Flash的存储空间中,数据和辅助信息都依次存放于其中。 在该文件系统中,只有一种文件节点,它通过jffs_raw_inode这个结构进行描述。每个这样的节点都关联到某个文件上,其中包含了一个简单的头部,辅助信息以及存储的数据。 由于在jffs中,大的文件都分为很多节点存放,所以除了必须存放数据之外,还要额外保存这段数据在文件中的偏移量。,35,(2) JF

18、FS2:改进,jffs2的节点头部中增加了一些新的信息,包括CRC校验码和节点类型等。 由于jffs空间回收方式的缺陷,在jffs2中,所有的存储节点都不可以跨越Flash的块界限了。 jffs2不再像jffs中只有一种节点,现在有3种节点类型了,分别用于表示擦除块的标记,普通文件,目录。 文件系统的信息并不是像jffs中那样,全部保存在内存之中。可以很快取得的数据并不保存在内存之中,这样可以提高内存的利用率。 增加了对数据的压缩。 开始支持硬链接。,36,9.3.2 YAFFS/YAFFS2,虽然JFFS/JFFS2是针对Flash建立的文件系统,它可支持NOR和NAND Flash,但是把

19、它应用于NAND Flash还存在如下问题: JFFS需要通过建立在内存中的jffs_node结构体维护Flash中的日志节点,每个节点需要占用48个字节的内存空间。 JFFS/JFFS2在挂载时需要扫描整个Flash的内容,以找出所有的日志节点,建立文件结构,37,YAFFS,YAFFS(Yet Another Flash File System)是专门针对NAND Flash特点编写的日志文件系统。它克服了JFFS/JFFS2的缺点,具有如下特性: 很小的内存空间占用。 很短的挂载时间。 跨平台的文件系统。,38,YAFFS2,YAFFAS是效果很理想的NAND Flash上的文件系统 但

20、它不支持数据压缩,而且它仅对512字节页(后简称小页)大小的NAND Flash存储器。而很多大容量的NAND Flash(128MB以上),使用大小为2KB的页(后简称为大页),YAFFS并不能支持这种Flash。 YAFFS2是为此而开发出来的。YAFFS2实现对大页Flash的支持。同时,YAFFS2在内存空间占用,垃圾回收速度,读写速度等方面均有大幅度提升。,39,9.3.3 Cramfs,CRAMFS最初是Linus Torvalds 编写的一个文件系统,具有简单、压缩和只读等特点。是用于保存只读的根文件系统内容的一个很好的方案。 CRAMFS 主要的优点:是将文件数据以压缩形式存储

21、,在需要运行的时候进行解压缩。由于它存储的文件形式是压缩的格式,所以文件系统不能直接在 Flash 上运行。虽然这样可以节约很多Flash 存储空间,但是文件系统运行需要将大量的数据拷贝进RAM 中,造成一定的浪费。,40,9.4建立一个完整的文件系统,方法1:手动创建一个根文件系统 构建根文件系统的框架 为根文件系统安装链接库 为文件系统复制内核模块 设备文件 主要的系统应用程序,41,9.4 建立一个完整的文件系统,增强方法:手动创建一个根文件系统的基础上使用Busybox BusyBox是很多标准 Linux工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如cat和echo,还包含了一些更大、更复杂的工具 BusyBox 提出了这样一个思想:很多标准 Linux 工具都可以共享很多共同的元素 配置编译BusyBox的过程和配置和编译Linux内核的过程一样,42,9.5 Ramdisk,Ramdisk就是存在于内存中的块存储设备。 Ramdisk上可以使用任何Linux支持的磁盘文件系统。 Ramdisk上的内容将因系统的重新开机而丢失,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1