一、文件与文件系统
1.1 文件是什么
- 文件是对磁盘的抽象
- 所谓文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。
- 信息项:构成文件内容的基本单位(单个字节,或多个字节),各信息项之间具有顺序关系
- 文件内容的意义:由文件建立者和使用者解释
1.2 如何设计一个文件系统
这里先看文件管理的需求:
-
从用户角度
文件系统是如何呈现在用户面前:
* 一个文件的组织
- 如何命名
- 如何保护文件
- 可以实施的操作
-
从操作系统角度:怎样组织、管理文件
* 文件的描述、分类
- 文件目录的实现
- 存储空间的管理
- 文件的物理地址
- 磁盘实际运作方式(与设备管理的接口)
- 文件系统的性能
1.3 文件系统
-
操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用
-
文件系统要完成哪些任务
1、统一管理磁盘空间,实施磁盘空间的分配与回收
2、实现文件的按名存取:名字空间–映射–>磁盘空间
3、实现文件信息的共享,并提供文件的保护、保密手段
4、向用户提供一个方便使用、易于维护的接口,并向用户提供有关统计信息
5、提高文件系统的性能
6、提供与
IO
系统的统一接口
1.4 文件的分类
按文件性质和用途分类(UNIX
),一般分为普通文件、目录文件、特殊文件(设备文件)、管道文件、套接字
-
普通文件
即用户自己建立的文件,包含了用户的信息,一般为
ASCII
或二进制文件 -
目录文件
管理文件系统的系统文件
-
特殊文件
字符设备文件:和输入输出有关,用户模仿串行
I/O
设备,例如终端、打印机、网卡等。块设备文件:磁盘
1.5 文件的逻辑结构
- 无结构的流式文件
对文件内信息不再划分单位,它是依次的一串字符流构成的文件。 - 有结构的记录式文件
用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。
**说明:**这里是从用户角度看文件,由用户的访问方式确定,这里给出了三种逻辑结构,还可以组织成堆、顺序、索引、索引顺序、散列等结构。第一种是以字节为单位的流式结构,第二种是一种记录式文件结构,最后一种是树形结构。
1.6 典型的文件逻辑结构与文件存取
-
流式文件:构成文件的基本单位是字符
文件是有逻辑意义、无结构的一串字符的集合
-
记录式文件:文件由若干记录组成,可以按记录进行读写、查找等操作。每条记录有其内部结构
-
文件的逻辑结构与文件存取之间的关系
顺序存取(访问)
随机存取:提供读写位置(当前位置)。如
UNIX
的seek
操作。
1.7 文件的存储介质
1.7.1 存储介质与物理块
-
典型的存储介质
磁盘(包括固态盘
SSD
)、磁带、光盘、U
盘、… -
物理块(块
block
、簇cluster
)信息存储、传输、分配的独立单位
存储设备划分为大小相等的物理块,统一编号
1.7.2 典型的磁盘结构
1.7.3 磁盘访问
一次访问磁盘的请求:读写、磁盘地址(设备号、柱面号、磁头号、扇区号),内存地址(源/目)
完成过程由三个动作组成:
- 寻道(时间):磁头移动定位到指定磁道
- 旋转延迟(时间):等待指定扇区从磁头下旋转经过
- 数据传输(时间):数据在磁盘与内存之间的实际传输
1.7.4 磁盘空间管理
-
位图
用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为
0
,否则为1
。申请物理块时,可以在位示图中查找
1
的位,返回对应的物理块号归还时,将对应位转置
1
。 -
空闲块表
将所有空闲块记录在一个表中,即空闲块表
主要两项内容:起始块号,块数
-
空闲块链表
把所有空闲块链成一个表
扩展:成组链接法
磁盘地址与块号的转换
成组链接法设计思想
**说明:**左上角的是一个专用块,表示一些有用信息,而右边大括号中的都是空闲块。所有空闲块我们分成了若干组,典型的是100
块是一组,最后一个空闲组只有99
个空闲块。专用块中有20
个空闲块号,分别对应右边的空闲块组。每次要使用文件的时候,就从专用块中挑选空闲块,一般从801
开始分配。820
中的第一块实际上是记录了后面一块800
中空闲块的空闲块号和总的空块的数量,后面的以此类推。最后一个组中的0
则表示最后一组的标志。
成组链接法:分配算法
分配一个空闲块
查L
单元(空闲块数)
-
当
空闲块数 > 1 , i = L + 空闲块数
;从i单元得到一个空闲块号;
把该块分配给申请者;
空闲块数减1
-
当
空闲块数 = 1
, 取出L + 1
单元内容(一组的第一块号或0
);其
值 = 0
无空闲块,申请者等待其值不等于零,把该块内容复制到专用块
该块分配给申请者;
把专用块内容读到内存L
开始的区域。
成组链表法:回收算法
归还一块
查L
单元的空闲块数
-
当
空闲块数 < 100
空闲块数加一;j := L + 空闲块数
归还块号填入
j
单元 -
当
空闲块数 = 100
, 则把内存中登记的信息写入归还块中;把归还块号填入
L+ 1
单元;将
L
单元置成1
。
二、文件控制块和文件目录
2.1 文件属性
-
文件控制块(
File Control Block:FCB
)为管理文件而设置的数据结构,保存管理文件所需的所有有关信息(文件属性或元数据)
-
常用属性
文件名,文件号,文件大小,文件地址,创建时间,最后修改时间,最后访问时间,保护,口令,创建者,当前拥有者,文件类型,共享计数,各种标志(只读、隐藏、系统、归档、
ASCII
/二进制、顺序/随机访问、临时文件、锁) -
基本文件操作
2.2 文件目录、目录项与目录文件
-
文件目录
* 统一管理每个文件的元数据,以支持文件名到文件物理地址的转换
- 将所有文件的管理信息组织在一起,即构成文件目录
-
目录文件
将文件目录以文件的形式存放在磁盘上
-
目录项
* 构成文件目录的基本单元
- 目录项可以是
FCB
,目录是文件控制块的有序集合
- 目录项可以是
2.3 文件目录结构的演化
**说明:**最初是以一级目录结构,最后慢慢演化成了树形目录结构。
2.4 与目录相关的概念
-
路径名
绝对路径名:从根目录开始
相对路径:从当前目录开始
-
当前目录/工作目录
-
目录