文件系统存储空间管理模拟实验报告
实验六模拟文件系统

操作系统试验班级:计科0801 姓名:韩伟伟学号:08407106 日期:2011/6/15实验六模拟实现文件系统一.实验目的通过模拟程序实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能,了解文件系统实现的特点,掌握文件系统的各种功能实现方法。
二.实验属性设计三.实验内容模拟实现文件系统问题是一个经典的关于文件的处理问题,包括:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能。
设计思想如下:1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
2.文件物理结构可采用显式链接或其他方法。
3.磁盘空闲空间的管理可选择位示图或其他方法。
如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。
5.设计一个较实用的用户界面,方便用户使用。
要求提供以下相关文件操作:(1)具有login (用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建: create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete(9)列出文件目录:dir(10)退出:logout四.设计思路1.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。
2.系统使用create,open,read,write,close,delete,dir和exit来创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。
3.程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。
存储管理实验报告总结(3篇)

第1篇一、实验背景存储管理是操作系统的重要组成部分,负责对计算机的存储资源进行合理分配、有效利用和保护。
为了加深对存储管理原理和方法的理解,我们进行了存储管理实验,通过编写和调试模拟程序,对存储管理技术进行了深入学习和实践。
二、实验目的1. 理解存储管理的概念、原理和方法。
2. 掌握不同存储管理技术的实现过程。
3. 分析存储管理技术的优缺点,为实际应用提供参考。
三、实验内容1. 可变分区存储管理实验实验目的:了解可变分区存储管理的原理和实现方法。
实验内容:(1)编写程序实现内存空间的分配和回收。
(2)采用最优适应算法、首次适应算法、下次适应算法等,模拟内存分配过程。
(3)分析不同分配算法的性能。
实验结果:通过实验,我们了解了可变分区存储管理的原理和实现方法,并分析了不同分配算法的性能。
2. 分页存储管理实验实验目的:掌握分页存储管理的基本概念和实现方法。
实验内容:(1)编写程序实现内存空间的分配和回收。
(2)采用页式存储管理技术,模拟内存分配过程。
(3)分析页面置换算法的性能,如LRU、FIFO等。
实验结果:通过实验,我们掌握了分页存储管理的基本概念和实现方法,并分析了页面置换算法的性能。
3. 虚拟页式存储管理实验实验目的:了解虚拟页式存储管理的原理和实现方法。
实验内容:(1)编写程序实现虚拟内存的分配和回收。
(2)采用工作集算法、抖动预防等技术,模拟虚拟内存的访问和页面置换过程。
(3)分析虚拟页式存储管理技术的优缺点。
实验结果:通过实验,我们了解了虚拟页式存储管理的原理和实现方法,并分析了其优缺点。
四、实验总结1. 通过本次实验,我们对存储管理技术有了更深入的理解,掌握了不同存储管理技术的实现方法。
2. 实验过程中,我们学会了编写模拟程序,通过程序模拟存储管理过程,验证了存储管理技术的性能。
3. 实验结果分析表明,不同存储管理技术具有不同的优缺点,在实际应用中应根据具体需求选择合适的存储管理技术。
存储管理实验报告

存储管理实验报告存储管理实验报告引言:存储管理是计算机系统中非常重要的一部分,它负责管理计算机系统中的存储资源,包括内存和外存。
合理的存储管理能够提高计算机系统的性能和效率,保证系统的稳定运行。
本次实验旨在通过实践操作,深入了解存储管理的原理和方法,并通过实验结果分析,探讨存储管理的优化策略。
一、实验目的本次实验的主要目的是通过实践操作,深入了解存储管理的原理和方法,并通过实验结果分析,探讨存储管理的优化策略。
具体目标如下:1. 了解存储管理的基本概念和原理;2. 掌握存储管理的常用方法和技术;3. 分析实验结果,探讨存储管理的优化策略。
二、实验环境本次实验使用了一台配置较高的计算机,具备较大的内存和高速的硬盘。
实验环境如下:1. 操作系统:Windows 10;2. 内存:16GB;3. 硬盘:1TB。
三、实验过程1. 内存管理实验在内存管理实验中,我们使用了一段较大的程序代码进行测试。
首先,我们通过编程语言将程序代码写入内存中,然后通过内存管理技术将程序代码加载到内存的合适位置。
在加载过程中,我们使用了分页和分段两种常用的内存管理技术,并比较了它们的性能差异。
实验结果显示,分页技术相对来说更加高效,能够更好地利用内存资源,提高系统的运行速度。
2. 外存管理实验在外存管理实验中,我们模拟了大文件的读写操作。
首先,我们将一个较大的文件写入硬盘中,然后通过外存管理技术将文件加载到内存中进行读取。
在加载过程中,我们使用了磁盘调度算法和文件系统管理技术,并比较了它们的性能差异。
实验结果显示,磁盘调度算法的选择对系统的读写速度有较大的影响,而文件系统的合理管理能够提高文件的存取效率。
四、实验结果分析通过对实验结果的分析,我们可以得出以下结论:1. 内存管理中,分页技术相对于分段技术更加高效,能够更好地利用内存资源,提高系统的运行速度;2. 外存管理中,磁盘调度算法的选择对系统的读写速度有较大的影响,合理选择磁盘调度算法能够提高系统的性能;3. 文件系统的合理管理能够提高文件的存取效率,减少文件的碎片化,提高系统的整体性能。
文件系统管理实训报告

一、实训背景随着信息技术的飞速发展,文件系统作为存储和管理数据的核心,其性能、稳定性和安全性越来越受到重视。
为了提高我们对文件系统管理的理解和实践能力,我们进行了文件系统管理实训。
本次实训以Linux系统下的文件系统管理为主要内容,通过实际操作,加深对文件系统结构、命令、权限管理等方面的认识。
二、实训目标1. 掌握Linux文件系统的基本结构;2. 熟悉常用的文件系统管理命令;3. 理解文件权限和属性的概念;4. 学会文件系统备份与恢复;5. 提高文件系统的安全性和性能。
三、实训内容(一)文件系统结构Linux文件系统采用树状结构,以根目录“/”为起点,所有文件和目录都从根目录开始分层排列。
常见的文件系统结构包括:1. 根目录(/):包含系统中的所有目录和文件;2. 换行目录(/bin、/sbin、/usr):存放常用的系统命令和系统服务;3. 用户目录(/home):存放用户个人文件和目录;4. 临时目录(/tmp):存放临时文件和程序;5. 系统目录(/etc、/var、/opt):存放系统配置文件、日志文件和可选软件包。
(二)文件系统管理命令1. ls:列出目录内容;2. pwd:显示当前目录的绝对路径;3. cd:切换目录;4. mkdir:创建目录;5. rmdir:删除空目录;6. touch:创建空文件;7. rm:删除文件或目录;8. cp:复制文件或目录;9. mv:移动或重命名文件或目录;10. chmod:修改文件权限;11. chown:更改文件所有者;12. chgrp:更改文件所属组。
(三)文件权限和属性Linux文件权限分为三组:所有者、所属组和其他用户。
每组权限包括读(r)、写(w)和执行(x)三种。
通过chmod命令可以修改文件权限,例如:- chmod 755 filename:设置所有者有读、写、执行权限,所属组和其他用户有读、执行权限;- chmod u+x filename:给所有者添加执行权限;- chmod g-w filename:取消所属组的写权限。
内存管理实验报告总结(3篇)

第1篇一、实验背景随着计算机技术的发展,内存管理在操作系统中的地位日益重要。
为了加深对内存管理方案的理解,熟悉虚存管理的各种页面淘汰算法,以及加强对地址转换过程的了解,我们进行了内存管理实验。
二、实验目的1. 通过编写和调试存储管理的模拟程序,加深对存储管理方案的理解;2. 熟悉虚存管理的各种页面淘汰算法;3. 通过编写和调试地址转换过程的模拟程序,加强对地址转换过程的了解。
三、实验内容1. 设计一个请求页式存储管理方案,并编写模拟程序实现;2. 产生一个需要访问的指令地址流,其中50%的指令是顺序执行的,25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分;3. 采用FIFO页面淘汰算法,并在淘汰一页时,只将该页在页表中抹去,不再判断它是否被改写过,也不将它写回到辅存;4. 通过模拟程序,计算不同页面淘汰算法的命中率,并分析用户内存容量对命中率的影响。
四、实验过程1. 设计请求页式存储管理方案,包括页面大小、内存页表的最大长度等参数;2. 编写模拟程序,实现请求页式存储管理方案;3. 生成指令地址流,包括顺序执行、均匀分布在前地址部分和均匀分布在后地址部分的指令;4. 模拟程序运行,观察页面淘汰算法的执行过程,并记录页面失效次数;5. 计算不同页面淘汰算法的命中率,并分析用户内存容量对命中率的影响。
五、实验结果与分析1. 通过实验,我们成功实现了请求页式存储管理方案,并生成了指令地址流;2. 在实验过程中,我们使用了FIFO页面淘汰算法,发现该算法在页面访问局部性较好时,命中率较高;3. 当用户内存容量较小时,页面失效次数较多,导致命中率降低;4. 随着用户内存容量的增加,页面失效次数逐渐减少,命中率逐渐提高。
六、实验结论1. 通过本次实验,我们对内存管理方案有了更深入的理解,熟悉了虚存管理的各种页面淘汰算法;2. 实验结果表明,FIFO页面淘汰算法在页面访问局部性较好时,具有较高的命中率;3. 用户内存容量对页面淘汰算法的命中率有较大影响,随着内存容量的增加,命中率逐渐提高。
文件管理实验报告

文件管理实验报告一、实验目的本次文件管理实验旨在深入了解和掌握文件管理的基本原理和操作方法,提高对文件系统的认识和运用能力,培养良好的文件管理习惯,以提高工作和学习的效率。
二、实验环境操作系统:Windows 10应用软件:资源管理器三、实验内容及步骤(一)文件的创建与命名1、打开资源管理器,选择合适的存储位置(如桌面、D 盘等)。
2、右键单击空白处,选择“新建”,然后根据需要创建文本文档、Word 文档、Excel 表格等不同类型的文件。
3、为创建的文件进行合理的命名,遵循简洁、清晰、有意义的原则,避免使用模糊、无意义或过长的文件名。
(二)文件的复制、移动与删除1、复制文件选中要复制的文件,按下Ctrl +C 组合键或右键单击选择“复制”。
导航到目标位置,按下 Ctrl + V 组合键或右键单击选择“粘贴”。
2、移动文件选中要移动的文件,按下Ctrl +X 组合键或右键单击选择“剪切”。
导航到目标位置,按下 Ctrl + V 组合键或右键单击选择“粘贴”。
3、删除文件选中要删除的文件,按下 Delete 键或右键单击选择“删除”。
在弹出的确认对话框中,选择“是”确认删除。
(三)文件的搜索与查找1、利用资源管理器的搜索功能,在搜索框中输入文件名、关键词或文件类型等信息,快速找到所需文件。
2、学会使用高级搜索选项,如指定搜索范围、修改时间、文件大小等条件,进一步精确搜索结果。
(四)文件的分类与整理1、根据文件的类型(如文档、图片、音频、视频等)、用途(工作、学习、娱乐等)或项目等进行分类。
2、创建不同的文件夹来存放各类文件,并为文件夹进行清晰的命名。
3、将相关文件移动到对应的文件夹中,保持文件系统的整洁和有序。
(五)文件的备份与恢复1、选择重要的文件或文件夹,将其复制到外部存储设备(如 U 盘、移动硬盘)或云存储服务(如百度网盘、OneDrive)中进行备份。
2、模拟文件丢失或损坏的情况,从备份中恢复文件,验证备份的有效性。
操作系统文件管理系统模拟实验

操作系统文件管理系统模拟实验在计算机科学中,操作系统是一种系统软件,负责管理计算机硬件和软件资源,并为用户和应用程序提供接口。
文件管理系统是操作系统的一个重要组成部分,它负责管理计算机系统中的文件和目录,以及提供对它们的访问和操作。
本次实验旨在模拟操作系统中文件管理系统的基本功能和操作。
我们将使用一个虚拟的文件系统,通过命令行界面来模拟用户与文件系统的交互。
以下是实验的具体内容和步骤:1. 创建虚拟文件系统首先,我们需要创建一个虚拟的文件系统。
文件系统由文件和目录组成,可以通过树状结构来表示。
我们可以使用一个数据结构来模拟文件系统的存储和管理。
2. 初始化文件系统在开始操作文件系统之前,我们需要初始化文件系统。
这包括创建根目录和设置当前目录为根目录。
3. 文件和目录的创建与删除文件和目录是文件系统的基本单位。
我们可以通过命令来创建和删除文件和目录。
例如,使用"mkdir"命令创建一个目录,使用"touch"命令创建一个空文件,使用"rm"命令删除文件或目录。
4. 文件和目录的访问权限文件和目录可以设置不同的访问权限,以保护文件系统的安全性。
我们可以使用"chmod"命令来修改文件或目录的权限。
权限通常包括读、写和执行权限。
5. 文件和目录的重命名和移动我们可以使用"mv"命令来重命名文件或目录,使用"cp"命令来复制文件或目录,使用"mv"命令来移动文件或目录。
6. 文件和目录的查找和显示我们可以使用"ls"命令来显示当前目录下的文件和目录,使用"cd"命令来切换当前目录,使用"pwd"命令来显示当前目录的路径。
此外,我们还可以使用"find"命令来查找文件或目录。
7. 文件和目录的读写操作文件可以被读取和写入。
操作系统文件管理系统模拟实验

操作系统文件管理系统模拟实验操作系统文件管理系统模拟实验一、实验目的本实验旨在通过模拟操作系统的文件管理系统,加深对操作系统文件管理的理解,锻炼操作系统的应用能力。
二、实验环境1、操作系统:Windows/Linux/MacOS2、编程语言:C/C++/Java/Python等三、实验内容1、初始化文件管理系统1.1 创建根目录,并初始化空文件目录1.2 初始化用户目录和权限设置2、文件操作2.1 创建文件2.1.1 检查文件名合法性2.1.2 检查文件是否已存在2.1.3 为新文件分配磁盘空间2.1.4 添加文件元数据信息2.2 打开文件2.2.1 检查文件是否存在2.2.2 检查用户权限2.3 读取文件内容2.3.1 读取文件权限检查2.3.2 读取文件内容2.4 写入文件内容2.4.1 写入文件权限检查2.4.2 写入文件内容2.5 删除文件2.5.1 检查文件是否存在2.5.2 检查用户权限2.5.3 释放文件占用的磁盘空间2.5.4 删除文件元数据信息3、目录操作3.1 创建子目录3.1.1 检查目录名合法性3.1.2 检查目录是否已存在3.1.3 添加目录元数据信息3.2 打开目录3.2.1 检查目录是否存在3.2.2 检查用户权限3.3 列出目录内容3.3.1 列出目录权限检查3.3.2 列出目录内容3.4 删除目录3.4.1 检查目录是否存在3.4.2 检查用户权限3.4.3 递归删除目录下所有文件和子目录3.4.4 删除目录元数据信息四、实验步骤1、根据实验环境的要求配置操作系统和编程语言环境。
2、初始化文件管理系统,创建根目录,并初始化用户目录和权限设置。
3、进行文件操作和目录操作。
五、实验结果分析根据实验步骤进行文件操作和目录操作,观察系统的运行情况并记录相关实验结果。
六、实验结论通过本实验,深入了解了操作系统中文件管理系统的相关原理和实现方式,并且通过实验操作进一步巩固了相应的应用能力。
简单文件系统模拟实验

简单文件系统模拟实验实验目的通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统功能和实现过程的理解。
实验内容▪在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。
在退出这个简单文件系统时,应将该虚拟文件系统保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘上。
▪文件存储空间的分配可以采用显式链接分配或其它方法。
▪空闲空间的管理可以选择位示图或其它方法。
如果采用位示图来管理文件存储空间,并采用显式链接分配方式,可以将位示图合并到FAT中。
▪文件目录结构采用多级目录结构。
为简单起见,可以不使用索引结点,其中的每个目录项包含文件名、物理地址、文件长度等信息,还可以通过目录项实现对文件读和写的保护。
▪要求提供以下有关的文件操作:✧Format:对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。
✧Mkdir:用于创建子目录。
✧Rmdir:用于删除子目录。
✧Ls:用于显示目录。
✧Cd:用于更改当前目录。
✧Create:用于创建文件。
✧Open:用于打开文件。
✧Close:用于关闭文件。
✧Write:用于写文件。
✧Read:用于读文件。
✧Rm:用于删除文件。
数据结构设计磁盘:整个磁盘为一个char数组,数组中的每一个元素当做是一个扇区,每个扇区可以存储1个字节的信息,簇大小为8字节。
FAT表:存储的是指定编号的簇的下一个簇的编号是什么,因为文件是有可能分散在很多的簇里。
文件和文件夹链表:设计为静态链表,每个文件夹都会有一个子目录列表,存在链表中。
文件和目录表:文件和目录相同对待,信息存放在文件目录表中,为一个数组类型。
以上所有的信息存放在一个fs结构体中,所有的结构都为静态实现,所以需要将文件系统存放到磁盘中的时候只需要将整个结构体以二进制性质存放到文件中或者是将从文件中以二进制形式读取。
模拟储存技术实验报告

一、实验目的1. 了解模拟存储技术的概念和原理;2. 掌握模拟存储器的基本结构和功能;3. 通过实验验证模拟存储技术的性能特点;4. 分析模拟存储技术在现代计算机系统中的应用。
二、实验环境1. 实验平台:PC机2. 实验软件:C++ Builder3. 实验工具:Visual Studio三、实验原理模拟存储技术是一种在计算机系统中实现存储器虚拟化的技术。
通过模拟存储器,计算机可以实现对物理存储器的高效管理和利用。
模拟存储技术主要包括以下几种:1. 虚拟存储器:通过将物理内存和硬盘存储空间结合起来,实现大容量内存的模拟;2. 页面置换算法:根据页面访问的频率和顺序,选择合适的页面进行置换,以提高内存利用率;3. 快速缓存:通过将频繁访问的数据存储在快速缓存中,减少对物理内存的访问次数。
四、实验内容1. 模拟存储器的基本结构设计(1)设计模拟存储器的基本结构,包括物理内存、硬盘存储空间、虚拟内存和页面置换算法等模块;(2)实现模拟存储器的初始化、数据读写、页面置换等功能。
2. 页面置换算法的实现(1)实现三种页面置换算法:FIFO、LRU和OPT;(2)对每种算法进行性能分析,包括缺页率和页面命中率等指标。
3. 快速缓存的设计与实现(1)设计快速缓存的结构,包括缓存大小、替换策略等;(2)实现快速缓存的数据读写、替换等功能。
4. 模拟存储技术的应用实例(1)模拟一个简单的计算机系统,包括CPU、内存、硬盘等模块;(2)在计算机系统中应用模拟存储技术,实现虚拟内存和快速缓存等功能;(3)通过实验验证模拟存储技术在计算机系统中的应用效果。
五、实验步骤1. 设计模拟存储器的基本结构,实现初始化、数据读写、页面置换等功能;2. 实现三种页面置换算法:FIFO、LRU和OPT,并分析其性能;3. 设计快速缓存的结构,实现数据读写、替换等功能;4. 模拟一个简单的计算机系统,应用模拟存储技术,实现虚拟内存和快速缓存等功能;5. 对实验结果进行分析,总结模拟存储技术的性能特点和应用效果。
文件系统存储空间管理模拟实验报告

课程名称计算机操作系统实验名称文件系统存储空间管理模拟姓名____________________ 学号_______________________________ 专业班级_________________ 实验日期____________________________ 成绩______________________ 指导老师_________________________一、实验目的根据提出的文件分配和释放请求,动态显示磁盘空闲空间的态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。
二、实验原理用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。
当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。
三、主要仪器设备PC机(含有VC)四、实验内容与步骤实验内容:1.模拟文件空间分配、释放过程,可选择连续分配、链式分配、索引分配方法;2.文件空闲空间管理,可采用空白块链、空白目录、位示图方法;步骤如下:1.输入磁盘基本信息参数,计算位示图大小,并随机初始化位示图;(1)磁盘基本信息:磁盘柱面数m,每柱面磁道数p,每磁道物理块数q;(2)假设采用整数数组存放位示图,则数组大小为:Size= ceil ((柱面数*每柱面磁道数*每磁道物理块数)/ (sizeof(int)*8 ))(3)申请大小为size的整数数组map,并对其进行随机初始化。
例如:假设m=2, p=4, q=8, 共有64个磁盘块,若sizeof(int)=2, 则位示图大小为4,map[4]如下:位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。
存储管理实验报告心得(3篇)

第1篇随着计算机技术的发展,存储管理在操作系统中的作用日益凸显。
通过本次存储管理实验,我对存储管理有了更加深入的理解和认识。
以下是我在实验过程中的心得体会。
一、实验目的与背景本次实验旨在通过模拟操作系统中的存储管理过程,加深对存储管理机制、页面置换算法和地址转换等概念的理解。
实验背景为虚拟存储器,即通过将部分数据从硬盘调入内存,实现内存大小的扩充,从而提高系统性能。
二、实验内容与方法1. 实验内容本次实验主要包含以下内容:(1)模拟分页式存储管理中硬件的地址转换和产生缺页中断。
(2)选择页面调度算法处理缺页中断,如FIFO、LRU等。
(3)通过模拟程序,观察不同页面置换算法对系统性能的影响。
2. 实验方法(1)设计模拟程序,模拟操作系统中的地址转换过程。
(2)实现页面置换算法,如FIFO、LRU等。
(3)分析不同页面置换算法对系统性能的影响,如缺页中断次数、命中率等。
三、实验心得1. 理解存储管理机制通过本次实验,我对存储管理机制有了更加深入的认识。
存储管理主要负责内存空间的分配、回收和扩展,确保程序正常运行。
在虚拟存储器中,通过将部分数据从硬盘调入内存,实现内存大小的扩充,从而提高系统性能。
2. 掌握页面置换算法页面置换算法是存储管理中的重要组成部分,它决定了内存中页面的替换策略。
本次实验中,我实现了FIFO、LRU等页面置换算法,并通过模拟程序观察了不同算法对系统性能的影响。
实验结果表明,不同页面置换算法对系统性能的影响较大,合理选择页面置换算法对提高系统性能至关重要。
3. 理解地址转换过程在虚拟存储器中,地址转换过程是将逻辑地址转换为物理地址。
通过本次实验,我了解了地址转换的过程,包括页表查找、地址映射等。
这对我理解操作系统中的内存管理机制具有重要意义。
4. 深化对存储器管理的认识通过本次实验,我认识到存储器管理在操作系统中的重要性。
合理的存储器管理可以提高系统性能、降低内存碎片、提高内存利用率等。
文件管理实验报告结果(3篇)

第1篇一、实验目的本次实验旨在通过实际操作,验证文件管理的有效性和可行性,并对文件管理系统的性能进行评估。
通过实验,了解文件管理的相关原理和方法,提高文件管理的实践能力。
二、实验环境1. 操作系统:Windows 102. 文件管理系统:Windows文件管理器3. 实验数据:实验过程中产生的文件和数据三、实验内容1. 文件创建与删除2. 文件夹创建与删除3. 文件与文件夹的复制、移动、重命名4. 文件属性的设置与修改5. 文件搜索与查找6. 文件权限管理7. 文件压缩与解压四、实验步骤1. 文件创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件.txt”的文本文件。
(2)在“实验文件.txt”上右击,选择“删除”,确认删除。
2. 文件夹创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件夹”的文件夹。
(2)在“实验文件夹”上右击,选择“删除”,确认删除。
3. 文件与文件夹的复制、移动、重命名(1)将“实验文件.txt”复制到“实验文件夹”中。
(2)将“实验文件.txt”移动到桌面。
(3)将“实验文件.txt”重命名为“实验文件修改.txt”。
4. 文件属性的设置与修改(1)在“实验文件修改.txt”上右击,选择“属性”,设置文件属性为“只读”。
(2)修改“实验文件修改.txt”的属性为“隐藏”。
5. 文件搜索与查找(1)在Windows文件管理器中,输入“实验文件”进行搜索。
(2)使用“查找”功能,查找“实验文件修改.txt”。
6. 文件权限管理(1)在“实验文件夹”上右击,选择“属性”,点击“安全”标签。
(2)添加用户权限,设置权限为“完全控制”。
7. 文件压缩与解压(1)将“实验文件夹”压缩为“实验文件夹.zip”。
(2)解压“实验文件夹.zip”到指定位置。
五、实验结果与分析1. 文件创建与删除:实验成功创建和删除了文件,验证了文件管理的可行性。
2. 文件夹创建与删除:实验成功创建和删除了文件夹,验证了文件管理的可行性。
文件系统实验报告

一、实验目的1. 理解文件系统的基本概念和组成。
2. 掌握文件系统的创建、删除、修改和查询等基本操作。
3. 了解文件系统的性能分析和优化方法。
4. 提高对文件系统原理的理解和实际操作能力。
二、实验环境1. 操作系统:Windows 102. 文件系统:NTFS3. 实验软件:Windows资源管理器、Notepad++等三、实验内容1. 文件系统的基本概念和组成(1)文件:存储在文件系统中的数据单元,可以是程序、文档、图片等。
(2)目录:用于组织文件的结构,类似于文件夹。
(3)文件系统:管理存储设备上文件和目录的数据结构。
2. 文件系统的创建、删除、修改和查询等基本操作(1)创建文件:使用Notepad++创建一个名为“test.txt”的文本文件。
(2)创建目录:在Windows资源管理器中,创建一个名为“test”的目录。
(3)删除文件:选中“test.txt”文件,按Delete键删除。
(4)删除目录:选中“test”目录,按Delete键删除。
(5)修改文件:使用Notepad++打开“test.txt”文件,修改内容后保存。
(6)查询文件:在Windows资源管理器中,通过路径或搜索功能查找“test.txt”文件。
3. 文件系统的性能分析和优化方法(1)查看磁盘空间使用情况:在Windows资源管理器中,选中磁盘分区,查看磁盘空间使用情况。
(2)清理磁盘:使用Windows自带的磁盘清理工具清理磁盘垃圾文件。
(3)优化文件系统:使用Windows自带的磁盘碎片整理工具优化文件系统。
四、实验结果与分析1. 创建文件和目录实验结果显示,使用Notepad++创建了一个名为“test.txt”的文本文件,使用Windows资源管理器创建了一个名为“test”的目录。
2. 删除文件和目录实验结果显示,成功删除了“test.txt”文件和“test”目录。
3. 修改文件实验结果显示,使用Notepad++修改了“test.txt”文件的内容,并成功保存。
文件系统实验报告

试验四文件系统之马矢奏春创作一、二、实验目的1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操纵命令的实质内容和执行过程有比较深入的了解。
2、要求设计一个n个用户的文件系统,每次用户可以保管M个文件。
用户在一次运行中只能打开一个文件,对文件必须设置呵护措施,且至少有create、delete、open、close、read、write等命令。
三、实验题目:采取二级目录结构实现磁盘文件操纵。
要求:1.普通文件的目录项包含文件名,文件类型,文件长度,指向文件内容的指针内容。
2.目录文件的目录项包含目录名,指向下一级目录块的指针内容。
假定每个目录文件最多只能占用一个块;3.程序功能方面的要求:需要实现一个命令行操纵界面,包含如下命令:4.程序实现方面的要求:(1)、对于重名(创建时),文件不存在(删除时),目录不存在(改变目录时)等错误操纵情况,程序应该做出相应处理并给出错误信息,但是程序不得因此而退出。
(2)、界面友好,程序强壮。
(3)、设置界面的提示符,提示的命令以及调试的方法应和前面的要求一致。
不要自己设计命令或者附加不要求的功能。
:执行文件名:Project1.exe四.实验分析1)总论:该系统是一个多用户、多任务的实时操纵系统。
对用户和用户的文件数目并没有上限。
也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目其实不做任何的限制。
该系统的操纵命令如下:①、bye-用户注销命令。
当使用该命令时,用户退出系统。
命令格式:run\bye↙系统注销该用户并回到登陆界面。
②、close-删除用户注册信息命令。
执行该命令后,用户在系统中的所有信息,包含该用户目录下的所有文件都被删除。
命令格式:run\close↙.完成后返回登陆界面。
③、create-在当前目录下创建一个文件,且该文件不克不及跟系统中的文件重名。
该文件的管理信息登录到用户文件信息管理模块中。
命令格式:run\create>file1↙。
文件存储实验报告

