杭杭州紫金港培训学校(紫金港专升本)
在职研究生计算机学科专业基础考前辅导第三章 操作系统第 26 节 / 共 32 节约 35 分钟报名学员看全文

文件管理与 I/O 管理

文件部分学 inode、三种物理结构与混合索引计算、硬链接与软链接、文件系统布局与空闲空间管理;I/O 部分学 I/O 软件层次、单双缓冲的时间计算、SPOOLing 与磁盘调度算法。

本节考点:文件的物理结构目录与链接外存空闲空间管理I/O软件层次结构缓冲与SPOOLing磁盘调度

本节导读

大纲的「文件管理」包括文件(基本概念、文件元数据和索引节点 inode、文件的操作、文件的保护、逻辑结构、物理结构)、目录(树形目录、目录的操作、硬链接和软链接)、文件系统(全局结构、外存空闲空间管理办法、虚拟文件系统、文件系统挂载);「输入输出(I/O)管理」包括 I/O 管理基础、设备独立软件(缓冲区管理、设备分配与回收、SPOOLing、设备驱动程序接口)和外存管理(磁盘、固态硬盘)。

内容多而散,计算集中在四处:混合索引的文件大小与读盘次数、位示图换算、单双缓冲的时间、磁盘调度的移动距离。磁盘的结构与存取时间见第 14 节,中断与 DMA 方式见第 19 节。

文件与目录

文件控制块(FCB)记录文件的属性;UNIX 类系统把除文件名以外的属性放在索引节点 inode 里,目录项只剩「文件名 + inode 号」,目录变小,查找时读盘次数也就少了。打开文件(open)时,系统按路径逐级查目录,找到 inode 读入内存,在打开文件表里建立表项并返回文件描述符,之后的读写直接用描述符,不再查目录;关闭(close)时撤销表项。

文件和目录的操作:建立文件时,系统为它分配一个空闲的 inode(FCB),并在所在目录里添一个目录项,数据块可以等写入时再分配;删除文件时,先按路径找到并删去它的目录项,把 inode 的链接计数减 1,减到 0 且没有进程打开它时,才回收 inode 和全部数据块。读、写文件时,用 open 返回的文件描述符找到打开文件表项,取得 inode 和读写指针,把读写位置换算成逻辑块号,再按文件的物理结构找到磁盘块。目录本身也是一种文件,对目录的操作主要有:按文件名逐级搜索目录项、在目录中创建或删除目录项、列出目录内容、给文件改名,以及改变当前目录。

文件的逻辑结构是用户看到的组织形式(无结构的流式文件、由记录组成的记录式文件,如顺序、索引、索引顺序文件);物理结构是文件在外存上的存放方式。文件保护常用访问控制表、口令或加密。

树形目录中,从根目录出发的路径是绝对路径,从当前目录出发的是相对路径。文件共享有两种链接:

比较项硬链接软链接(符号链接)
实现新目录项直接指向同一个 inode,inode 的链接计数加 1建一个新文件,内容是被链接文件的路径
删除原文件名计数减 1,不为 0 时文件还在,仍可通过硬链接访问路径失效,软链接无法访问
限制一般不能跨文件系统、不能链接目录可以跨文件系统

文件的物理结构

方式做法优缺点
连续分配文件占用一组相邻的块,目录项记起始块号和长度顺序和随机访问都快;有外部碎片,文件不易增长
隐式链接每块末尾存放下一块的指针没有外部碎片;只能顺序访问,读第 i 块要先读它前面的所有块
显式链接(FAT)把各块的指针集中存放在文件分配表 FAT 中,FAT 常驻内存查 FAT 不用读盘,可以较快地随机访问;FAT 要占内存
索引分配每个文件有索引块,按逻辑块号记录物理块号支持随机访问;索引块占空间,大文件要多级索引

混合索引(inode 采用):若干个直接地址项直接指向数据块,再加一级间接、二级间接(有的还有三级间接)地址项。设块大小为 B、地址项占 a 字节,一个索引块能存 B / a 个地址;一级间接能管 B / a 个数据块,二级间接能管 (B / a) 的平方个。

文件系统与外存空闲空间管理

文件系统在外存上的布局一般有:引导块、超级块(记录块数、块大小、空闲块数等整体信息)、空闲空间管理信息、inode 区、根目录和数据区。在内存中有挂载表、目录缓存、系统打开文件表和进程打开文件表。虚拟文件系统(VFS)为各种具体文件系统提供统一的接口;挂载(mount)把一个文件系统接到目录树的某个目录(挂载点)上。

外存空闲空间的管理方法:

  • 空闲表法:像动态分区那样记录每个空闲区的起始块和块数;
  • 空闲链表法:把空闲块(或空闲区)链起来;
  • 位示图法:每个块用一位表示,0 空闲、1 已分配(也有反过来约定的)。设每字 n 位、字号和位号都从 0 开始,块号 b 对应字号 b / n(取整)、位号 b mod n;
  • 成组链接法:UNIX 采用,把空闲块分组,每组第一块记录下一组的块号和块数,适合大型文件系统。

I/O 管理

I/O 软件从上到下分四层:用户层 I/O 软件(库函数、系统调用接口)、设备独立软件(设备命名与保护、缓冲、设备分配、出错处理)、设备驱动程序(把抽象的 I/O 请求变成具体命令,如把逻辑块号换算成柱面、磁头、扇区)、中断处理程序。设备独立性指用户程序用逻辑设备名,不依赖具体的物理设备。

设备独立软件与驱动程序之间有统一的接口,即设备驱动程序接口:操作系统规定每类设备的驱动程序都提供同一组入口(如打开、关闭、读、写、控制),设备独立软件只通过这组入口调用驱动程序,再由驱动程序把请求翻译成对具体控制器的操作。这样,新增一种设备时,只要按这组接口编写并装入它的驱动程序,上层软件和用户程序都不必修改;驱动程序也按约定的方式向内核申请缓冲区、报告出错和 I/O 完成。

输入/输出应用程序接口按设备分为字符设备接口(如键盘,用 get、put)、块设备接口(如磁盘,按块读写、可随机访问)、网络设备接口(如套接字)。阻塞 I/O 在数据准备好之前让进程等待;非阻塞 I/O 立即返回,进程过一会儿再来查询。

本节后面还有约 2151 字:报名学员看全文

每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。

题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。

学完练一练

按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。

本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。

我要提问免费报名咨询