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. 磁盘碎片整理