实验目的:通过本次实验,了解文件存储的基本原理,掌握文件存储系统的组成和功能,熟悉不同文件存储方式的优缺点,并能够对文件存储系统进行性能测试和优化。
实验时间:2023年3月15日实验地点:计算机实验室实验器材:1. 计算机(配备Windows操作系统)2. 文件存储设备(如硬盘、固态硬盘、U盘等)3. 文件存储管理软件(如Windows资源管理器、Disk Management等)4. 文件压缩软件(如WinRAR等)实验内容:一、文件存储系统组成及功能1. 文件存储系统组成:(1)硬件:硬盘、固态硬盘、U盘等存储设备;(2)软件:操作系统中的文件系统、文件存储管理软件等。
2. 文件存储系统功能:(1)存储:将文件数据存储在存储设备上;(2)管理:对存储在设备上的文件进行分类、排序、检索、备份等操作;(3)保护:防止文件数据丢失、损坏,确保数据安全;(4)优化:提高文件存储系统的性能。
二、文件存储方式1. 磁盘存储方式:(1)优点:容量大、读写速度快、易于扩展;(2)缺点:存储速度受磁盘转速、寻道时间等因素影响。
2. 固态硬盘存储方式:(1)优点:读写速度快、无机械磨损、功耗低、体积小;(2)缺点:容量相对较小、价格较高。
3. U盘存储方式:(1)优点:携带方便、容量适中、易于扩展;(2)缺点:读写速度较慢、容量有限。
三、文件存储性能测试1. 测试工具:使用CrystalDiskMark软件进行测试。
2. 测试方法:(1)将测试文件复制到硬盘、固态硬盘、U盘中;(2)使用CrystalDiskMark软件分别对三种存储方式进行读写速度测试;(3)记录测试结果。
3. 测试结果分析:(1)硬盘:读写速度约为100MB/s;(2)固态硬盘:读写速度约为500MB/s;(3)U盘:读写速度约为20MB/s。
四、文件存储优化1. 合理分配磁盘空间:根据文件类型和用途,合理分配磁盘空间,提高磁盘利用率。
2. 定期整理磁盘:删除无用的文件,清理磁盘碎片,提高文件访问速度。
内存模拟管理实验报告

