首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>嵌入式开发>正文

嵌入式Linux文件系统详细介绍

http://www.oklinux.cn  2007-09-19  赛迪网 kit  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

Linux支持多种文件系统,包括ext2ext3vfatntfsiso9660jffsromfsnfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。

  Linux下的文件系统结构如下:

  Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

  不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

  1. 基于FLASH的文件系统

  Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。

  闪存主要有NORNAND两种技术(简单比较见附录)Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。

  在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。

  顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。

  (1) jffs2

  JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。

  Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)

  主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。

  目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt

  jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。

共2页: 上一页 1 [2] 下一页

上一篇:用PHP执行Oracle存储过程示例   下一篇:Ubuntu系统英文Locale下使用中文输入法

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·嵌入式Linux系统软件开发学习思路介绍
·详细解析:如何制作嵌入式Linux文件系统
·嵌入应用:如何制作和使用Jffs2文件系统
·嵌入式系统开发:Arm与Linux的完美结合
·嵌入式Linux 的safe mode 设计与实现
·从Sony PLAYSTATION 3 构建Linux 实验设备
·详细定义嵌入式操作系统概念
·嵌入式Linux操作系统学习规划
·嵌入式Linux系统的设计与应用
· 2.6内核的Linux嵌入式系统应用
·用GNU工具开发基于ARM嵌入式系统的方法
·嵌入式Linux操作系统名词解释及资源大全
·Linux系统和嵌入式系统应用
·Linux嵌入式系统的内存管理方法详细介绍
·嵌入式Linux系统的驱动程序开发要点
·嵌入式系统开发学习如何起步、如何深入?
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·“中立人士”对嵌入式Linux的相关评论
·嵌入式技巧:ARM的三种中断调试方法介
·嵌入式:关于Linux下_init与_exit的解
·在嵌入式Linux系统中应用的GTK 和X分析
·使用虚拟机嵌入式Linux开发前的必要准
·用NFS服务开发ARM Linux程序的方法介绍
·虚拟机Linux系统下连接ARM开发板的方法
·嵌入式Linux系统下的网页浏览器 WebKit
·系统学习嵌入式Linux 几点非常实用的建
·嵌入式Linux攻略 ACE程序移植过程详细
·嵌入式基础 当今常用的开源协议详细解
·Linux攻略 嵌入式系统的开发流程概括介
  阅读排行
· 常见的嵌入式操作系统都有哪些?
·Linux攻略 嵌入式系统的开发流程概括介
·嵌入式Linux系统学习规划
·在嵌入式Linux系统中应用的GTK 和X分析
· 嵌入式linux下常见的文件系统
·系统学习嵌入式Linux 几点非常实用的建
· armlinux启动配置文件 /etc/init.d/rc
·嵌入式系统的开发流程概括介绍
·U-Boot的常用命令详解
·疯狂DIY! 在iPod上安装Linux系统
·嵌入式Linux系统下的网页浏览器 WebKit
·详述嵌入式系统下Microwindows的实现
·Linux嵌入式系统的内存管理方法详细介
·嵌入式Linux系统名词解释及资源大全
·嵌入式Linux系统软件开发学习思路详细
网摘收藏: