文件系统
数据组织形式
① 数据项:多个基本数据项可拼成一个组合数据项。
② 记录:一组相关数据项的集合形成一条记录。
③ 文件:记录式文件由一组相似的记录组成,流式文件是字符流。
文件存储空间的划分与初始化
一个物理盘可以划分为多个逻辑卷。一个逻辑卷也可以由多个物理盘构成。
逻辑卷上可以创建文件系统,但是一个逻辑卷只能创建一个文件系统。
该逻辑卷(文件系统)分为两大区:目录区和文件区。
超级块存放文件系统块数,块大小,空闲块已用块的数量和指针,空闲FCB的数量和指针等信息。
文件目录
文件目录由文件项构成,每一个最底层的文件项其实就是FCB。
FCB主要包含以下信息:
① 基本信息:文件名、文件的物理位置、文件的逻辑结构(文件内部逻辑结构)、文件的物理结构(连续分配、链接分配[隐式链接,显式链接FAT]、索引分配)等。
② 存取控制信息:文件存取权限等。
③ 使用信息:文件建立时间、修改时间等。
在Unix中文件项为文件名+inode号。因此Unix的目录区中有一个inode表。
目录项可以只有文件名,这时可以通过hash函数计算出其他信息的外存地址。
当用户读取一个文件时
用户所有打开的文件都会被维护在内存的系统打开文件表中。系统打开文件表包括每个打开文件FCB的复制和其他信息。在Unix中,这个文件表包括每个打开文件的文件偏移量,状态标志,打开数count和inode指针等信息。(打开数count是用于一个进程和与它相关的进程之间的,因为它们共用一个文件偏移量。如果是完全不相关的进程,需要在文件表中重新创建一项,但是inode指针指向同一个inode表示是同一个文件。
同时内存中进程的PCB中还有一个进程级的打开文件表,可称为文件描述符表,包括文件描述符(Windows中称为句柄,类似于指针的指针,可以看成房产中介hhh),指向系统打开表中的一个相应条目。
当用户要读取一个文件时,首先在系统打开文件表中查找是否有这一项。若没有,则把外存中的部分文件目录读入内存进行查找,按名找到这一项后,将找到的inode从外存读入内存,在系统打开文件表中添加新项,然后再根据该inode将文件数据从外存读入内存。
文件系统层次结构
① 用户调用接口
② 文件目录系统
③ 存取控制验证模块
④ 逻辑文件系统与文件信息缓冲区
我要读文件中以逻辑结构表示的某一个数据,那我要根据数据存放的逻辑形式知道在物理结构中放在哪个盘块上。
⑤ 物理文件系统
我知道了放在哪个盘块上,我要知道数据实际的的物理地址。
⑥ 辅助分配模块
管理外存用的。
⑦ 设备管理程序模块

浙公网安备 33010602011771号