操作系统教程OS 孙忠秀

14、文件系统2(操作系统笔记)

2017-01-11  本文已影响140人  yjaal

一、文件系统实例(FAT)

1.1 Windows的FAT16文件系统

1.2 FAT文件系统:主引导记录(Main Boot Record,MBR)

1.3 FAT文件系统:分区引导扇区(Dos Boot Record,DBR)

3
说明:这里是以FAT32为例。

1.4 引导扇区(BIOS参数块)

4
说明:这里我们看BIOS参数块,也是以FAT32为例。

1.5 引导扇区(扩展BIOS参数块EBPB)

5

1.6 文件分配表FAT

1.7 FAT16目录项

7
说明:在前面讲过,UNIX系统中i节点加上目录项就是FCB,而在FAT文件系统中FCB就等于目录项。32个字节没有用完,没用完的保留。

1.8 FAT32文件系统

1.9 FAT32目录项

9
说明:这是一个基本的目录项。

1.10 一般长文件名的实现方式

10
说明:左边的实现是目录项的长度不固定。第一个字段给出目录项的长度,然后把固定长度的属性记录在其后,再才是文件名,因为文件名的长度是不一样的,留出足够的空间给文件名。缺点就是一个文件删除时,就留出了一块空间,而这个空间可能不能放下其他文件,这样就会产生碎片。右边的实现是由于文件名的长度不固定,所以我们希望每个目录项的大小是固定的,其中包含了一个指向文件名起始地址的指针,然后是文件的相关属性,所有的文件名都存放在另一个区域(堆)。

1.11 FAT32中长文件名目录项格式

11
说明:其中有三处地方分别记录了文件名。前5个字符(采用的是Unicode编码,则两个字节代表一个字符)保存文件名的前5个字符,于是一共可以保存13个字符。如果一个长文件名目录项不够,则需要用第二个。在第一个字段中第6位来记录是否是最后一个目录项。下面看一个例子,文件名为The quick brown.fox,采用Unicode编码。
12
说明:其实这样一个文件占用了三个目录项。第一个目录项就是短文件名目录项,后面的两个目录项主要保存文件名。再看一个更长的文件名文件例子:
13
说明:这里的文件名更长,需要占用五个目录项。

二、文件操作的实现

这里主要是以UNIX操作系统为例。

2.1 文件操作的实现

2.2 文件操作:建立文件

create(文件名,访问权限)

2.3 文件操作:打开文件

为文件读写做准备:给出文件路径名,获得文件句柄(file handler)或文件描述符(file descripter),需将该文件的目录项读到内存fd = open(文件路径名,打开方式)

2.4 文件操作:指针定位

seekfd, 新指针位置):系统为每个进程打开的每个文件维护一个读写指针,即相对于文件开头的偏移地址(读写指针指向每次文件读写的开始位置 ,在每次读写完成后,读写指针按照读写的数据量自动后移相应的数值)

2.5 文件操作:读文件

read(文件描述符,读指针,要读的长度,内存目的地址)

三、文件系统的管理

3.1 文件系统的可靠性

可靠性:抵御和预防各种物理性破坏和人为性破坏的能力

3.2 文件系统备份

3.3 文件系统一致性

3.4 磁盘块的一致性检查

14
说明::一致性检查时,检查所有的文件和空闲块,检查完之后可能会出现四种结果。第一种是一个一致性的结果,即某个磁盘块要么分配给了某个文件,要么在空闲块中。第二种结果是在空闲块中找不到,但是也没有分配给某个文件,于是我们通过在空闲块表中将磁块标记为一来解决。第三种结果是某个磁盘块在空闲块表中出现了两次,同样是不合理的,对这一位进行修改。最后一种结果是在两个文件中出现,这种情况较为复杂,我们应该在空闲块中找一个,然后将其中一个磁盘块内容拷贝到这个空闲块中,然后将使用块表中的这一位减一。

3.5 文件系统的写入策略

对某些文件做出了修改,那么什么时候将修改后的内容写入到文件中。这里需要考虑文件系统一致性和速度。下面有几种写入策略

上一篇 下一篇

猜你喜欢

热点阅读