操作系统-10——文件管理
文件和文件系统
1.文件(File)
1.1 定义:存储在外存上具有标识名的一组相关字符流或记录的集合。可长期保存和共享。
1.2 分类:记录式文件、流式文件。(按文件结构划分)
#记录式文件:数据有4个结构层次:域(字段)、记录、文件、数据库。
##磁盘I/O时需将多条记录组装成块才能I/O。以下是三种记录组块的方法。
###固定组块:记录长度固定,若干完整的记录放在一块,块后部可能会有内碎片。
###可变长度跨域式组块:记录长度可变,尽可能占满一块。有些记录可能跨越两块,则用指针链接。
###可变长度非跨越式组块:记录长度可变,但不跨快,有块内碎片。一个记录的长度不能超过块尺寸。
#流式文件:UNIX将所有文件都看做由字节流组成,如源程序。目标代码等。
2.文件系统(File System)
2.1 定义:OS(操作系统)中负责存储,管理和操作文件的一组系统实用程序及所需的数据结构。
2.2 功能:
(用户角度)
#创建、删除、打开、关闭、读、写文件和目录;
#维护文件属性:文件名,所有者、创建/修改时间、访问权限,长度,外存地址等。
#文件的透明存取(按名存取)、共享与保护。
(操作系统角度)
#目录管理,访问(权限)控制,访问方法,文件操作函数,记录组块,文件分配,磁盘管理和调度。
3.目录
#每个文件都有一个目录项(文件控制块FCB)用以保存它的属性。
#每个目录本身也是一个文件。目录文件是占据整数个磁盘块的记录式文件,内容是该目录下所有文件目录项的集合。
(PS:即目录本身是一个文件,必须占据整数个磁盘块空间并且本身是记录式文件。目录存储的内容是什么呢?存储的是该目录下所有文件的目录项的集合,即目录存储的是目录项集合。)
#每一个目录至少包含了当前目录,父目录两项。
#结构:树形目录。文件由文件路径名和文件名标识。
4.访问权限
#访问权限层次:无权限,知道文件存在,执行,读,在文件尾追加数据,写,更改其他用户的访问权限,删除文件。
(每一项权限都隐含了前面的权限,即高权限包括了低权限。)
!#用户删除文件时,OS不可能删除此文件所在的目录,但可删除与此文件关联的目录项,文件控制块,内存缓冲区。
!#文件首次被打开时,OS会变文件控制块读到内存中。
5.文件分配
3种文件分配方法:连续分配,链接分配,索引分配。
#连续分配
##为文件分配一组相邻的盘块。(可用FF,BF,WF 分配方法。详情可见 “操作系统——内存分配”)
##文件属性简单:起始块号,块数。
##顺序访问和随机访问方便:寻道少,I/O快。(优点)
##磁盘外碎片多,需紧缩;文件不能动态增长。(缺点)
!!#增加或删除块需要将所有后续块向后移或向前移(先读到内存在再写回磁盘)。
#链接分配
##每个磁盘块都有一个链接指针,将该文件的多个离散磁盘块链接成一个链表。
##动态分配:没有外碎片(优点);寻道多,I/O慢(缺点)。
!!#FCB中有<起始块号>,下一块的块号存放在本次盘块的末端。增加或删除块需要将所有前续块读到内存,读取或修改一个块的块号。
#索引分配
##把所有磁盘块的地址集中到索引块中。
##没有外碎片;随机访问。(优点)
##增加了索引块的开销。(缺点)
##基于单块盘块进行索引分配
##基于长度可变的(磁盘块)分区进行索引分配
同样一个索引块的开销,可为文件分配更多的磁盘块。
6.磁盘空闲空间管理
#管理方法:位图,空闲区链,索引表,空闲块列表。
6.1.位图(bitmap)
# 1bit => 1块的状态 0:空闲,1:已分配
分配磁盘块时:磁盘块号 i = 字号*字长+位号
回收i号磁盘块时:字号 = INT (i/字长),位号 = i mod 字长。
6.2空闲区链
#将所有空闲盘块区形成一个链表。
6.3索引表
#将所有空闲盘块区的“首块号+块数”放在一个索引表中。
6.4空闲块列表
#将所有空闲盘块数放在磁盘一个保留区里。此表可部分复制到内存,可排序以实现连续分配。