操作系统笔记------文件管理
文件
文件是指由创建者所定义的、具有文件名的若干相关元素的集合。
分类:有结构文件(由若干记录构成的文件),无结构(流式)文件(由字节/字符组成的文件)。
文件属性:文件类型、长度、物理位置、建立时间等。
文件的数据
记录
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
关键字:记录的唯一标志,由单个或组合数据项形成。
分类:定长记录(记录长度固定),变长记录(记录长度不定)
数据项
数据项是有结构文件的基本单位,是数据组织中可以命名的最小逻辑单位。也称字段。每个数据项包括:名称、数据类型、数据宽度。
分类:基本数据项(单个数据项),组合数据项(若干个数据项集)。
文件类型
用途分类:系统文件,用户文件,库文件。
文件中数据形式分类:源文件,目标文件,可执行文件
存取控制属性:只执行文件、只读文件、读写文件
文件系统
文件系统是操作系统中负责管理和存取文件信息的软件机构,它是由管理文件所需的数据结构和相应的管理软件以及访问文件的一组操作组成。
比如:NTFS, FAT32, HPFS, ext2, CDFS,ZFS,HFS
文件系统模型(三层结构):文件系统接口,对对象操纵和管理的软件集合,对象及其属性。
文件系统操作
打开文件:核心工作是,在内存设置对文操作的相关数据结构,并将文件基本信息复制到内存。
关闭文件:核心工作是,删除在内存设置的文件数据结构,并将必要的文件修改信息刷新到磁盘。
虚拟技术
逻辑文件:从用户观点出发看到的文件。其结构为文件的逻辑结构,是用户可以直接处理的数据及其结构,独立于文件的物理特性,又称文件组织。
物理文件:从系统角度出发看到的文件。其结构为文件的存储结构/物理结构,是指文件在外存上的存储组织形式,与存储介质的存储性能、外存分配形式密切相关。
逻辑结构
顺序文件(有结构文件)
顺序文件中的记录,按照一定的顺序存储和组织,如时间顺序、关键字顺序等。通常按顺序方式进行文件的读写。
读写操作(基于读写指针):设置读、写指针指向下一条要读、写记录的起始字节位置。读、写指针在读、写文件的过程中自动变化(由系统负责更新,对程序员透明)。
打开文件时候: 读写指针分别指向文件中首字节位置(为0) 。
后续读写文件时:读写指针(定长记录和变长记录文件)变化方式
Wptr := Wptr + Li; Rptr := Rptr + Li;// Li为记录i长度(变长记录)
Wptr := Wptr + L ; Rptr := Rptr + L ;// L为记录长度(定长记录)
批量顺序存取,效率非常高。
查找或修改单条记录困难(记录变长)。
插入删除记录,困难(记录变长,或须保序) 。
索引文件
定长记录的顺序文件,根据记录号可直接存取,其地址为:
Ai = i * L ; // L为记录长度,i为记录号。
但根据记录的关键字或对于变长记录文件,无法直接存取。
在顺序文件基础上,增加索引表,其中存放每条记录的关键字(或记录号)与其文件位置的对应关系。
索引表本身为定长记录结构,支持折半查找。
读写操作:首先根据索引表,由关键字(记录号)找到记录在文件位置,然后调整读写指针,再进行记录读写。可折半查找。
支持记录直接存取;但索引表须占用额外存储空间,尤其当记录数量很大时。
索引顺序文件
为降低索引表的存储开销,为一组记录在索引表中建立一个索引项,而非每条记录一条索引项。
分组方式:按关键字分组,或直接按记录号分组。
读写操作:首先根据索引表,由关键字(记录号)找到记录所在组的文件起始位置,然后调整读写指针,再顺序读写记录,直到找到所要读写的记录。
整合了顺序文件与索引文件的特点。支持记录直接存取;大大降低索引表的存储空间和I/O、计算开销。
直接文件(散列文件)
直接根据记录的关键字(记录号),经简单计算,得到记录在文件的位置。
读写操作:首先根据HASH函数,由关键字(记录号)计算记录在文件起始位置,然后调整读写指针,再读写。
支持记录直接存取;摆脱索引表,存储空间和I/O、计算开销大幅降低。但是会引起冲突,即不同关键字的散列函数值相同。
物理结构
连续分配
要求为每个文件分配一组**相邻接(连续的)**的磁盘块,且文件的逻辑记录的顺序与所存储磁盘块的块号顺序一致。所形成的文件结构称顺序文件结构,物理文件称为顺序文件。