内存模拟管理实验报告引言内存管理是操作系统中重要的一部分,它负责管理计算机的内存资源,合理地分配和回收内存空间。
本实验旨在模拟内存管理过程,通过对内存分配、回收和置换算法的模拟实验,加深对内存管理的理解。
实验目的通过本实验,我们的目标是:1. 掌握内存分配、回收和置换算法的基本原理;2. 理解不同的内存管理算法的特点和适用场景;3. 学会使用模拟软件进行内存管理实验。
系统设计本实验采用基于模拟软件的方式进行,我们使用了一款常用的内存管理模拟软件——MemSim。
该软件可以模拟内存的分配、回收和置换算法,并根据实验结果生成相应的性能报告。
首先,我们在MemSim中设计了一个包含若干作业和内存分区的实验环境。
我们可以设置不同的作业大小和内存分区大小,以及各种不同的内存分配、回收和置换算法。
实验过程首先,我们设计了三种内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)和最坏适应算法(Worst Fit)。
我们分别选择了一组作业和一组内存分区,并使用这三种算法进行内存分配测试。
我们观察到:- 首次适应算法往往会使碎片数量较少,但存在大量分散的小碎片;- 最佳适应算法分配的内存分区较为紧凑,但会导致外部碎片的增加;- 最坏适应算法可以很好地避免外部碎片的产生,但会导致更多的内部碎片。
接下来,我们针对内存回收算法进行了实验。
我们测试了随时间回收算法(FIFO)和优先级回收算法(Priority)两种算法,并选择了不同的作业和内存分区进行了测试。
我们观察到:- 随时间回收算法在作业的运行时间较长的情况下,表现较好;- 优先级回收算法可以根据作业的优先级来选择回收内存,适合于具有不同优先级的作业。
最后,我们还对内存置换算法进行了实验。
我们测试了最先进入先出算法(FIFO)和最不常使用算法(LFU)。
我们选择了一组较大的内存分区,并模拟了一组较大的作业。
通过实验,我们了解到:- 最先进入先出算法可以很好地保证作业的执行顺序,但会导致较高的缺页率;- 最不常使用算法可以合理地选择置换页面,但会增加算法的复杂度。
文件管理实验报告

