操作系统磁盘管理
操作系统磁盘管理实验报告

实验报告课程名称:操作系统院系:信息与控制工程学院专业班级:计算机0801姓名:指导老师:2010年 12月 31日目录一、实验目的 2二、需求分析 2三概要设计 3四、详细设计 4(1)先来先服务算法(FCFS) 4(2)最短寻道时间优先算法(SSTF) 5(3)电梯算法(SCAN) 7五、调试过程 8六、结论与体会 8七、附件:源程序清单 9一、实验目的本实验的目的是通过设计一个磁盘调度模拟系统,以加深对FCFS、最短寻道时间以及电梯等磁盘调度算法的理解。
让我们更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强动手能力。
二、需求分析1、模拟一个磁盘调度算法;Visual C++ 6.0平台2、输入为一组作业的磁道请求;作业的寻到请求可以用一个数组模拟3、要求能够模拟FCFS、最短寻道时间、电梯算法三个磁盘调度算法;FCFS (First Come First Served )先来先服务,在计算机并行任务处理中,被视为最简单的任务排序策略,即是无论任务大小和所需完成时间,对先到的任务先处理,后到的任务后处理。
按照此算法,数组顺序输出即可。
最短寻道时间优先(ShortestSeekTimeFirst,SSTF)要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,确定当前磁道,选择距离当前最近的。
电梯算法,磁臂仅移动到请求的最外道就回转。
反方向查找服务。
确定当前磁道以及运动方向,排序后的数组当前磁道以后的磁道顺序序输出,在将剩余反向输出。
4、输出为按选择的算法执行时的磁头移动轨迹和移动的总道数。
三概要设计系统流程图四、详细设计(1)先来先服务算法(FCFS)先来先服务(FCFS)调度:按先来后到次序服务,未作优化。
最简单的移臂调度算法是“先来先服务”调度算法,这个算法不必考虑当前移臂所在的位置,而只是考虑访问者提出访问请求的先后次序。
.先来先服务算法流程图(2)最短寻道时间优先算法(SSTF)最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短(距离当前移臂最近)的那个请求先执行的,而不管访问者到来的先后次序。
操作系统中的文件系统与磁盘管理

操作系统中的文件系统与磁盘管理在计算机系统中,操作系统起到了极为重要的作用,负责协调和管理各种硬件资源,其中文件系统与磁盘管理是操作系统的重要组成部分。
文件系统负责对计算机中的文件进行组织和管理,而磁盘管理则负责对存储设备中的数据进行存取和管理。
本文将对操作系统中的文件系统与磁盘管理进行详细探讨。
一、文件系统文件系统是操作系统中用于组织和管理文件的一种机制。
它提供了对文件的创建、读取、写入、删除等操作,并通过目录结构将文件进行组织。
文件系统的主要任务包括:1. 文件的组织与管理:文件系统通过建立目录结构,将文件按照一定的规则进行组织。
用户可以通过路径名来标识文件的位置,方便地进行文件的访问和管理。
2. 存储空间的分配与管理:文件系统需要将文件存储到磁盘等存储设备中。
它需要对存储设备进行分区,并为文件分配存储空间。
在进行文件的读写操作时,文件系统需要记录文件的位置和大小,以便正确地进行存取操作。
3. 文件的访问与权限管理:文件系统对文件进行权限管理,确保只有拥有合适权限的用户才能进行文件的读写和修改操作。
同时,文件系统还提供了各种接口和工具,方便用户对文件进行访问和操作。
二、磁盘管理磁盘管理是操作系统中负责对存储设备进行管理和存取的一部分。
磁盘是计算机系统中最重要的存储设备之一,广泛应用于文件存储和数据管理。
磁盘管理的主要任务包括:1. 存储空间的管理:磁盘管理需要将磁盘空间划分为逻辑块(或扇区)进行管理。
逻辑块是最小的存储单位,文件系统通过逻辑块来分配和管理存储空间。
磁盘管理还需要维护空闲块列表,记录磁盘上可用的空闲块,以便分配给新文件。
2. 数据的存取与缓存:磁盘管理需要实现对磁盘的读写操作。
为了提高磁盘的读写效率,磁盘管理会使用磁盘缓存区,将频繁读写的数据暂存在内存中。
通过使用缓存区,可以减少对磁盘的实际读写次数,从而提高系统的响应速度。
3. 磁盘数据的备份与恢复:磁盘管理还需要对磁盘数据进行备份和恢复。
磁盘管理的基本流程

