[OS][FileSystem]文件系统的实现

http://www.cnblogs.com/xuczhang/archive/2010/06/11/1756105.html

在这篇文章中,我主要会描述一些有关文件系统的基本概念和一些通用的思想,这里的思想主要源自于《现代操作系统》一书。

文件系统作用是什么?文件系统是用来管理一些如磁盘这样的存储设备的。就是说,怎样通过合理的管理在更好的使用磁盘。

下面介绍几种文件实现的

 

image

 

 

image

 

 

image

 

I-node File System Layout

1

整个磁盘可以分为MBR,Partition table和Disk partition三个部分组成。MBR(Master Boot Record)是用来引导计算机的。Partition table是记录每个disk partition的起始和结束位置。其中有一个disk partition是活动分区(marked as active)。当计算机启动时,BIOS读入并执行MBR。由MBR确定哪个分区是活动分区,并读入其第一个block(即boot block),并且执行。在boot block中的程序会装载该分区中的操作系统。除了boot block,一个Disk Partition还包括:

1. Super block

超级块包含文件系统的所有的关键参数,比如:a magic number to identify the file system type, the number of blocks in the file system, and other key administrative information

2. Free space management

这里会记录在磁盘中哪些block是使用过的,哪些是空闲的。这里主要有两种不同的实现:

1

第一种是如图(a)的磁盘块链表,在这个链表中记录空闲的磁盘块。使用这种空闲表的方法,only one block of pointers need be kept in main memory。当文件创建时,所需要的块从block中取出,现有的指针块用完时,从磁盘中读入一个新的block。当文件删除时,其block被释放,并添加到空闲表中去。当一个空闲表块写满时就写入磁盘。当然这种方法有时会增加不必要的I/O,也有其相应的解决办法,具体可以参考”Modern Operating System” 6.3.5

第二种是位图方法,如(b)所示。每一个block用一个bit位来表示其是否被使用。这样做的一个优点是其占用的空间比较小。在ext2/ext3文件系统中都是采取这种方式。

3. I-nodes

I-node是用来表示一个文件的,其中记录了文件的各个信息(不过文件名是记录在directory中而不是inode中),主要包括文件的大小,拥有者,修改时间,该文件对应的disk block。在下图中我们可以看到存储disk blocks的方式,先存前10个block,如果不够的话,就是要single,double,triple indirect的方式去扩展。

image

4. Root dir

Root dir记录在这个分区中的根目录的信息,这个位在ext3中不采用,原因是ext3将一个分区分为了一个个group。

5. Files and directories

记录具体的文件和目录。

 

当调用read(fd,buffer,nBytes)时究竟发生了什么?应该将打开文件的信息放在哪里(文件读取的位置信息)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值