操作系统原理文件管理案例探讨

(整期优先)网络出版时间:2021-11-19
/ 2

操作系统原理文件管理案例探讨

李畅 龚永义 黄红桃 许宪成 胡成

广东外语外贸大学信息科学与技术学院 /网络空间安全学院,广东广州 510420

摘要:本文主要介绍了内存管理的地址映射和文件管理的混合索引结构。通过一个例子结合了这两部分内容,详细介绍内存访问和外存访问的练习,加深学生对虚拟存储管理的理解。

关键词:地址映射,文件控制块,FAT,混合索引,索引节点

1.引言。

内存管理和文件管理是现代操作系统的基本功能之一,在内存管理中,难点是逻辑地址到物理地址的映射。文件管理也是比较难以讲解的章节,现在有这么多的文件系统,用哪一种文件系统能作为最好的例子?1】理中的难点是文件的物理组织方式。无论是这两个章节还是这两个章节的难点都有极大的相关性,所以本文试图把这两章的难点结合在一起进行讨论,通过一个简单的案例,让学生能够更加清楚明白的理解内存管理的地址映射,更深刻的理解文件管理系统中文件的物理组织形式。

2.内存管理和文件物理结构简介。

一个作业需要运行,必须装入内存。有限的内存如何存放更多的用户作业就是内存管理的主要目标。从早期操作系统的连续分配,到当前主流操作系统的虚拟页式存储,操作系统的内存管理技术逐渐成熟。本文也以虚拟页式存储的内存管理方式为基础。所谓虚拟页式意味着一个作业的所有逻辑页面一部分放入内存,一部分放入外存。一旦需要访问的逻辑页面不在内存,产生一次缺页中断,从外存中把数据调入内存。从外存的何处调入就涉及到了文件在外存中的组织形式,而这也是文件管理中的难点。目前主流操作系统的文件组织形式主要是Windows的显示链接FAT(文件分配表)和Unix的混合索引模式。本文基于Unix的混合索引模式进行分析。

3.以数组文件访问为例,谈谈内存管理和文件管理的结合过程。

有一个数组文件 A[4096][512],每个数字占4B。当前系统内存块大小为4KB。一个硬盘盘块大小也为4KB,一个盘块号占4B。

先探讨访问数组中的A[4][4]数据的过程。第一步确定A[4][4]的逻辑地址。因为页面大小为4KB,每个数字占4B,所以一个页面可以存放1K个数字,即数组的2行。0、1行位于0号逻辑页,2、3行位于1号逻辑页,4、5行位于2号逻辑页。A[4][4]位于2号逻辑页中。初始状态数据不在内存,产生一次缺页中断,需要从外存调入A[4][4]所在的2号逻辑页。操作系统找到文件A的文件控制块FCB。文件A的FCB如图1所示

61973f776a519_html_8d02ac337e912644.gif 在混合索引结构中,共设有13个地址项,即i.addr0~i.addr12,为了提高文件的检索速度,在索引节点中设置10个直接地址项,即用i.addr0~i.addr9存放直接地址。换言之,在这里的每个项所存放的是该文件在硬盘上的盘块号。如果每个盘块大小是4KB,则一个小于40KB的文件就可以直接从索引节点中找到全部物理盘块号。2】此,前十个逻辑页面是直接寻址。在本例中,逻辑0号页对应的物理盘块号为3A5C。逻辑1号页对应的物理盘块号为024F。逻辑2号页对应的盘块号为17C6,即本次数据访问把17C6号盘块内的数据调入内存p号块中。如图2所示。A[4][4]的偏移量为44=16。根据起始地址+偏移量,形成实际的物理地址p4KB+16B,在该地址可以获得需要的数据。在本例中,从内存中的索引节点数据可以直接获得A[4][4]在硬盘上的盘块号,即一次访问硬盘就可以获得数据,所以称之为直接寻址。


61973f776a519_html_a31fba182344a871.gif

根据FCB,把17C6号硬盘盘块调入内存

61973f776a519_html_4af4cce014b6368d.gif

获得内存块号P

61973f776a519_html_4af4cce014b6368d.gif

形成物理地址:P*4K+4*4B

一次磁盘访问

图2 直接寻址盘块内容示意图


61973f776a519_html_61b46c0d761c07a6.gif 下来探讨获取A[24][4]数据的过程。每个逻辑页可以放两行数据,A[24][4]位于12号逻辑页。直接寻址可以记录10个逻辑页的硬盘块号,12号页对应的硬盘块号存放在一级索引中。根据图1可以得到一级索引表存放在硬盘物理盘块号7548号中,于是操作系统通过第一次磁盘访问把7548号盘块的内容读入内存。从图3的示例中可以看到,直接寻址盘块存放的是数据,而一级索引块中存放的是盘块号,即要访问的数据所在的盘块号。根据7548号盘块内的数据,可以得出9012号盘块存放的是逻辑页10号页的数据,8B57存放的是逻辑页11号页的数据,362D存放的是逻辑页12号页的数据。A[24][4]位于12号逻辑页,所以系统第二次访问硬盘把硬盘块362D中的数据调入内存。根据362D在内存中的块号p,加上偏移量16B,获得A[24][4]的物理地址p4K+16B,进而获得A[24][4]的值。

图3一次间接寻址盘块内容示意图

根据FCB中的single indirect记录的硬盘块号里面存放的是块号的索引。经过一次访问硬盘获得索引块地址,从索引块中可以获得逻辑页对应的硬盘盘块号,所以称为一次间接寻址。

最后,探讨下访问A[2072][4]的数据的过程。A[2072][4]位于逻辑页号1036号页面。因为硬盘块号占4B,所以一个硬盘盘块可以存放1K个物理盘块号。直接寻址可以记录10个逻辑页的硬盘块,一级索引可以记录:4KB/4B=1024个逻辑页面对应的盘块号,超过1024+10=1034个逻辑页面,即页号超过1033,就需要用到二级索引。二级索引第一个索引块记录的是逻辑页号1034-2057所对应的硬盘块号,二级索引第二个索引块记录的是逻辑页号2058-3081所对应的硬盘块,依次类推...(如果有这么多逻辑页)。从图1中可以看到二级索引的主索引盘块号为F532,里面存放二级索引的盘块号435C。系统经过一次访问硬盘,把主索引块号的内容调入内存,根据主索引块号中的内容,第二次访问磁盘,获得逻辑页1036所在的二级索引盘块号435C,435C中的数据如图4所示。逻辑页号1034对应的硬盘块号为1D98。逻辑页号1035对应的硬盘块号为8B5F。逻辑页号1036对应的硬盘块号为1428。把1428硬盘块号数据调入内存的p号块中,获得物理地址p4K+16B。


61973f776a519_html_bab45dd1d8c71b7d.gif

图4二次间接寻址盘块内容示意图

4.结束语。

有关内存管理和文件管理的知识点还很多,本文只是讨论了其中的一部分,而且是从原理的角度,运用的例子数据是假设数据,数据直观易懂,目的是使学生能够更加清晰明了的理解这两部分的原理和联系。还有很多内容值得探讨。例如Windows的FAT,内存管理和文件管理的代码实现过程等。针对上述内容,将在后续教学过程中继续探讨。

参考文献:

  1. 引导启发式的操作系统教学方法万方等,教育现代化

  2. 现代操作系统教程黄红桃等,清华大学出版社