磁盘管理的基本流程磁盘管理是计算机存储管理的重要组成部分,它负责管理磁盘上的数据存储和访问。
磁盘管理的基本流程包括磁盘初始化、分区、格式化、文件系统创建和文件存储。
一、磁盘初始化磁盘初始化是使用新的磁盘之前的第一步操作。
它的目的是将磁盘上的所有数据清零,并为之后的分区操作做好准备。
在磁盘初始化过程中,操作系统会向磁盘发送特定的命令,将磁盘上的数据初始化为0,以保证数据的干净和安全。
二、分区分区是将磁盘划分为若干个逻辑部分的过程。
每个分区相当于一个独立的磁盘,可以单独进行管理和使用。
在分区过程中,需要确定分区的大小、数量和类型。
常用的分区类型有主分区和扩展分区。
主分区可以被操作系统识别并进行文件存储,而扩展分区则可进一步划分为逻辑分区。
三、格式化格式化是对分区进行处理,以便操作系统能够识别和存储文件。
在格式化过程中,需要选择文件系统类型,如FAT32、NTFS、ext4等。
文件系统决定了文件的组织方式、文件访问的速度和文件存储的可靠性。
格式化过程还会为文件系统分配一些元数据区域,用于存储文件的相关信息。
四、文件系统创建文件系统创建是在已经格式化的分区上建立文件系统的过程。
在创建文件系统时,操作系统会在分区的开头部分建立一系列的数据结构和元数据,用于记录文件和目录的信息,同时为文件的存储和访问提供支持。
文件系统创建后,操作系统就可以在分区上进行文件的读写操作。
五、文件存储文件存储是指将文件保存到磁盘的过程。
当用户创建、下载或复制文件时,操作系统会将文件的内容和相关信息存储到文件系统所在的分区中。
文件存储时,操作系统会根据文件系统的管理策略,将文件的数据分散存储在磁盘的不同位置,以提高文件的存取效率。
总结:磁盘管理的基本流程包括磁盘初始化、分区、格式化、文件系统创建和文件存储。
通过这个流程,操作系统可以对磁盘进行有效的管理和利用。
磁盘初始化将磁盘上的数据清零;分区将磁盘划分为多个逻辑部分;格式化为分区建立文件系统;文件系统创建为操作系统提供文件存储和访问的支持;文件存储将文件保存到磁盘中。
Windows操作系统的磁盘管理

Windows操作系统的磁盘管理随着计算机技术不断进步,人们对于计算机硬件和操作系统的要求也越来越高。
虽然计算机已经成为人们生活和工作中必不可少的设备,但是对于普通用户来说,要了解一些基本的计算机操作知识仍然是必要的。
本文将介绍Windows操作系统的磁盘管理,帮助读者更好地管理计算机硬件。
一、磁盘的概念首先,我们需要先了解什么是磁盘。
磁盘是一种用于存储数据的设备。
它由盘片、磁头和驱动器等组成。
盘片是磁盘的主体,由一种类似于铝材料的合金制成。
盘片上有许多小环状路径,称之为“磁道”。
用户可以在这些磁道上存储和读取数据。
磁头是一种读写设备,负责将数据写入磁盘和读取磁盘中的数据。
驱动器则是磁头的控制中心,控制磁头的移动和磁盘盘面的旋转速度。
二、磁盘的分区为了更好地管理磁盘,我们需要将一个磁盘划分成若干个分区。
磁盘分区可以将不同的数据放在不同的地方,从而实现有效地管理和保护数据。
在Windows操作系统中,我们可以通过磁盘管理工具进行分区操作。
打开磁盘管理工具有两种方式:一种是通过“我的电脑”图标右键菜单中的“管理”,另一种是通过控制面板中的“管理工具”找到“计算机管理”,然后点击“存储”中的“磁盘管理”。
在磁盘管理工具中,我们可以看到计算机所有的磁盘信息,包括磁盘的容量、使用情况等。
如果我们需要对磁盘进行分区操作,可以右键磁盘选择“新建简单卷”或“新建分区”。
分区后,我们可以将数据分类存放,更方便地管理和使用。
三、磁盘的格式化在进行磁盘分区后,我们需要对其进行格式化操作,使得磁盘能够正常工作。
格式化是指将磁盘清空并为其分配一个文件系统。
在Windows操作系统中,有FAT32、NTFS等多种文件系统可供选择。
一般来说,NTFS文件系统可以支持更大的单个文件和更高的安全性,里面可以存放大于4GB的单个文件,同时还支持文件访问权限等功能。
在磁盘管理工具中,格式化磁盘也非常简单。
首先,我们选择需要格式化的磁盘,右键点击后选择“格式化”。
操作系统安装和磁盘管理实训报告

