logo资料库

操作系统(武汉大学版).doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
一. 实 验 内 容 模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。 二. 实 验 目 的 磁盘格式化时,系统吧把磁盘存储空间分成许多磁道,每个磁道又分成若干扇 区(又叫做块)。利用 Fdisk 命令对硬盘进行分区,即使只有一个分区,也要用 Fdisk 命 令进行分区。分区的目的,就是制作文件卷,形成系统。一个文件卷一般都被划分成引 导扇区、文件系统管理区和文件数据区。其中,文件数据区用来存放系统文件和用户文 件。用户可以通过文件系统调用,创建、打开和对文件进行读写。当用户的文件不再需 要时,就应该删除。把一个文件存放到磁盘上时,可以组织成连续文件、链接文件、索 引文件等。因此,磁盘空间的分配方法有两种,一种是连续空间的分配;另一种是不连 续空间的分配(又叫动态分配)。如何充分有效地利用磁盘空间,是操作系统要解决的 重要课题之一。通过本实验,使学生对磁盘空间的分配和回收有一个较深入的理解。 三. 实 验 题 目 第一题:连续的磁盘存储空间的分配和回收。 [提示]: (1) 要在磁盘上建立顺序文件时,必须把按序排列的逻辑记录依次存放在磁盘的连续存 储空间中。可假定磁盘初始化时,已把磁盘存储空间划分成若干等长的块(扇区),按柱面 号和盘面号的顺序给每一块确定一个编号。随着文件的建立、删除、磁盘存储空间被分成许 多区(每一区包含若干块),有的区存放着文件,而有的区是空闲的。当要建立顺序文件时 必须找到一个合适的空闲区来存放文件,当一个文件被删除时,则该文件占用的区应成为空 闲区。为此可用一张空闲区表来记录磁盘存储空间中尚未占用的部分,格式如下: 序 号 起始空闲块号 空闲块个数 1 2 3 4   5 14 21   6 3 30   状 态 未 分 配 未 分 配 未 分 配 空 表 目   (2) 要建立文件时,先查找空闲区表,从状态为“未分配”的登记栏目中找出一个块数 能满足要求的区,由起始空闲块号能依次推得可使用的其它块号。若不需要占用该区的所有 块时,则剩余的块仍应为未分配的空闲块,这时要修改起始空闲块号和空闲块数。若占用了 该区的所有块,则相应登记栏中的状态修改成“空表目”。删除一个文件时,从空闲区表中 找一个状态为“空表目”的登记栏目,把归还的起始块号和块数填入对应的位置。 磁盘存储空间的分配和回收算法类似于主存储器的可变分区方式的分配和回收。同学们 可参考实习四的第一题。
(3) 当找到空闲块后,必须启动磁盘把信息存放到指定的块中,启动磁盘必须给出由三 个参数组成的物理地址:柱面号、磁道号和物理记录号。故必须把找到的空闲块号换算成磁 盘的物理地址。 为了减少移臂次数,磁盘上的信息按柱面上各磁道顺序存放。现假定一个盘组共有 200 个柱面,(编号 0-199)每个柱面有 20 个磁道(编号 0-19,同一柱面上的各磁道分布在各盘 面上,故磁道号即盘面号。),每个磁道被分成等长的 6 个物理记录(编号 0-5,每个盘面被 分成若干个扇区,故每个磁道上的物理记录号即为对应的扇区号。)。那么,空闲块号与磁盘 物理地址的对应关系如下: 假设 M= 空闲块号 6 , m= { 空闲块号 6 } 则 物理记录号 = m 磁道号={ } M 20 M 20 柱面号=[ ] [ ]表示向下取整,{ }表示取模。 (4) 删除一个文件时,从文件目录表中可得到该文件在磁盘上的起始地址和逻辑记录个 数,假定每个逻辑记录占磁盘上的一个块(一个扇区),则可推算出归还后的起始空闲块号 和块数,登记到空闲区表中。换算关系如下: 起始空闲块号=(柱面号20+磁道号)6+物理记录号 空闲块数=逻辑记录数 (5) 请设计磁盘存储空间的分配和回收程序,要求把分配到的空闲块转换成磁盘物理地 址,把归还的磁盘空间转换成空闲块号。 假定空闲区表的初值如提示(1)中指出,现有一文件要占用 10 块,运行你所设计的分 配程序,显示或打印分配后的空闲区表以及分配到的磁盘空间的起始物理地址。然后,设有 一文件被删除,它占用的磁盘空间为:1 号柱面 2 号磁道,0 号物理记录开始的 4 块,运行 你所设计的回收程序,显示或打印回收后的空闲区表。 第二题:用位示图管理磁盘存储空间 [提示]: (1) 为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类文 件可以把逻辑记录存放在不连续的存储空间。为了表示哪些磁盘空间已被占用,哪些磁盘空 间是空闲的,可用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一块对应,“1” 状态表示相应块已占用,“0”状态表示该块为空闲。位示图的形式与实习二中的位示图一样, 但要注意,对于主存储空间和磁盘存储空间应该用不同的位示图来管理,不可混用。
(2) 申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算出这一 位对应块的磁盘物理地址,然后把该位置成占用状态“1”。假设现在有一个盘组共 8 个柱面, 每个柱面有两个磁道,每个磁道分成 4 个物理记录。那么,当在位示图中找到某一字节的某 一位为“0”时,这个空闲块对应的磁盘物理地址为: 柱面号=字节号 磁道号=[ 位数 4 ] 物理记录号={ 位数 4 } (3) 归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示图 中的对应位,把该位置成“0”。按照(2)中假设的盘组,归还块在位示图中的位置计算如 下: 字节号=柱面号 位数=磁道号4+物理记录号 (4) 设计申请一块磁盘空间和归还一块磁盘空间的程序。要求能显示或打印程序运行前 和运行后的位示图;分配时把分配到的磁盘空间的物理地址显示或打印出来,归还时把归还 块对应于位示图的字节号和位数显示或打印出来。 (5) 假定已有如表 4-1 的磁盘空间被占用了,现在要申请五块磁盘空间,运行分配程序, 按(4)中要求显示或打印运行的结果。然后再归还如表 4-2 的空间,运行回收程序,按(4) 中的要求显示或打印运行结果。 表 4-1 表 4-2 柱面号 磁道号 物理记录号 0 0 0 0 1 1 0 0 1 1 0 1 1 2 0 3 0 2 柱面号 磁道号 物理记录号 0 0 1 0 1 0 2 0 1 第三题:模拟 UNIX 系统的空闲块成组链接法,实现磁盘存储空间的管理。 [提示]: (1) 假定磁盘存储空间已被划分成长度为 n 的等长块,共有 M 块可供使用。UNIX 系统 中采用空闲块成组链接的方法 来管理磁盘存储空间,将磁盘中的每 N 个空闲块(N
成一组,最后一组可以不足 N 块,每组的第一块中登记了下一组空闲块的块数和块号,第 一组的块数和块号登记在专用块中,登记的格式如下: 0 1 2   K   空闲块数 k 空闲块号 1 空闲块号 2   空闲块号 k   当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。 (2) 现模拟 UNIX 系统的空闲块成组链接,假定共有 8 块可供使用,每 3 块为一组,则 空闲块成组链接的初始状态为: 四. 实 验 要 求 1. 给出所选实验题目。 2. 给出源程序的名字。 3. 程序中使用的数据结构及符号说明。 4. 给出程序的流程图和源程序,源程序中要有详细的注释。 5. 收获体会及对该题的改进意见和见解。
开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按 序排列了。 用二维数组 A:array [0…M-1] of array [0…n-1]来模拟管理磁盘空间,用 A[i]表示第 I 块,第 0 块 A[0]作为专用块。 (3) 成组链接的分组情况记录在磁盘物理块中,为了查找链接情况,必须把它们读入主 存,故当磁盘初始化后,系统先将专用块内容复制到主存中。定义一个数组 MA 存放专用 块内容,即 MA: =A[0]。申请一块磁盘空间时,查 MA,从中找出空闲块号,当一组的空闲 块只剩第一块时,则应把该块中指出的下一组的空闲块数和块号复制到专用块中,然后把该 块分配给申请者。当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到主存, 再为申请者分配。分配算法如下图。 采用成组链接的分配算法
(4) 归还一块时给出归还的块号,若当前组不满规定块数时,将归还块登记入该组;若 当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把主存中登记的一组链接 情况 MA 复制到归还块中,然后在 MA 重新登记一个新组。归还一块的算法如下图。 采用成组链接的回收算法 (5) 设计分配和归还磁盘空间的程序,能显示或打印分配的磁盘空间的块号,在完成一 次分配或归还后能显示或打印各空闲块组的情况(各组的空闲块数和块号)。本实习省去了 块号与物理地址之间的转换工作,而在实际的系统中必须进行块号与物理地址的转换工作。 (6) 运行你所设计的程序,假定空闲块链接的初始状态如提示(2),现先分配 4 块,再 依次归还第 2 块和第 6 块。把执行后分配到的块号依次显示或打印出来,且显示或打印空闲 块组的情况。 在上次执行的基础上继续分配 3 块,然后归还第 1 块,再申请 5 块,显示或打印依次分 配到的块号及空闲块组情况。
分享到:
收藏