操作系统&文件管理之FCB

操作系统的外存(主要指磁盘)管理模块根据各磁盘块的当前状态(磁盘管理程序可配置bitmap数据结构,用来统一表示各磁盘块忙闲情况)可分为两类,一是空闲磁盘块的调度管理,二是已占用了磁盘块的文件管理。本文便讨论已使用了外存存储设备的文件的索引和读取管理。

前面提到操作系统的磁盘管理为了和内存管理配合,也是将磁盘分割为最小单元进行统一调度,和内存的页帧概念对应,磁盘管理模块以磁盘块作为最小单元管理磁盘(常见的磁盘块为1KB,对应2个512B扇区,磁盘块是OS概念,磁盘驱动读取是以扇区作为最小单元)。

FCB (file control block)文件控制块

对于操作系统而言,当任何一个文件存储在本地后,会为了方便后续读取管理,而为每个文件建立专门的用以收集必要属性信息的数据结构,称为FCB(概念借鉴自进程管理模块中的PCB process control block)。将数据结构FCB中的信息收集如下。

这里写图片描述

Fig.1 FCB示意图

在UNIX系统中的FCB的具体实现如下

文件名扩展名属性保留时间首块号大小

文件逻辑结构

按照文件逻辑可分为结构文件(数据表格)和字符流式文件(源程序,dll程序,普通文档)。
对于结构文件,又存在定长记录文件(表格项数目和长度固定)和非定长记录文件(非结构性数据,如每条评论留言,长短不一,当然也可以粗暴地预留足够空间统一规格对待,但是空间利用效率会低)

文件物理结构

结构类型定义优点缺点其他
连续文件 文件顺序存放在外存的若干个连续物理块中 读取速度快,占用盘块可能处于相连甚至相同的磁道上,故而磁头移动距离较短。 该类占用的磁盘块需要连续成块分配,长期使用会导致较多的磁盘内部碎片,静态分配方式不利于文件长度的动态增删。 常用这种方式来存放频繁使用的程序文件,如boot程序、系统文件经常存放在序号较前的磁盘块连续序列中。
串联文件 该类文件使用的磁盘块不连续,盘块之间通过指针相连,行成串联的队列。 支持文件动态增删,磁盘利用率提高。 文件读取速度低下,磁盘块索引保存方式鲁棒性较差,一旦中间任一磁盘块的指针部分缺损,将导致整个文件无法读取。 指针若是直接埋在个磁盘块中,并没有集中二次处理成查询目录,则称之为隐式连接;若是这些指针统一放置在一张表中(Windows2000以前采用的FAT:file allocation table系统便是采用这种方式),则称为显式连接。每个表项对应一个物理块,存放的指针指向同一文件的逻辑上的下一物理块,这样该FAT表其实还间接地实现了此前提到的bitmap各磁盘块忙闲情况表示功能。当然对于现在的动辄1T的硬盘,其FAT表可不小,想要遍历一次FAT表可能得分批次读入FAT表,性能堪忧,所以现在Windows采用了更好的NTFS文件系统。
索引文件 为每个文件占用的磁盘块建立一张专属的索引表,即文件逻辑块号和物理磁盘块号的对照表。 即实现了磁盘块的动态分配,利于文件长度动态增减,因为索引表的引入故而速度介于连续文件和串联文件之间。系统需要为每个文件维护一张索引表,系统存在额外开销。索引表的size显然是和文件size的直接相关的,FBC中便保留了指向该索引表的指针,当然文件如果太大,还是需要多重索引来解决索引表过大的问题。如图2。


Fig.2 多重索引文件结构

  • 30
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
抱歉,我无法为您提供流程图。但是,我可以为您解释操作系统文件管理的一般流程。操作系统文件管理涉及以下基本步骤: 1. 创建文件:在操作系统中创建新文件时,需要指定文件名和存储位置。此过程通常由用户或应用程序触发。 2. 文件分配:操作系统负责将文件存储在物理存储介质上。它会分配适当的存储空间来保存文件数据,并记录文件的位置和大小。 3. 文件访问控制:操作系统会为每个文件设置访问权限,以控制哪些用户或应用程序可以读取、写入或执行该文件。 4. 文件打开和关闭:当用户或应用程序需要访问文件时,它们必须首先打开文件。打开文件会建立一个与该文件相关的文件控制块(FCB),用于跟踪文件的相关信息。在不再需要访问文件时,应关闭文件以释放资源。 5. 文件读写:一旦文件被打开,用户或应用程序可以执行读取和写入操作。读操作允许从文件中获取数据,而写操作允许向文件中写入数据。 6. 文件删除:当不再需要某个文件时,用户或应用程序可以删除该文件。删除文件会从文件系统中移除该文件的记录,并释放其占用的存储空间。 7. 文件恢复:操作系统通常提供一些机制来恢复被意外删除或损坏的文件。这可能包括回收站或备份系统。 以上是操作系统文件管理的一般流程,具体的实现方式可能因操作系统类型和版本而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值