初始文件管理
文件–一组有意义的信息/数据集合
文件如何存放在外存?
- 操作系统以“块”为单位为文件分配存储空间,因此即使一个文件大小只有10B,但它依然需要占用1KB的磁盘块。外存中的数据读入内存时同样以块为单位
- 外存分为磁盘块/物理块/块,内存分为内存块。
- 文件的逻辑地址:逻辑块号+块内地址
- 物理地址:物理块号+块内地址
无结构文件:文件内部的数据就是一系列二进制流和字符流组成。又称“流式文件”。如:.txt文件。
有结构文件:“记录式文件“,记录由数据项组成,一个数据项作为关键字(识别不同记录)。如:数据库表文件。记录:定长记录,可变长记录。
-
顺序文件:文件中的记录逻辑上顺序排列,物理上可以顺序存储或链式存储。
顺序存储:顺序表,逻辑物理都相邻 链式存储:链表 记录之间的顺序:串结构,顺序结构
顺序文件,只有顺序存储,定长记录可以快速找到关键字对应的记录。
- 索引文件
优点:索引表是一个定长记录,顺序存储的顺序文件,随机读取。索引号设为关键字,可以快速查找。
缺点:一个记录对应一个索引项,索引表可能过大。
- 索引顺序文件:
文件目录
FCB实现了文件和文件名的映射,使用户(程序)可以“按名存取”
FCB:文件控制块/文件目录项,包含了文件的基本信息(文件名,物理地址,逻辑结构等),存取控制权限,使用信息(文件的建立时间,修改时间),
树形目录结构不便于实现文件的共享,为此设计了“无环图目录结构”。
索引节点(FCB的改进)
fcb’=文件名+索引节点指针
使用索引结点机制,盘块存放的目录项更多,检索文件时磁盘块I/O的次数减少,大大提升了文件检索速度。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5dc216580174993bbec252c1d91d94d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAM-ePrVdTSg==,size_20,color_FFFFFF,t_70,g_se,x_16)
文件的物理结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/e14bbed72d044bec92d06c14902c3aaa.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAM-ePrVdTSg==,size_20,color_FFFFFF,t_70,g_se,x_16) 内存分页,磁盘分块
通常,磁盘块大小与内存块大小相同
内存与磁盘之间的数据交换(读/写操作,磁盘I/O)都是以块为单位进行的。
操作系统在磁盘中为文件分配空间以块为单位
连续分配:
- 优点:顺序读/写时速度快
- 缺点:扩展时不方便,磁盘利用率低,会产生难以利用的磁盘碎片。
可以用紧凑来处理碎片,但是会耗费很大的时间代价
连续分配:文件在磁盘上占有一组连续的块。
链接分配:
- 隐式链接:只支持顺序访问
- 显式链接:FAT表
索引分配:文件离散分配在各个磁盘块中,系统为每个文件建立索引表。索引表存放的磁盘块为索引块,文件数据存放的磁盘块程数据块。
索引分配:可随机访问,文件扩展容易实现
问:一个文件太大,一个磁盘块装不下文件的索引表,如何解决?
答:链接方案,多层索引,混合索引。
链接方案:
若采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块要经过K+1次
How | 目录项内容 | 优点 | 缺点 | |
---|---|---|---|---|
顺序分配 | 为文件分配的必须是连续的磁盘块 | 起始块号,文件长度 | 顺序访问速度快,支持随机访问 | 会产生碎片,不利于文件扩展 |
隐式链接 | 除最后一个磁盘块意之外,每个盘块中都存有指向下一个盘块的指针 | 起始块号,结束快后 | 解决碎片终于顺序赏文,用键扩展实现方标 | 只能顺序访问,不能直接访问 |
显示连接 | 建立一张文件分配表FAT),显示记录盘块的先后关系 | 起始块号 | 还可以查询内存中的的FAT实现随机访问 | FAT需要一定的存储空间 |
索引分配 | 为文件数据块建立索引表,若文件太大,可采用链连接,多层索引、混合索引 | 链接方案记录的是第一个索引块的块号,多层/混合索引记录的是顶级索引块的块号 | 支持随机访问,易于实现文件的扩展 | 索引表占用一定的存储空间。访问前索引块转移到内存中,查找索引块时可能要很多磁盘I/O操作 |
文件的存储空间管理
空闲表法适用于连续分配方式