嵌入式Linux C语言开发 教学课件 华清远见嵌入式学院 曾宏安 第5章 嵌入式Linux文件操作.pptVIP

嵌入式Linux C语言开发 教学课件 华清远见嵌入式学院 曾宏安 第5章 嵌入式Linux文件操作.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程目标 Linux中的文件系统 Linux中顺序文件操作的方法 Linux中随机文件操作的方法 Linux中文件共享、索引节点及文件层次结构的概念 Linux中标准输入输出的操作 Linux中非格式化输入输出的操作 Linux下文件相关的不带缓存I/O函数的使用 Linux下设备文件读写方法 Linux中对串口的操作 本章内容 5.1 Linux文件系统概述 5.2 Linux下的I/O操作 5.3 Linux下对文件和目录的操作 5.4 嵌入式Linux串口应用开发 本章小结 5.1 Linux文件系统概述 5.1.1 虚拟文件系统(VFS) 5.1.2 通用文件模型 5.1.3 Linux下的设备文件 5.1.1 虚拟文件系统(VFS) Linux的文件系统由两层结构组成。第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。 VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分。它位于用户程序和具体的文件系统之间,对用户程序提供了标准的文件系统调用接口。对具体的文件系统,它通过一系列对不同文件系统公用的函数指针来调用具体的文件系统函数,完成实际的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统实现上的细节和差异。 5.1.1 虚拟文件系统(VFS) VFS不仅可以对具体文件系统的数据结构进行抽象,以统一的方式进行管理,还可以接受用户层的系统调用,例如:write、open、stat、link等。此外,它还支持不同文件系统之间的相互访问,接受内核其他子系统的操作请求 。 vfs在Linux内核中的位置如图所示。 5.1.2 通用文件模型 VFS的主要目的在于引入了一个通用的文件模型(common file model),这个模型的核心是4个对象类型,即 超级块对象(superblock object) 索引节点对象(inode object) 文件对象(file object) 目录项对象(dentry object) 它们都是内核空间中的数据结构,是VFS的核心,不管各种文件系统的具体格式是什么样的,都要和VFS的通用文件模型相交互。 5.1.2 通用文件模型 5.1.2 通用文件模型 1.超级块对象 超级块对象是用来描述整个文件系统的信息。VFS超级块是由各种具体的文件系统在安装时建立的,只存在于内存中。 (1)超级块对象结构体 超级对象块由super_block结构体表示,定义在文件linux/fs.h中 超级块对象通过alloc_super()函数创建并初始化。在文件系统安装时,内核会调用该函数以便从磁盘读取文件系统超级块,并且将其信息填充到内存的超级块对象中 超级块对象结构体 5.1.2 通用文件模型 1.超级块对象 (2)超级块对象操作 超级块对象中有一个重要的域就是s_op,它指向超级块的操作函数表。超级块操作函数由super_operations结构体表示,定义在文件linux/fs.h中 。 超级块对象操作 5.1.2 通用文件模型 2.索引节点对象 (1)索引节点对象结构体 磁盘文件 设备文件 特殊节点 索引节点对象由inode结构体表示,定义在文件linux/fs.h中 。 每一个inode有一个索引节点号i_ino。在同一个文件系统中,每一个索引节点号是惟一的。 Inode中还有两个设备号i_dev和i_rdev,分别代表主设备号和从设备号 5.1.2 通用文件模型 2.索引节点对象 (2)索引节点对象操作 与超级块对象类似,所以节点对象中也有成员“i_op”用于指向索引节点的操作函数。索引节点操作是由inode_operations定义的,这里的函数指针由文件系统实现。这里包括读者常见的mkdir、rmdir、mknod等,如下所示: 索引节点对象操作 5.1.2 通用文件模型 3.目录项对象 在VFS中,目录也属于文件。路径中的每个组成部分都由一个索引节点对象表示。 VFS经常需要执行和目录相关的操作, VFS引入了目录项的概念。 每一个文件除了有一个索引节点对象外,还有一个目录项dentry结构。dentry结构描述的是逻辑意义上的文件,描述其逻辑意义上的属性,因此目录项对象在磁盘上并没有对应的映像。 目录项对象由dentry结构体表示,定义在文件linux/dcache.h中 。 dentry结构体 5.1.2 通用文件模型 4.文件对象 VFS中的文件对象用于表示进程已打开的文件。 (1)文件对象结构体 文件对象是由file结构体表示的,其定义在linux/fs.h中。 5.1.2 通

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档