【操作系统】实验名称: 实验五 文件系统

2023-12-18 13:45:29

实验目的:

1.?掌握文件系统的基本概念和工作机制

2.?掌握文件系统的主要数据结构的实现

3、掌握软件系统实现算法

实验内容:

设计并实现一个虚拟的一级(单用户)文件系统程序

提供以下操作

1、文件创建/删除接口命令

2、目录创建/删除接口命令

3、显示目录内容命令

算法设计与实现(附流程图和源代码):

申明函数

void?login(void);?用户登录,如果是新用户则创建用户

void?init(void);?程序初始化,将所有i节点读入内存

int?analyse(char?*);?输入参数分析,分析用户命令

void?save_inode(int);?将num号i节点保存到虚拟磁盘文件hd.dat

int?get_blknum(void);?申请一个数据块

void?read_blk(int);?将i节点号为num的文件读入temp

void?write_blk(int);?将temp的内容写入hd.dat的数据区

void?release_blk(int);?释放文件块号为num的文件占用的空间

void?pathset();?打印当前路径

void?deltree(int?innum);?实现删除目录树函数

int?check(int);?检查用户权限

用户命令处理函数

void?help(void);?命令提示帮助函数

void?cd(void);?改变当前目录

void?dir(void);?显示当前目录下所有文件和目录

void?mkdir(void);?创建目录

void?rd(void);?删除目录

void?creat(void);?创建文件

void?open(void);?打开

void?read(void);?读文件

void?write(void);?写文件

void?close(void);?关闭文件

void?del(void);?删除文件

void?logout(void);?用户注销

void?command(void);?命令管理函数

void?format(void);?格式化虚拟磁盘

函数间关系:

流程图:

调试过程及实验结果(附截图):

注册用户

登陆登出

创建/进入目录

创建/打开文件

可以选择打开方式,只读,只写和读写

写文件

初始长度为0,输入想要写入的长度20,以及内容12345678916281294abc

读文件

接下来进行读取,可以看到长度为20,选择起始位置7,选择读取长度10,结果为8916281294,结果正确

删除文件

可以看到,删除文件后,再次打开就会提示文件不存在,而如果输入错命令就会提示指令错误。

删除目录

先输入cd?…进入上级目录,删除之前创建的lzh目录,再次进入就会提示文件夹不存在

格式化

格式化后会清空“磁盘”,同时创建一个新的文件系统。

思考题:

  1. 单个文件的大小是否为无限的?受到哪个因素限制?

文件系统的限制:?不同的文件系统对单个文件的最大大小有限制。例如,FAT32文件系统通常限制单个文件大小为4GB,而NTFS或exFAT允许更大的文件大小。

操作系统的限制:?操作系统也可能对单个文件大小设置限制。例如,32位操作系统可能限制单个文件大小为2GB,而64位操作系统可以支持更大的文件。

硬件限制:?存储设备的硬件特性也可能对单个文件大小产生影响。某些文件系统和硬件可能限制文件的最大尺寸。

应用程序的限制:?有些应用程序也可能对单个文件大小有限制,这可能是为了确保更好的性能或适应特定的用途。

  1. 你认为一个设计成功的文件系统应该具备哪些特征?

可靠性:?文件系统应该能够保护数据免受损坏或丢失。这可能包括实现数据冗余、错误检测和纠正等机制。

性能:?文件系统应该提供高效的读写操作,适应不同类型的应用程序和工作负载。

可扩展性:?文件系统应该能够方便地扩展以适应不断增长的存储需求,而无需对整个系统进行大规模更改。

安全性:?文件系统应该提供对数据的访问控制和权限管理,以确保只有授权用户可以访问敏感数据。

兼容性:?文件系统应该能够与多种操作系统和硬件平台兼容,以便用户可以在不同环境中使用。

易用性:?文件系统应该提供用户友好的界面和操作方式,使用户能够轻松管理和使用存储空间。

恢复性:?文件系统应该具备良好的恢复机制,能够在发生错误或故障时快速自愈,以确保数据的完整性和可用性。

实验小结:

文章来源:https://blog.csdn.net/qq_42531954/article/details/135049470
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。