《现代操作系统》第4章 文件系统

1.  文件是进程创建的信息逻辑单元

操作系统中处理文件的部分称为文件系统。

所有系统都允许用1到8个字母组成的字符串作为合法的文件名。

2.  文件结构

字节序列,记录序列、树

3.  文件类型

普通文件和目录

普通文件:ASCII文件(可打印,编辑)和二进制文件。

UNIX还有字符特殊文件(用于串行的I/O类设备文件)和块特殊文件(用于磁盘类设备)。

4.  文件存取

顺序存取和随机存取

5.  文件属性

6.  文件操作

Create,Delete,Open,Close,Read,Write,Append,Seek,Get attributes,Set Attributes,Rename

7.  目录

一级目录系统和层次目录系统

路径名:绝对路径名和相对路径名

目录操作:Create,Delete,Opendir,Closedir,Readdir,Rename,Link,Unlink

8.  文件系统的实现
文件系统的布局

  • 盘分区,每分区中一独立的文件系统。MBR( Master Boot Record主引导记录) ,
  • 启动时,BIOS读入并执行MBR。MBR确定活动分区,读入它的第一块(引导块\boot block),并执行之。引导块中的程序将装入该分区中的操作系统。
  • Super block(超级块)包含文件系统的所有关键参数(确定文件系统类型用的魔数、文件系统中数据块的数量及其他重要的管理信息等),在计算机启动时、或在该文件系统首次使用时,将超级块读入内存。
  •  i-nodes  (i节点)----数组。

文件存储

1) 连续分配

特点:实现简单,读性能较好;但随时间流失,磁盘会变得零碎.

适应于CD-ROM,DVD以及其他一次性写光学介质

2) 链表分配

没有碎片,顺序读取方便,但随机读取缓慢,每个磁盘块大小不再是2的整数次幂(因指针占一些字节)

3) 在内存中采用表的链表分配:文件分配表FAT

可随机存取,但表占内存空间大。FAT方案对于大磁盘不太合适。

4) i节点

给每个文件赋予一个i节点(n字节),其中列出文件属性和文件块的磁盘地址

对开文件时,其i节点才在内存,最多打开k个文件,则内存最多需要kn个字节

但文件大小超出i节点能容纳的数目时,最后的盘块采用指针块地址

9.  目录的实现

目录系统的主要功能是将ASCII文件名映射成定位文件数据所需的信息

何处存放文件属性?

a) 文件属性直接存放在目录项中

目录中有固定大小的目录项,每个文件对应一项,其中包含文件名(定长)、属性结构和磁盘地址。

b) 对i节点系统,把文件属性存放在i节点中,目录项只有文件名和i节点号。

变长文件名如何存储?

a) 在行中:文件名放在固定部分后,目录项长度不固定,移走文件后,会引入长度可变的空隙。

b) 在堆中:目录项都有固定长度,文件名放置在目录后面的堆中。

散列表:优点:查找非常迅速,缺点:需要复杂的管理。

10. 共享文件

文件系统本身是一个有向无环图,而不是一棵树。

共享的两种方式

1) 磁盘块列入i节点,而不列入目录

2) 建立一个类型为LINK的新文件,连接到共享的文件,新文件中只包含连接的文件的路径名。(符号连接)

11. 日志结构的文件系统(LFS)

基本思想:是将整个磁盘结构化为一个日志。

i节点分散在整个日志中,而不是放在磁盘的某个固定位置,建立i节点图。

所有的写操作最初都被缓存在内存中,然后周期性地把所有以缓存的写作为一个单独的段,在日志的末尾写入磁盘。

设立一个“清理线程”周期地扫描日志进行磁盘压缩。

12. 日志文件系统(JFS)

基本思想:保存一个用于记录系统下一步将要做什么的日志,当系统在完成即将完成的任务前崩溃时,重新启动后,可以查看日志会的崩溃前计划完成的任务。如微软的NTFS和Linux的ext3和ReiserFS。

被写入日志的操作必须是幂等的(可重复执行多次)

13. 虚拟文件系统(VFS)

绝大多数UNIX操作系统都是用VFS将多种FS统一成一个有序的框架。即抽象所有FS都共有的部分,且将该部分代码放在单独的一层,该层调用底层的实际文件系统来具体管理数据。

14. 文件系统管理和优化
1.  磁盘空间管理

存储n个字节的文件

a)    分配n个字节的连续磁盘空间

b)   把文件分成很多个连续(或并不一定连续)的块

几乎所有的文件系统都把文件分割成固定大小的块来存储,各块之间不一定相邻。

2.  记录空闲块:

a)    空闲表

b)   位图:n个块磁盘需要n位位图

空闲表特殊情况下产生不必要的磁盘I/O,书中写的比较清楚

解决方法:拆分满了的指针块。保持磁盘上的大多数指针块为满的状态(减少磁盘的使用),但在内存中留一个半满的指针。

3.  磁盘配额

系统管理员分给每个用户拥有文件和块的最大数量,操作系统确保每个用户不超过分给他们的配额。

4.  文件系统备份

转储磁盘到磁带上有两种方案:

物理转储(从磁盘的第0块开始,全部按序输出到磁带上)简单快速,不能跳过指定的目录,无法增量转储,不能满足恢复个人文件的请求。

逻辑转储(从一个或几个指定的目录开始,递归地转储其自给定基准日期后所更改的全部文件和目录)。

5.  文件系统的一致性

文件系统的状态:一致、块丢失、空闲表中有重复块、重复数据块

6.  改善文件系统性能

1) 高速缓存(块高速缓存)

2) 块提前读

3) 减少磁盘臂运动

7.  磁盘碎片整理

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章