第2章 · 播客 第6集

操作系统 · 文件管理:逻辑结构与物理分配

🎙️ 本集播客第6集:本章收尾。文件的逻辑结构四种记录文件、物理结构三种分配策略(顺序/链接/索引,逐条对照优缺点,钉死「既顺序又随机」只有索引分配)、外存空闲块管理三法(索引法、链接法、位示图法,附位示图 32 字算例)、树型目录与绝对相对路径;再讲作业的提交—后备—执行—完成四状态与 JCB、系统调用是编程人员的唯一接口,末尾附全章五大块必背清单。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
🎙️ 第2章播客 第6集
⬇ 下载本集 点击播放
阿明
上集把设备管理讲完了,DMA 窃取工作周期、通道就是 IOP、SPOOLING 把独占设备改造成共享设备,这三句我记住了。今天该到文件管理了吧?
小雅
对,最后一集,文件管理加作业管理。先立个框:操作系统对计算机的管理包括两个方面,硬件资源和软件资源。硬件资源的管理包括 CPU 的管理、存储器的管理、设备管理等,主要解决硬件资源的有效和合理利用问题;而软件资源包括各种系统程序、各种应用程序、各种用户程序,也包括大量的文档材料、库函数等,每一种软件资源本身都是具有一定逻辑意义的相关信息的集合,在操作系统中它们以文件形式存储。所以文件系统是操作系统中组织、存取和保护数据的一个重要部分。
阿明
文件管理具体管哪些事?
小雅
原文列了一串,挑关键的记:建立、修改、删除文件;按文件名访问文件;决定文件信息的存放位置、存放形式及存取权限;管理文件间的联系及提供对文件的共享、保护和保密。这三个词别混:文件的共享是指一个文件可以让多个用户共同使用,它可以减少用户的重复性劳动、节省文件的存储空间、减少输入输出文件的次数;文件的保护主要是为防止由于错误操作而对文件造成的破坏;文件的保密是为了防止未经授权的用户对文件进行访问。一句话——保护防手滑,保密防外人。
阿明
保护防手滑、保密防外人,这个我不会忘了。那存取控制怎么做?
小雅
文件的保护、保密实际上是用户对文件的存取权限控制问题。一般为文件的存取设置两级控制:第 1 级是访问者的识别,即规定哪些人可以访问;第 2 级是存取权限的识别,即有权参与访问者可对文件执行何种操作。记住顺序——先认人,再认权限。是「两级」,不是三级。
阿明
接下来是逻辑结构和物理结构?这两个名字我总分不清谁站在谁的角度。
小雅
用一句话切开:文件的结构是指文件的组织形式,从用户角度所看到的文件组织形式称为文件的逻辑结构;而文件的物理结构是指文件在存储设备上的存放方法。逻辑结构是为了方便用户使用,物理结构侧重于提高存储器的利用效率和降低存取时间。用户看到的是逻辑,磁盘上真实躺着的是物理。
阿明
逻辑结构分几类?
小雅
一般文件的逻辑结构可以分为两种:无结构的字符流文件和有结构的记录文件。记录文件由记录组成,即文件内的信息划分成多个记录,以记录为单位组织和使用信息。而记录文件又有四种:顺序文件、索引顺序文件、索引文件和直接文件。
阿明
四种一起上,我怕串。一个一个来。
小雅
第一,顺序文件。大多数文件是顺序文件;顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项称为键,记录是按键值的约定次序组织的。顺序文件常用于批处理应用,对于查询或更新某个记录的处理性能不太好。关键词是「定长」「按键值次序」「批处理」。
小雅
第二,索引顺序文件。它是基于键的约定次序组织的,而且维护键的索引和溢出区域;键的索引也可以是多级索引。它的杀手特征是——既适用于交互方式应用,也适用于批处理方式应用。看到「交互和批处理都行」,选索引顺序文件。
阿明
那索引文件和索引顺序文件差在哪?名字太像了。
小雅
差在按什么建索引。索引文件是基于记录的一个键数据项组织的:许多应用需按照别的数据项访问文件,为此常采用索引文件方法,即对主文件中的记录按需要的数据项,一个或几个,建索引,而索引文件本身是顺序文件组织。索引顺序文件的索引是建在那个约定次序的键上、还带溢出区;索引文件是为了「按别的数据项查」而额外建的索引。
小雅
第四,直接文件,又称哈希文件。记录以它们在直接访问存储设备上的物理地址直接地、随机地访问。直接文件常用于需要高速访问文件而且每次仅访问一条记录的应用中。看到「哈希」「每次仅访问一条记录」就是它。
阿明
逻辑结构这四种记下了。物理结构那边呢?听说是本章文件部分最爱出题的地方。
小雅
是重仓,本章练习题里就有一道直接考它。先铺底:文件的存储设备通常划分为大小相同的物理块,物理块是分配和传输信息的基本单位;文件的物理结构涉及文件存储设备的组块策略和文件分配策略,决定文件信息在存储设备上的存储位置。常用的文件分配策略有三种——顺序分配、链接分配、索引分配。我一条条讲,你重点听每条「适用于什么存取」。
小雅
第一,顺序分配,也叫连续分配,这是最简单的分配方法。在文件建立时预先分配一组连续的物理块,然后按照逻辑文件中的信息或记录顺序,依次把信息按顺序存储到物理块中。这样只需知道文件在文件存储设备上的起始位置和文件长度,就能进行存取。所以它适合于顺序存取,在连续存取相邻信息时存取速度快。缺点是在文件建立时必须指定文件的信息长度,以后不能动态增长,一般不宜用于需要经常修改的文件。
阿明
起始位置加长度就能定位,那不是随机存取也很方便吗?为什么说它只适合顺序存取?
小雅
问得好,这是考场上最容易自作聪明的地方。原文对顺序分配的定性就是一句话:这种分配方法适合于顺序存取,在连续存取相邻信息时存取速度快。考试按原文口径走,顺序分配对应顺序存取,别自己加戏。真正被明确写成「既适用于顺序存取,又适用于随机存取」的只有一种,等下你就知道是谁。
小雅
第二,链接分配,也叫串联分配,这是按单个物理块逐个进行的。每个物理块中,一般是最后一个单元,设有一个指针,指向其后续连接的下一个物理块的地址,这样所有的物理块都被链接起来,形成一个链接队列。建立链接文件时不需要指定文件的长度,在文件的说明信息中只需指出该文件的第一个物理块块号,而且链接文件的文件长度可以动态地增长,只调整物理块间的指针就可以插入或删除一个信息块。
阿明
能动态长、能插能删,听起来比顺序分配强。它的短板在哪?
小雅
短板恰恰是考点。链接分配的优点是可以解决存储器的碎片问题、提高存储空间利用率;但由于链接文件只能按照队列中的链接指针顺序查找,因此搜索效率低,一般只适用于顺序访问,不适用于随机存取。这句「只适用于顺序访问,不适用于随机存取」要一字不落地记住——它是干扰项的常驻选手。
小雅
第三,索引分配。这是另一种对文件存储不连续分配的方法:采用索引分配方法的系统,为每一个文件建立一张索引表,索引表中每一表项指出文件信息所在的逻辑块号和与之对应的物理块号。它的评价原文写得非常明确——索引分配既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取;索引文件的优点是既适用于顺序存取,又适用于随机存取。
阿明
那题目问「文件物理结构中既适用于顺序存取又适用于随机存取的分配方式」,答案就是索引分配。
小雅
正是这道题,答案选索引分配。四个干扰项逐个说清:顺序分配适合顺序存取,链接分配只适用于顺序访问,这两个都缺随机那一半;还有一个选项叫「直接分配」,这个名字在文件物理结构的三种分配策略里根本不存在——直接文件是逻辑结构那边的哈希文件,被搬到物理结构里就是纯粹的伪选项。三种分配策略只有顺序、链接、索引,记住这个「三」,直接分配一出现就划掉。
阿明
索引分配就没有代价吗?天下没有白吃的午餐。
小雅
有代价,而且也考。缺点是索引表增加了存储空间的开销;另外在存取文件时需要访问两次磁盘,一次是访问索引表,另一次是根据索引表提供的物理块号访问文件信息。为了提高效率,一种改进的方法是在对某个文件进行操作之前预先把索引表调入内存,这样文件的存取就能直接从内存的索引表中确定相应的物理块号,从而只需要访问一次磁盘。两次变一次,靠的就是索引表提前进内存。
阿明
文件特别大、索引表放不下一个物理块怎么办?
小雅
对一些大的文件,当索引表的大小超过一个物理块时,会发生索引表的分配问题,一般采用多级索引,也就是间接索引技术。这时在由索引表指出的物理块中存放的不是文件存放处,而是存放文件信息的物理块地址。所以如果一个物理块能存储 n 个地址,则一级间接索引将使可寻址的文件长度变成 n 的平方块;对于更大的文件可以采用二级甚至三级间接索引,UNIX 操作系统采用的就是三级索引结构。记住这个数字关系:一级间接索引到 n 的平方块,UNIX 是三级。