文件管理实验报告文件管理实验报告一、引言文件管理是计算机科学中一个重要的领域,它涉及到对文件的创建、存储、检索和删除等操作。
在这个实验中,我们将通过模拟文件管理系统来了解文件管理的基本原理和技术。
二、实验目的本实验的主要目的是通过设计和实现一个简单的文件管理系统,加深对文件管理的理解,并掌握文件的创建、读写、删除等基本操作。
三、实验过程1. 文件的创建在文件管理系统中,文件的创建是一个重要的操作。
我们首先需要确定文件的名称和文件的类型。
在实验中,我们选择了一个文本文件作为示例。
通过调用系统提供的文件创建函数,我们可以在指定的目录下创建一个新的文本文件。
2. 文件的读写文件的读写是文件管理的核心操作之一。
在实验中,我们使用了C语言的文件读写函数来实现对文件的读写操作。
首先,我们需要打开文件,然后可以使用读取函数来读取文件中的内容,或者使用写入函数来向文件中写入内容。
最后,我们需要关闭文件,以确保文件的完整性和安全性。
3. 文件的删除文件的删除是一个常见的操作。
在实验中,我们通过调用系统提供的文件删除函数来删除指定的文件。
在删除文件之前,我们需要确保文件已经关闭,并且没有其他进程正在使用该文件。
通过删除文件,我们可以释放磁盘空间,并且保持文件系统的整洁。
四、实验结果通过实验,我们成功地创建了一个简单的文件管理系统,并实现了文件的创建、读写和删除等基本操作。
我们可以通过系统提供的命令来查看文件的属性和内容,以及进行其他操作。
五、实验总结通过这次实验,我们深入了解了文件管理的原理和技术。
文件管理是计算机科学中一个重要的领域,它涉及到对文件的创建、存储、检索和删除等操作。
掌握文件管理的基本原理和技术对于我们理解计算机系统的运行机制和提高工作效率都具有重要意义。
在实验中,我们通过设计和实现一个简单的文件管理系统,加深了对文件管理的理解,并掌握了文件的创建、读写、删除等基本操作。
通过实验结果的验证,我们证明了文件管理系统的可行性和有效性。
模拟文件系统实验报告

