个人学习笔记---文件系统的实现

一 .  文件系统的布局

1. 操作系统中对处理文件的部分叫文件系统


2. 文件系统放在磁盘上,多数磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。


3.  磁盘的0号扇区称为主引导记录(MBR),用来引导计算机。在MBR的结尾是分区表。该表给出了每个分区的起始地址和结束地址。表中一个分区被标记为活动分区。


4,.  在计算机被引导时,BIOS读入并执行MBR。MBR做的第一件事是确定活动分区,读入他的第一块,称为引导快,并执行之。引导快中的程序将装载改分区中操作系统。为了统一起见,每个分区都从一个启动块开始,即使他并不含有一个可启动的操作系统,不过,在将来这个分区或许会有一个操作系统。


5.  除了从引导块开始之外,磁盘分区的布局是随着文件系统的不同而变化的。文件系统经常包含如下一些项目:

(1)超级块:超级块包含文件系统的所有关键参数,在计算机关闭时,或者在该文件系统首次使用时,把超级块读入内存。超级块典型信息包含:确定文件系        统类型用的魔数,文件系统中数据块的数量以及其他重要的管理信息。

(2)文件系统中空闲块的信息,可以用位图或者指针列表的形式给出

(3)i节点,这是一个数据结构,每个文件一个,i节点说明了文件的方方面面。

(4)根目录:它存放着文件系统目录树的根部

(5)文件和目录:磁盘的其他部分存放着其他所有的目录和文件



二 .  文件的实现

1.  连续分配: 每个文件作为一连串连续的数据块存储在磁盘上


2.  链表分配:为每个文件构造磁盘块链表,每个块的第一字作为指向下一块的指针,块的其它部分存放数据,由于指针占去了一些字节,每个磁盘块存储的数据不再是2的整数幂。


3. 在内存中采用表的链表分配:取出每个磁盘块的指针字,放在内存的一个表中-》文件分配表,可以解决上面每个磁盘块存储的数据不再是2的整数幂的问题,但是文件分配表会占物理内存很大的一部分。


4.  i节点:每个文件赋予一个i节点,i节点的数据结构中列出了文件的属性和文件块的磁盘地址。i节点的一个问题,如果一个i节点只能存储数量的磁盘地址,那么一个文件所含有的磁盘块的数目超过了i节点所能容纳的数目怎么办?一个解决方案是最后一个磁盘地址不指向数据块,而是指向一个包含磁盘块地址的块的地址。



三 .  目录的实现

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。在对文件进行操作前,操作系统利用用户给出的路径名找到相应目录项。目录项中提供了查找文件磁盘块所需要的信息。这些信息可能是

(1)整个文件的磁盘地址 

(2)i节点号 

(3) 第一块的编号


Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件,
目录中的每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值