操作系统安装和磁盘管理实训报告操作系统安装和磁盘管理实训报告一、实训目的通过操作系统安装和磁盘管理实训,掌握操作系统安装的方法与步骤,学习硬盘分区与格式化操作,了解硬盘控制器、文件系统等相关知识。
二、实训工具1. 操作系统安装软件2. 光盘或U盘3. 电脑硬件三、实训内容1. 操作系统安装操作系统的安装是操作系统课程中的重要内容之一,监视实训过程的准确性与完整性,确保实训效果达到最佳。
在实训前,我们需要选择合适的操作系统,建议选择Windows系统(XP/7/8/10)。
硬件环境满足系统要求后,我们首先需要将光盘或U盘插入电脑,然后在电脑开机启动时按F12键进入BIOS设置,设置为从光盘或U盘启动,然后按F10保存。
接下来,就可以按照提示操作,进行操作系统的安装。
在安装过程中,需要注意选择安装位置和类型,设置相关用户信息,还需要进行激活等操作。
2. 硬盘分区与格式化硬盘分区与格式化是操作系统安装前的必要步骤。
它的目的是将硬盘分成几个逻辑分区,实现文件、程序及其他数据的存储与管理。
在Windows系统中,我们可以通过磁盘管理工具进行操作。
首先打开“我的电脑”,右键选择“管理”,进入“磁盘管理”界面。
在该界面中,我们可以重新分配硬盘的空间,创建新分区或删除已有的分区。
若硬盘没有被分区,则将会显示出一个未分配的磁盘区域,我们可以右键此区域进行新建分区,或选择已有分区进行删除、格式化等操作。
3. 硬盘控制器、文件系统等基本概念硬盘控制器是计算机硬件的一部分,用于连接计算机主机和硬盘驱动器,同时帮助控制硬盘的读写。
文件系统则是将计算机中的数据、文件及其他媒体都组织起来进行存储、分配和访问的一种机制。
从操作系统的角度看,文件系统使得访问文件、移动文件等操作非常简单,同时确保计算机中的数据有组织的存储,保证计算机的安全性和可靠性。
常见的文件系统有FAT32、NTFS等,不同的文件系统对于计算机的功能和性能也有不同的影响。
如何使用Windows CMD命令行进行磁盘管理和优化