操作系统大型试验实验报告姓名:XX班级:软件工程110x学号:201126630xxx一、名称操作系统大型试验。
二、目的用C++编写出一个简单的模拟文件系统,实现目录的添加、删除、重命名,文件的添加、删除、重命名、文件和目录、文件的拷贝。
三、要求开发工具:word,vc win32api1.设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存储2.文件系统的目录结构采用类似Linux的树状结构;3.要求模拟的操作包括:a)目录的添加、删除、重命名;b)目录的显示(列表)c)文件的添加、删除、重命名d)文件和目录的拷贝4.用户进入时显示可用命令列表;用户输入help时显示所有命令的帮助文档;输入某个命令+?时显示该条命令的使用说明5.用户输入exit时退出该系统6.实验实现基于windows平台;7.实验开发语言可以选用C/c++等四、设计1.主要思路说明本模拟系统通过一个大小固定的数组要代表物理盘块,假设共有1024块,新增目录占一块,新增文件占一块,文件中可输入内容,内容假设定义为5个字符占一块,超出则应新申请空间。
模拟物理盘块的数组中,数组内容为-99代表改物理盘块内容为空,可使用,其他数字均代表该物理盘块被占用,其中-3代表是占用文件的末结点,其他整数代表是文件内容的下一个寻址下标,另有一个string类型的数组来存储内容,模拟文件写入了对应下标的物理盘块中。
设置了一个全局指针指向根结点,一个全局指针指向当前操作目录。
搜索空白物理盘块时采用顺序搜索物理盘块数组。
存储形式主要采用类似二叉树结构,如目录为根,目录下的第一个文件或目录存在根的子节点,目录下的其他文件或目录存在第一个文件或目录的兄弟节点,以此类推。
本程序仅seperate()函数使用现成代码,此函数功能为将输入命令串分离,仅仅起到美观作用,其余所有代码均为原创!2.申优功能:1)能实现动态增长,即当输入文件的内容大小大于分配的模拟物理盘块时系统能够自动寻找空物理盘块并分配,将超出的内容保存在新的物理盘块中,若超出模拟磁盘大小,则超出部分不保存且返回提示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称计算机操作系统实验名称文件系统存储空间管理模拟姓名____________________ 学号_______________________________ 专业班级_________________ 实验日期____________________________ 成绩______________________ 指导老师_________________________一、实验目的根据提出的文件分配和释放请求,动态显示磁盘空闲空间的态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。
二、实验原理用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。
当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。
三、主要仪器设备PC机(含有VC)四、实验内容与步骤实验内容:1.模拟文件空间分配、释放过程,可选择连续分配、链式分配、索引分配方法;2.文件空闲空间管理,可采用空白块链、空白目录、位示图方法;步骤如下:1.输入磁盘基本信息参数,计算位示图大小,并随机初始化位示图;(1)磁盘基本信息:磁盘柱面数m,每柱面磁道数p,每磁道物理块数q;(2)假设采用整数数组存放位示图,则数组大小为:Size= ceil ((柱面数*每柱面磁道数*每磁道物理块数)/ (sizeof(int)*8 ))(3)申请大小为size的整数数组map,并对其进行随机初始化。
例如:假设m=2, p=4, q=8, 共有64个磁盘块,若sizeof(int)=2, 则位示图大小为4,map[4]如下:位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。
即map[0]的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map[1]的第0位到第15位对应16号磁盘块到31号磁盘块的状态,以此类如上表所示,29号磁盘的状态存在map[1]中,对应于第13位; 2. 输出初始位示图信息; 3. 输入文件分配或释放请求,(1)格式:+ 文件名 申请块数” 或 “-文件名”+ ”表示申请文件分配,-”表示删除文件 如:+ F1 54.根据请求完成相应操作。
(1)若为分配申请x 个盘块,则在位示图中找到x 个为0的位,将其修改为 1”,计算相应具体物理设备的柱面号C 、磁道号H 和物理块号R ,并将CHR 地 址或相对磁盘块号记录在文件目录中。
输出位示图修改位置、分配的磁盘块CHR 地址、修改后的目录和位示图信息。
否则,空间不够,退出执行下一条请求;计算公式如下:a. 已知位示图中的下标i , j,计算相对块号Block= i*sizeof ( int )*8+j b. 已知相对块号计算柱面、磁道、物理块号如下:柱面号C=相对块号/(每柱面磁道数*每磁道物理块数)磁道号H=相对块号% (每柱面磁道数*每磁道物理块数)/每磁道物 理块数 物理块号R=相对块号%每磁道物理块数文件目录如下(以索引表分配为例):(2)若为删除申请,则从目录中找到要删除的文件所在的目录项,读取索引 表,依次读取文件相应的盘块CHR 地址,计算该盘块的相对磁盘块号,再计算其相应信息 在位示图中的位置(i,j ),将位示图中的相应位有“1”改为0”,并从目录中删除该 目录项。
输出删除的磁盘块 CHR 地址、相应位示图修改位置、修改过的位示图和目录。
计算过程如下:相对磁盘块号=柱面号*每柱面磁道数*每磁道物理块数+ 磁道号*每磁道物理块数+物理块号i =相对磁盘块号/ (sizeof(int)*8)j =相对磁盘块号% (sizeof(int)*8)五、实验流程图f=f+l▼文flS-File存入系统'S-File 为支件名* M为申请块数1T置空白区号f=lN诫后一个空口坯次无法分配N区号1YT保存空白区.首块号理空白匿f<的块数PM*修改空闲目录表前首块号和块数图一文件空闲区分配算法空白文件中增加一豪H 0T 块号寸 丿栏中首決号不变/拦中寺白块曾+ 7+1)拦中 空向块ITT丽陳/+[栏杀目图二文件空闲区回收算法円+1请求剧除一牛文件释放空剧齊卒白文件冃录表丿崔屮块塹 丿栏申當块吕=F*r*uNNu+i )rd-ny?'仅有H 邻Fg 中首块号+ j 栏空白块牡十】¥ 有上郛有上邻也有下郭yE 空口块數+日六、实验代码#i nclude "stdio.h"#i nclude <stdlib.h>#in elude <coni o.h>#in elude <stri ng.h>int physic[100]; //文件地址缓冲区int style=1; //文件的类型char cur_dir[10]="root"; // 当前目录struct comma nd{char com[10];}cmd[13];struct block{ int n; //空闲的盘快的个数int free[50]; //存放空闲盘快的地址int a; //模拟盘快是否被占用}memory[20449];struct block_super{int n; //空闲的盘快的个数int free[50]; //存放进入栈中的空闲块int stack[50]; //存放下一组空闲盘快的地址}super_block;struct node //i 结点信息{int file_style; //i结点文件类型int file_length; //i结点文件长度int file_address[100]; //i结点文件的物理地址} i_n ode[640];struct dir //目录项信息{char file_name[10]; // 文件名int i_num; //文件的结点号char dir_name[10]; //文件所在的目录} root[640];void format。
// 格式化{int i,j,k;super_block .n=50;for(i=6i<50;i++) //超级块初始化{ super_block.free[i]=i; //存放进入栈中的空闲块super_block.stack[i]=50+i; // 存放下一组的盘块}-for(i=0;i<640;i++) //i结点信息初始化{for(j=0;j<100;j++){i_no de[i].file_address[j]=-1;// 文件地址}- -i_node[i].file_le ngth=-1; // 文件长度i_node[i].file_style=-1; // 文件类型}- -for(i=0;i<640;i++) //根目录区信息初始化{strcpy(root[i].file_ name,"");root[i].i_ num=-1;strcpy(root[i].dir_ name,"");} -for(i=0;i<20449;i++) // 存储空间初始化{memory"]. n=0; // 必须有这个memory[i].a=0;for(j=0;j<50;j++){memory[i].free[j]=-1;}}for(i=0;i<20449;i++) //将空闲块的信息用成组链接的方法写进每组的最后一个块中{ //存储空间初始化if((i+1)%50==0){k=i+1;for(j=0;j<50;j++){if(k<20450){memory[i].free[j]=k;〃下一组空闲地址memory"].n++; //下一组空闲个数注意在memory"].n++之前要给其赋初值k++;}else{memory[i].free[j]=-1;}}memory[i].a=0; //标记为没有使用con ti nue; //处理完用于存储下一组盘块信息的特殊盘块后,跳过本次循环}for(j=0;j<50;j++){memory[i].free[j]=-1;}memory[i]. n=0;}printf(”已经初始化完毕\n”);printf(” 进入UNIX 文件模拟....... \n\n");}void write_file(FILE *fp) //将信息读入系统文件中{int i;fp=fope n("system","wb");for(i=0;i<20449;i++){ fwrite(&memory[i],sizeof(struct block),1,fp);}fwrite(&super_block,sizeof(struct block_super),1,fp);for(i=0;i<640;i++){write(&i_no de[i],sizeof(struct no de),1,fp);}-for(i=0;i<640;i++){ fwrite(&ro ot[i],sizeof(struct dir),1,fp);}fclose(fp);}void read_file(FILE *fp) //读出系统文件的信息{ int i;fp=fope n( "system","rb");for(i=0;i<20449;i++){fread(&memory[i],sizeof(struct block),1,fp);}fread( &super_block,sizeof(struct block_super),1,fp);for(i=0;i<640;i++){ fread(&i_no de[i],sizeof(struct no de),1,fp);} -for(i=0;i<640;i++){fread(&ro ot[i],sizeof(struct dir),1,fp);}fclose(fp);}void callback(int length) // 回收磁盘空间{ int i,j,k,m,q=0;for(i=le ngth_1;i>=O;i__){k=physic[i]; //需要提供要回收的文件的地址m=49-super_block.n; //回收到栈中的哪个位置if(super_block.n==50) // 注意当super_block.n==50 时m=-1;的值{ //super_block. n==50 的时候栈满了,要将这个栈中的所有地址信息写进下一个地址中for(j=0;j<50;j++){memory[k].free[j]=super_block.free[j];} -super_block .n=0;memory[k]. n=50;}memory[k].a=0;if(m==-1){ m=49; //将下一个文件地址中的盘块号回收到栈底中,这个地址中存放着刚才满栈的地址的信息}super_block.free[m]=physic[i]; // 将下一个文件地址中的盘块号回收到栈中super_block .n++;}-}void allot(i nt len gth) // 分配空间{ int i,j,k,m,p;for(i=0;i<le ngth;i++){k=50-super_block. n; //超级块中表示空闲块的指针m=super_block.free[k]; //栈中的相应盘块的地址p=super_block.free[49]; //栈中的最后一个盘块指向的地址if(m==-1||memory[p].a==1) //检测是否还有下一组盘块{printf(”内存不足,不能够分配空间\n");callback(le ngth);break;}if(super_block .n==1){-memory[m].a=1; //将最后一个盘块分配掉physic[i]=m;super_block .n=0;for(j=0;j<memory[m]. n;j++) // 从最后一个盘块中取出下一组盘块号写入栈中{super_block.free[j]=memory[m].free[j];super_block .n++;}-continue; //要跳过这次循环,下面的语句在IF中已经执行过}physic[i]=m; //栈中的相应盘块的地址写进文件地址缓冲区memory[m].a=1;super_block .n--;}-}void create_file(char filename[],int length) // 创建文件{ -int i,j;for(i=0;i<640;i++){if(strcmp(file name,root[i].file_ name)==0){printf(”文件已经存在,不允许建立重名的文件\n");return;}}for(i=0;i<640;i++){if(root[i].i_ num==_1){ -root[i].i_ num=i;strcpy(root[i].file_ name,file name);strcpy(root[i].dir_name,cur_dir); //把当前目录名给新建立的文件i_no de[i].file_style=style;i_no de[i].file_le ngth=le ngth;allot(le ngth);for(j=0;j<le ngth;j++){i_no de[i].file_address[j]=physic[j];}- -break;}}}void create_dir(char file name[]) // 仓U建目录{style=0; 〃0代表文件类型是目录文件create_file(file name,4);style=1; //用完恢复初值,因为全局变量,否则}void del_file(char filename[]) // 删除文件{-int i,j,k;for(i=0;i<640;i++){if(strcmp(file name,root[i].file _n ame)==0){ -k=root[i].i_ num;for(j=0;j<i_ no de[k].file_le ngth;j++){ - -physic[j]=i_ no de[k].file_address[j];} - -callback(i_node[k].file_length); // 调用回收函数for(j=0;j<100;j++) - //删除文件后要将文件属性和目录项的各个值恢复初值{i_node[k].file_address[j]=-1; // 地址恢复初值}- -strcpy(root[i].file_ name,""); // 文件名恢复初值root[i].i_num=-1; //目录项的I结点信息恢复初值strcpy(root[i].dir_name,""); //目录项的文件目录信息恢复初值i_no de[k].file_le ngth=-1; // 文件长度恢复i_no de[k].file_style=-1; // 文件类型恢复初值break;}}if(i==640){printf("不存在这个文件\n");}}void del_dir(char filename[]) //删除目录需要判断目录下时候为空,不为空就不删除{int i,j,k;for(i=0;i<640;i++) //还要加条件判断要删除的目录是不是当前目录{k=root[i].i_num; //找到目录名字if( strcmp(root[i].file_ name,file name)==O && strcmp(cur_dir,file name)!=O &&(i_node[k].file_style)==0)"{ -for(j=0;j<640;j++){if(strcmp(file name,root[j].dir_ name)==O){ -printf("目录不为空不能直接删除\n");break;}}if(j==640){del_file(file name);break;}break;}}if(i==640){printf("这个不是目录文件或者不存在这个目录,或者你要删除的是当前目录\n");}}void display_curdir() //显示当前目录下的文件列表{ -int i,k;printf("\t\t文件名字文件类型文件长度所属目录\n");for(i=0;i<640;i++){if(strcmp(cur_dir,root[i].dir_name)==0) //查询文件中所在目录信息和当前目录信息相同的数据{k=root[i].i_ num;prin tf("\t\t %s\t",root[i].file_ name); // 文件名prin tf("\t%d\t",i_ node[k].file_style); // 文件的类型prin tf("%d\t",i_node[k].file_le ngth); // 文件的长度printf("%s\n",root[i].dir_name); // 文件所在的目录}}}void display_dir(char file name[]) // 进入指定的目录{ -int i,k;for(i=0;i<640;i++){k=root[i].i_num; //判断文件类型是不是目录类型if((strcmp(file name,root[i].file _n ame)==0) && (i_no de[k].file_style==0)){ - - -strcpy(cur_dir,filename); //将要进入的指定目录设置为当前目录赋值不要反了strcpy(目的,源)break;}}if(i==640){printf(”没有这个目录\n”);}}void ope n_file(char file name[]) // 打开文件{ -int i,j,k;printf("\t\t文件名字文件类型文件长度所属目录\n");for(i=0;i<640;i++){k=root[i].i_ num;if(strcmp(filename,root[i].file_name)==0 && (i_node[k].file_style==1)){ - - -prin tf("\t\t %s\t",root[i].file_ name); // 文件名prin tf("\t%d\t",i_ node[k].file_style); // 文件的类型printf("%d\t",i_node[k].file_length); // 文件的长度printf("%s\n",root[i].dir_name); // 文件所在的目录prin tf("\t\t 文件占用的物理地址\n");for(j=0;j<i_node[k].file_length;j++) // 显示物理地址{ - -printf("%d ",i_node[k].file_address[j]); // 文件具体占用的盘块号} - -prin tf("\n");break;}}if(i==640){printf("没有这个文件或者这个文件不是正规文件\n");}}void back_dir() //返回上一级目录{ -int i,k;for(i=0;i<640;i++) //查询和当前目录名相同的目录文件名{k=root[i].i_ num;if(strcmp(cur_dir,root[i].file_name)==0 && (i_node[k].file_style==0)){ - - - -strcpy(cur_dir,root[i].dir_ name); // 将查询到的目录文件名所在的目录赋值给当前目录}}}void display_sys(){ -int i,m,k=0;for(i=0;i<20449;i++) {if(memory[i].a==0) k++; }m=20449-k;printf("空闲的盘块数是: prin tf("%d\n",k);printf("使用的盘块数是: prin tf("%d\n",m);//显示系统信息(磁盘使用情况)\t");\t");int MA[4]; /*空闲块数组*/int A[9][4]={{3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; /* 磁盘空间 */ int mark[9]; /*存放已分配的块*/ int No=0; /*已分配的块数*/ void display1() { int i,j,temp,co unt;No=0;if(MA[1]!=0){ i=MA[0];prin tf("\ngroup1:"); for(j=1;j<=i;j++){ prin tf("%d ",MA[j]);mark[++No]=MA[j]; }temp=MA[1]; coun t=2;while(A[temp][1]!=0){ prin tf("\ngroup%d:",cou nt);i=A[temp][0]; for(j=1;j<=i;j++){ prin tf("%d ",A[temp][j]); mark[++No]=A[temp][j]; }coun t++;temp=A[temp][1]; }prin tf("\ngroup%d:",co un t); i=A[temp][0];for(j=2;j<=i+1;j++)if(A[temp][j]>0){ prin tf("%d ",A[temp][j]); mark[++No]=A[temp][j]; }} else{ i=MA[0];if(i==1)prin tf("\nThe blocks are all assig ned"); else { prin tf("\ngroup1:");//显示帮助信息 ----------------- *\n"); format *\n"); ----- dir空格+文件名) -Is+空格+目录名 文件名+文件长度) 空格+文件名) void help() {pri ntf("*prin tf("*以下是文件管理已分配盘块 ------- printf("* 1.初始化 ------------------------ printf("* 2.查看当前目录文件列表 ---------- printf("* 3. 查看文件 -------- cat ——(cat + prin tf("* 4. printf("* 5. printf("* 6. printf("* 7. printf("* 8. printf("* 9.printf("* 10.返回上一级目录 ---------------------- cd.. printf("* 11. 显示帮助命令 --------------------- help printf("* 12. 退出文件模拟 --------------------- quit printf("* 13, 进入成组链接 --------------------- guo prin tf("***********************************************************\n")・ } ,查看系统信息 ------------------- 仓U 建目录 ----- md ----- (md 创建文件---vi ------- (vi +空格 删除文件 ---------- del ——(del + 删除目录 ---------- d eldir--(del + *\n"); *\n"); *\n"); ) *\ n"); *\n"); *\n"); 进入当前目录下的指定目录 ——cd--(cd + 空格+目录名)*\n ”); 空格+ 目录名)*\n");*\n"); *\n"); *\n ”); *\n");for(j=2;j<=i;j++){ prin tf("%d ”,MA[j]);mark[++No]=MA[j];}}}}void display() /*显示分组情况*/{ int i,j;if(MA[0]!=0)display1();else{ i=MA[1];for(j=0;j<=3;j++)MA[j]=A[i][j]; display1();}}void assign() /* 分配空闲块*/{ int s,i;if(MA[0]>1) /*若该组不止一个空闲块*/{ i=MA[0];s=MA[i];MA[0]--; prin tf("\nnu mber of the block:%d",s);}else if(MA[0]==1) /* 只剩一个空闲块*/{ if(MA[1]!=0) /*还有其它空闲块组*/{ s=MA[1];for(i=0;i<=3;i++)A[0][i]=A[s][i];MA[0]--; prin tf("\nnu mber of the block:%d",s);}else /*没有其它空闲块组*/{ prin tf("\nThere isn't any space");return;}}else /*当前组已分配完*/{ for(i=0;i<=3;i++)MA[i]=A[0][i];assig n();} display(); /*显示分组情况*/}void callback() /* 回收空闲块*/{ int i,j,temp;prin tf("\nin put the No. of the block you want to callback:"); scan f("%d",&j);getchar(); /*得到待回收的空闲块号*/for(temp=1;temp<=No;temp++){ if(mark[temp]==j)break;}if(temp<No+1) /*若该空闲块已在,退出*/{ prin tf("\nThe block is in the disk"); return;}if(MA[0]<3) /*当前组不满3块*/{ i=MA[0];MA[i+1]=j; MA[0]++;}else /*已有3块*/{ for(i=0;i<=3;i++)A[j][i]=MA[i];MA[0]=1;MA[1]=j;}display。