# 基于C语言实现的操作系统文件系统模拟
# 1 实验目的
- 了解文件管理系统的作用和工作方式
- 了解FAT文件系统的结构
- 学习文件管理系统的一般开发方法
# 2 需求说明
## 2.1 基本要求
- 设计并实现一个目录列表函数(无须支持选项如ls -a、la -l等),用来显示当前目录下包含的文件信息
- 设计并实现一个改变目录函数(无须处理路径名,如../../directoryName等),用来把当前目录切换到上一层目录或当前目录的子目录
- 设计并实现一个删除文件函数,使用当前目录中的要删除的文件名作为参数,用来删除指定的文件,要注意文件的隐藏、只读和其他系统属性
- 设计并实现一个创建文件函数,使用要创建的文件名和文件大小作为参数,用来创建一个新的文件
- 实现下列函数及对应功能
| 函数名称 | Linux下对应命令 | 代码实现命令 | 命令格式 |
| ----- | ---------- | ------ | ---------------------------------------- |
| ud_ls | ls | ls | ls |
| ud_cd | cd | cd | cd..切换至上级目录 cd.切换至当前目录 cd directoryName 切换至当前目录的子目录 |
| ud_df | rm | df | df fileName |
| ud_cf | N/A | cf | cd fileName fileSize |
## 2.2 提高要求
- 增加创建目录的功能
- 增加删除目录的功能:通常需要先判断目录是否为空目录,若目录不为空,则需给出提示,并删除其包含的所有子目录和文件;若是空目录则可以直接删除
- 增加删除绝对路径和多级目录的支持:这里需要对输入的目录路径字符串进行解析,然后逐级查找目录
- 对ud\_cf()函数进行改进,使其可以向文件中写入实际内容,并根据写入内容计算文件的实际大小
- 对ud\_ls()函数进行改进,增加对全部非跟目录信息的读取(基本要求中仅需读取一个扇区的非跟目录信息)
## 2.3 完成情况
基本要求完成了以下功能:
- 程序能够正常运行
- 按照需求完成的要求中提到的四个函数,代码中对应名字为fd\_ls, fd\_cd(后更名为getPath), fd\_df, fd\_cf
提高要求完成了以下功能:
- 所有命令支持多级目录,支持绝对路径和相对路径
- 支持新建文件和文件夹,删除文件和文件夹
- 支持支持修改文件内容
- 支持带参数ls,分普通显示和-l详细显示
# 3 设计说明
## 3.1 基本要求实现说明
**ud\_ls(fd_ls)**
查询当前目录的所有簇,列出所有目录项。
**ud\_cd(fd_cd)**
查询当前目录的所有簇,找到目标,更改当前目录为该目标目录。
**ud\_cf(fd\_cf)**
新建目录项,新建文件或者目录,分配一个空簇。
**ud\_df(fd\_df)**
删除目录项,释放占用簇。
## 3.3 提高要求实现说明
- 实现getPath,全系统寻找了个绝对或者相对路径,其他函数配合此使用
- 实现所有簇遍历,实现文件夹的删除和创建
- 实现ud_ef方法,写入文件内容
- 其他细节体验提升
运行结果检验如下: (基本要求和提高要求)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/0df1f3ab8961b5df8e387088e581650e.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/ca9f3955d0414e8e6670e9725666e9cf.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/936aaf88aacb15e4ee6efd277f5fe1a9.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/7c26575afce79450bf74d2a187f25da0.writebug)
# 4 收获和感想
没有文件系统,很多操作都变得很麻烦。
# 5 实验遇到的问题及解决方法
- 不能同时使用资源管理器和程序,可能会有线程不安全的问题
- 代码中若干漏洞需要修复
精选_基于C语言实现的操作系统文件系统模拟_源码打包
版权申诉
62 浏览量
2022-03-06
15:48:04
上传
评论
收藏 767KB ZIP 举报
工具盒子
- 粉丝: 58
- 资源: 1313
最新资源
- 基于MFC的校园导航程序(使用最短路径dijkstra算法).rar
- Android Studio android APP 视频作为视图背景需要源代码或想了解其实现原理的可以私心我
- com.ZeroneGames.GreenProject.apk
- Python自动化开发入门教程
- 4399GameSem_116_13955_207551_6.apk
- python 3.9.19源码编译包
- php-8.2.18-Win32-vs16-x64.rar
- 字节跳动青训营-抖音项目
- SQL资料手册,语句教程,高级查询语句语法
- 上位机和串口建立 Modbus 协议进行数据传输,并使用 Mysql 数据库存储,能够实现实时温湿度显示和动态变化曲线,历史数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