如何使用Windows CMD命令行进行磁盘管理和优化Windows操作系统中的命令提示符(CMD)是一种强大的工具,可以用于进行磁盘管理和优化。
通过CMD命令行,用户可以执行各种操作,包括创建、删除、格式化分区,以及检查和修复磁盘错误等。
本文将介绍如何使用Windows CMD命令行进行磁盘管理和优化。
1. 磁盘信息查看在CMD命令行中,可以使用"diskpart"命令进入磁盘分区工具。
输入"list disk"命令,可以查看系统中的所有磁盘信息,包括磁盘编号、磁盘大小等。
通过这些信息,可以了解系统中的磁盘情况。
2. 磁盘分区操作磁盘分区是将物理磁盘划分为一个或多个逻辑部分的过程。
在CMD命令行中,可以使用"diskpart"命令进入磁盘分区工具。
输入"list disk"命令查看可用磁盘,然后选择要操作的磁盘,使用"select disk X"命令(X为磁盘编号)选中磁盘。
接下来,可以使用"create partition primary"命令创建一个主分区,或使用"create partition extended"命令创建一个扩展分区。
创建分区后,可以使用"format"命令对分区进行格式化。
3. 磁盘容量扩展当磁盘空间不足时,可以使用CMD命令行来扩展磁盘容量。
首先,使用"diskpart"命令进入磁盘分区工具。
然后,使用"list disk"命令查看可用磁盘,选择要操作的磁盘,使用"select disk X"命令选中磁盘。
接下来,使用"list partition"命令查看磁盘上的分区,选择要扩展的分区,使用"extend"命令进行扩展。
操作系统安装和磁盘管理实训报告
操作系统安装和磁盘管理实训报告实训7:操作系统安装和磁盘管理实训报告本次实训内容为安装操作系统,并利用系统自带工具进行磁盘分区和格式化。
实训要求包括熟悉操作系统安装方法、熟练利用操作系统自带工具进行磁盘分区和格式化,以及了解操作系统安装过程中各项设置的含义。
在实际操作中,我们首先需要进入BIOS进行设置,将CD-ROM设为第一启动设备。
大多数电脑进入BIOS的方式为按下Del键。
在Advanced BIOS Features选项设置里,我们可以找到FirstBootDevice,将其设置为CD-ROM即可。
完成后,按下F10键保存并退出。
接下来是操作系统的安装过程。
首先,我们需要选择系统安装分区。
在启动光盘后,我们会看到Windows XP安装欢迎页面,按下Enter键继续进入下一步安装进程。
然后,我们需要同意Windows的用户许可协议,按下F8键继续安装。
进入实质性的XP安装过程后,我们需要进行硬盘分区。
如果硬盘已经分好区,就不需要再进行分区了。
在此我们将整个硬盘都分成一个区。
在实际使用中,应根据需要将一个硬盘划分为若干个分区。
关于安装Windows XP系统的分区大小,一般以40G为宜。
分区结束后,我们可以选择要安装系统的分区。
最后,我们需要选择文件系统。
FAT32文件系统适用于较小的分区,而NTFS文件系统适用于较大的分区。
选择好文件系统后,我们需要进行格式化。
在格式化过程中,我们可以选择快速格式化或完全格式化。
快速格式化速度较快,但完全格式化可以更彻底地清除硬盘上的数据。
通过本次实训,我们掌握了操作系统安装和磁盘管理的基本方法,为今后的计算机维护和使用打下了坚实的基础。
在选择系统的安装分区之后,需要为系统选择文件系统。
在Windows XP中,有两种文件系统可供选择:FAT32和NTFS。
虽然FAT32在兼容性方面稍微好一些,但是从安全性和性能方面来看,NTFS更好。
因此,作为普通Windows用户,建议选择NTFS格式。
Windows CMD中的磁盘管理命令使用技巧
Windows CMD中的磁盘管理命令使用技巧在Windows操作系统中,CMD命令行界面是一个强大而且常用的工具。
它提供了许多磁盘管理命令,可以帮助用户更好地管理和维护计算机的硬盘。
本文将介绍一些常用的磁盘管理命令以及它们的使用技巧。
1. 磁盘分区命令磁盘分区是将硬盘划分为多个逻辑部分的过程。
在CMD中,Diskpart命令是一个强大的磁盘分区工具。
要使用Diskpart命令,首先打开CMD窗口,然后输入"diskpart"并按下回车键。
接下来,我们可以使用以下命令来管理磁盘分区:- list disk:显示计算机上所有的磁盘。
- select disk X:选择要操作的磁盘(X代表磁盘的编号)。
- clean:清除磁盘上的所有分区和卷。
- create partition primary:创建一个新的主分区。
- format fs=ntfs quick:快速格式化分区为NTFS文件系统。
2. 磁盘容量查询命令在CMD中,我们可以使用一些命令来查询磁盘的容量和使用情况。
以下是一些常用的命令:- wmic diskdrive get size:显示计算机上所有磁盘的总容量。
- wmic logicaldisk get size,freespace,caption:显示计算机上所有逻辑磁盘的容量、可用空间和盘符。
这些命令可以帮助我们了解磁盘的使用情况,及时清理不必要的文件以释放磁盘空间。
3. 磁盘清理命令磁盘清理是一种常见的维护操作,可以帮助我们删除不必要的临时文件和垃圾文件,释放磁盘空间。
在CMD中,我们可以使用以下命令来进行磁盘清理:- cleanmgr:打开磁盘清理工具,可以选择要清理的磁盘和文件类型。
- del /s /q %temp%\*:删除临时文件夹中的所有文件。
- del /s /q C:\Windows\Temp\*:删除Windows系统临时文件夹中的所有文件。
磁盘管理_实验报告
一、实验目的1. 理解磁盘的基本结构和工作原理。
2. 掌握Linux操作系统中磁盘管理的常用命令。
3. 学会使用磁盘分区、格式化、挂载等基本操作。
4. 了解磁盘故障的检测与修复方法。
二、实验环境1. 操作系统:Linux2. 硬件设备:计算机、硬盘(包括固态硬盘和机械硬盘)3. 软件工具:磁盘分区工具、格式化工具、磁盘检测工具等三、实验内容1. 磁盘结构和工作原理磁盘是计算机中常用的存储设备,主要由以下几个部分组成:磁头:用于读写磁盘上的数据。
磁盘片:由多个磁性盘片组成,用于存储数据。
控制单元:负责控制磁头的移动和数据读写。
磁盘的工作原理如下:1. 当读取数据时,磁头定位到指定位置,读取磁盘片上的数据。
2. 当写入数据时,磁头将数据写入磁盘片上的指定位置。
2. 磁盘管理命令Linux操作系统中,常用的磁盘管理命令如下:fdisk:用于磁盘分区。
mkfs:用于格式化磁盘分区。
mount:用于挂载磁盘分区。
df:用于查看磁盘使用情况。
du:用于查看文件/文件夹大小。
3. 磁盘分区磁盘分区是指将硬盘划分为多个逻辑分区,每个分区可以独立存储数据。
实验步骤:1. 使用fdisk命令创建新的磁盘分区。
2. 使用mkfs命令格式化磁盘分区。
3. 使用mount命令将磁盘分区挂载到文件系统。
4. 磁盘格式化磁盘格式化是指将磁盘分区上的数据全部清空,并建立文件系统。
实验步骤:1. 使用mkfs命令格式化磁盘分区。
2. 使用df命令查看磁盘使用情况。
5. 磁盘挂载磁盘挂载是指将磁盘分区与文件系统关联起来,以便用户访问。
实验步骤:1. 使用mount命令将磁盘分区挂载到文件系统。
2. 使用df命令查看磁盘挂载情况。
6. 磁盘故障检测与修复磁盘故障可能导致数据丢失或系统崩溃。
以下是一些常用的磁盘故障检测与修复方法:使用磁盘检测工具检测磁盘健康状态。
使用磁盘修复工具修复磁盘错误。
备份数据以防止数据丢失。
四、实验结果与分析通过本次实验,我们成功掌握了以下内容:1. 磁盘的基本结构和工作原理。
各种操作系统磁盘管理命令大全
各种操作系统磁盘管理命令大全
200分
一、Linux磁盘管理命令
1、fdisk命令
fdisk命令是Linux操作系统中的一个磁盘分区工具,主要用于创建,删除,重新排序,磁盘分区。
它可以用来创建,删除和修改Linux磁盘分区,修复磁盘分区结构,可以实现磁盘分区的查看及设置。
2、fdformat命令
fdformat命令可以用来格式化软盘,确定软盘磁头数,磁道数,扇
区数等参数,并给软盘写入IBM DOS头和分区表。
3、mkfs.ext2命令
mkfs.ext2命令是用来格式化linux ext2文件系统的分区,格式化
分区以后,才能够使用ext2文件系统的方式存储数据。
4、mkswap命令
mkswap命令可以用来建立或者格式化swap分区,swap分区用来补充
物理内存,可以提高系统速度。
5、mkudffs命令
mkudffs命令可以用来创建UDF文件系统分区。
UDF是Universal
Disk Format的缩写,是一种可以在多种磁盘驱动器中使用的文件系统格式。
6、fsck命令
fsck命令是一个在Linux系统中检查和修复文件系统错误的维护工具。
它可以找出磁盘上的坏块,检查文件系统的完整性,并尝试修复可能存在的问题。
7、tune2fs命令
tune2fs命令可以修改EXT2,EXT3和EXT4文件系统的属性,包括检查间隔,最大挂载次数,默认权限等等。
8、mkfs.vfat命令
mkfs.vfat命令可以用来格式化VFAT文件系统的分区,它可以将文件系统格式化为FAT16或者FAT32文件系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.需求分析(1)设计内容和要求(包括原始数据、技术参数、条件、设计要求等)设计内容:1)采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收;2)采用空白块成组链接结构实现磁盘空间的分配和回收;3)采用位示图结构实现磁盘空间的分配和回收。
基本要求:1)具有创建文件、空间分配、删除文件、释放空间等基本功能;2)把文件目录、磁盘空间管理的数据结构变化情况显示出来。
(2)需求分析内容1)空白文件目录是管理磁盘空间的一种方法,该方法将文件存储设备上的每个连续空闲区看作一个空白文件,系统为所有空白文件单独建立一个目录,每个空白文件在这个目录中占一个表目.表目的内容至少包括第一个空白块的地址(物理块号),空白块的数目。
2)位示图是另一种常用的管理磁盘空间的方法,该方法通过建立一张位示图来表示为l 时表示该块已分配,当某位为0时表示该块空闲。
3)位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。
当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。
有的系统把“0”作为盘块已分配的标记,把“1”作为空闲标志(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。
1.1小组分工温庭栋任务为:采用空白文件目录结构管理磁盘空间;魏子育任务为:采用空白块成组链接结构实现磁盘空间的分配和回收;卫虹任务为:采用位示图结构实现磁盘空间的分配和回收;2.总体设计(1)磁盘存储空间管理是文件系统的重要内容采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。
当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。
为此需建立两张表格,分别记录相关数据。
插入文件程序流图如图2-1;图2-1删除文件流程图如图2-2图2-2(2)采用空白块成组链接结构实现磁盘空间的分配和回收对于要求将磁盘存储空间的空闲块成组链接,我们可以设计几个相应的一维数组,分别表示磁盘的各个磁盘,数组中的元素表示每个磁盘的分块,分配时,通过查空闲表MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。
回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。
1)假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。
UNIX系统采用空闲块成组链接的方法来管理磁盘存储空间,将磁盘中的每N个空闲块(N<M)分成一组,最后一组可以不足N块,每组的第一块中登记了下一组空闲块的块数和块号,第一组的块数和块号登记在专用块中,登记的格式如下:表2-3当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。
2)开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按序排列了。
用二维数组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重新登记一个新组。
(3)采用位示图结构实现磁盘空间的分配和回收磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。
为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可用位示图来指出。
位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。
算法流程图如下:分配流程图如下图2-4:图2-4(2)释放流程图如图:2-4图2-43.详细设计1.采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收文件存储空间管理是文件系统的重要内容。
常用的管理思想有空白文件目录法、空白块链法和位示图法。
本实验采用前两种方法进行空间分配。
空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。
当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。
为此需建立两张表格,分别记录相关数据。
表3-1;空白文件目录表(初始)表3-2;空白文件目录(中间)核心代码int alloc(int applyarea)///为文件分配存储块的函数,磁盘空间的分配{int i,tag=0,j=0,flag=1;for( i=0 ; i< N ; i++ )if(freeblock[i].state==1 && freeblock[i].size > applyarea && flag==1 && freeblock[i].name[wtd]==NULL){freeblock[i].startaddress = freeblock[i].startaddress + applyarea;freeblock[i].size=freeblock[i].size-applyarea;tag=1;/*有满足条件的空闲区时,tag置1*/flag=0;freeblock[i].name[wtd]=fname;printf("$ %c/n",freeblock[i].name);return freeblock[i].startaddress-applyarea;}elseif(freeblock[i].state==1 && freeblock[i].size==applyarea && flag==1 && freeblock[i].name[wtd]==NULL){ freeblock[i].startaddress = freeblock[i].startaddress + applyarea;freeblock[i].size=freeblock[i].size-applyarea;freeblock[i].state=0;flag=0;tag=1;/*有满足条件的空闲区时,tag置1*freeblock[i].name[wtd]=fname}if(tag==0)return -1;}void setfree()///实现磁盘空间的回收{int i,j,k;char s;printf("输入要删除的文件名: /n");getchar();scanf("%c",&s);for(j=0;j<100 ;j++)if(FMenu[j].Fname==s){ break; }for(i=0;i<N;i++){for(k=0;k<100;k++)printf("$ %c %d/n",freeblock[i].name,i);if(freeblock[i].name[k]==s){ freeblock[i].state=1;freeblock[i].startaddress=freeblock[i].startaddress -((int)ceil(FMenu[j].size*1.0/100)) ;freeblock[i].size=freeblock[i].size + ((int)ceil(FMenu[j].size*1.0/100)) ;}}}void print()//打印输出表{int i;printf("\n");printf(" |序号.......第一个空白块......连续空闲块个数......状态.....|");printf("\n");printf(" |..........................................................|"); printf("\n");for(i=0;i<N;i++){printf(" |%3d...........%3d....................%3d.......%3d........|",i,freeblock[i].startaddress,freeblock[i].size,freeblock[i].state); printf("\n");printf(" |..........................................................|"); printf("\n");}}图3-3;初始化格式图3-4;分配磁盘图3-5;回收磁盘2.采用空白块成组链接结构实现磁盘空间的分配和回收;(1) 假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。
UNIX系统中采用空闲块成组链接的方法来管理磁盘存储空间,将磁盘中的每N个空闲块(N<M)分成一组,最后一组可以不足N块,每组的第一块中登记了下一组空闲块的块数和块号,第一组的块数和块号登记在专用块中,登记的格式如下:表3-6;空闲块0 空闲块数k1 空闲块号12 空闲块号2M M M MK 空闲块号k当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。
(2)现模拟UNIX系统的空闲块成组链接,假定共有8块可供使用,每3块为一组,则空闲块成组链接的初始状态为:表3-7;初始化空闲快开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按序排列了。