- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux操作系统下的NTFS.doc
一、文件系统
在操作系统中,文件系统用来组织、管理计算机中的所有文件,对文件存储器空间进行组织和分配文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等
不同类型的操作系统可能使用不同类型的文件系统,比如DOS系统使用的是FAT12或者FAT16文件系统、Windows 2000/XP使用的是FAT32文件系统,Windows NT使用的是NTFS文件系统。通常情况下,不同类型的操作系统由于实现方法的不同,它们的文件系统之间一般不能相互访问。
二、Linux文件系统
在Linux中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的一个重要特征就是支持多种不同类型的逻辑文件系统。如Minix、CramFS、Ext2、Ext3、RamFS、RomFS、NFS、FAT12、FAT16、FAT32、NTFS、SysV、ReiserFS等。几乎所有的逻辑文件系统都可以运行在Linux下使用。
Linux之所以能够支持多种不同的逻辑文件系统类型,是因为它采用了虚拟文件系统(VFS)机制。VFS作为各种逻辑文件系统与操作系统其他模块的接口,将不同逻辑文件系统的的实现细节隐藏起来,从而对操作系统的其他模块和应用程序而言,所有的逻辑文件系统都是一样的。VFS之所以能衔接各种不同类型的逻辑文件系统,是因为它定义了各种逻辑文件系统都支持的基本抽象接口和数据结构,同时各种逻辑文件系统也将自己的诸如“文件如何打开”“目录如何定义”等概念在形式上与VFS的定义保持一致。
三、虚拟文件系统VFS
虚拟文件系统(VFS)是Linux内核的一个子系统,提供了一个通用文件系统模型,该通用模型概括了各种文件系统的一般特性和行为,并为内核其他子系统和应用程序提供一致性的文件系统接口。
虚拟文件系统(VFS)位于文件系统的最上层,管理各种逻辑文件系统,并屏蔽它们之间的差异。就用户使用角度而言,完全觉察不到各种逻辑文件系统的差异,进而可以使用同样的命令或操作来管理不同逻辑文件系统下的文件。
同时,虚拟文件系统采用内存节点缓冲区、内存目录项缓冲区、数据块缓冲区等方法,减少对外部设备频繁的I/O操作,从而提高系统性能。
图3-1演示了Linux文件系统的层次结构。
图3-1 Linux文件系统的层次模型
虚拟文件系统VFS模型由下列4个对象类型组成。
1)超级块(super_block)对象:存放已安装文件系统的有关信息。对于基于磁盘文件的文件系统,这类对象通常对应于存放在磁盘上的文件系统控制块。每一个逻辑文件系统都对应一个超级块对象。
2)索引节点(inode)对象:存放关于具体文件的一般信息。对基于磁盘的文件系统,这类对象通常对应于存放在磁盘上的文件控制块。每个索引节点对象都有一个索引节点号,这个索引节点号唯一地标识文件系统中的文件。在逻辑文件系统中,每一个文件都对应一个inode对象。
3)目录项(dentry)对象:存放目录项(也就是文件的特定名称)与对应文件进行链接的各种信息。每个磁盘文件系统都以自己特有的方式将该类信息存在磁盘上。
4)文件(file)对象:代表进程已打开的一个文件。存放已打开的文件与进程之间进行交互的信息,这些信息仅当进程访问文件期间才存于主存中。文件对象在执行系统调用open()时创建,在执行系统调用close()时撤销。
每一个对象都包含一个operation对象,它描述了内核针对各对象可以使用的方法,这些operation对象分别是super_operation对象、inode_operation对象、dentry_operation对象、file_operation对象。
1.超级块对象
当内核对一个逻辑文件系统进行初始化和注册时,调用文件系统提供的函数为其分配一个VFS超级块,并从磁盘文件读取逻辑文件系统超级块中的信息填充进来。也就是说,VFS超级块是各个逻辑文件系统安装时才建立的,并在这些逻辑文件系统卸载时被自动删除,可见VFS超级块仅存在于主存中。VFS超级块的数据结构如下。
struct super_block{
struct list_head s_list; //指向超级块链表的指针
kdev_t s_dev; //文件系统所在设备的标识符
unsigned long s_blocksize; //以字节为单位的盘块大小
unsigned long s_old_blocksizes //基本块设备驱动程序中提到的以字节为单位的块大小
unsigned char s_blocksize_bits; //以2的幂次表示的盘块的大
文档评论(0)