杭州电子科技大学操作系统课程设计:简单文件系统的实现

来源:互联网 发布:python 爬虫 股票数据 编辑:程序博客网 时间:2024/06/05 04:21

本实验的代码地址:https://github.com/yjc567/HDU_OS_Assignment_2017_SimpleFileSystem,如有需要,欢迎自行取用,但是不建议你拿着这个代码去验收,自己的知识永远是自己的,好好学习才是王道!

emmmm想写一个操作系统的课程设计说明,因为自己写的时候也遇到了好多问题,外加感觉对实验指导书的说明有些疑问,觉得写出来可以给别人看看。但是感觉写出来的东西……没什么好看的。

因为这个系统还是有点复杂,但是自己又没有太多的时间和能力把这个复杂的系统说清楚。

存储功能的接口实现

课程设计的文件系统是个类似fat的文件系统结构。fat的结构可以大致参考一下课程设计书或者上课ppt的内容,如下图。磁盘被分为若干块相同大小的磁盘块,一个文件的fcb会记录一个文件的大小和这个文件对应的fat起始物理块号,fat表会标记出一个物理块号的下一个物理块号,如果是EOF,则表明这个物理块是一个文件的最后一个物理块。这些物理块号的二进制文件串联起来后,就是一个文件的内容。
这里写图片描述

每次文件系统程序运行的时候,程序会申请一个大小为1024000字节的内存空间,作为虚拟的磁盘空间。申请完成后,程序就会试图打开一个名为myfsys的文件,这个文件是上一次程序运行结束时,内存中的虚拟磁盘空间的备份。如果myfsys文件不存在,或者myfsys的前八个字节不是二进制数01010101的话,程序就会进行系统的初始化,反之会通过fread()函数把myfsys读进内存空间。

那么怎么把fcb结构体或字符串写进虚拟磁盘空间或者从虚拟磁盘空间读出fcb结构体或字符串呢?利用memcpy()函数就好了,这个函数可以自行地把各种变量的内存写到其它内存上。因此,如果我们要读出一个目录文件下有哪些文件,只要根据这个目录文件的fcb从虚拟磁盘上读出相应的信息,然后把信息加载到一个个fcb结构体中,就得到了其目录下的fcb文件。

文件系统基础功能的分析和实现

创建文件功能

不管是创建文件夹还是创建文件,其实都是在其父目录对应的文件目录下新增一个新的fcb,只不过fcb的内容稍有不同,所以自己用my_touch()函数来创建对应的文件(其实Linux下就有touch命令,就是用来创建文件的),然后再根据这个文件的类型进行其它的相应操作。

打开文件功能

与上同理,不管是打开文件夹还是打开文件,其实就是打开一个文件fcb并读取相关信息。于是my_cd()函数和my_open()函数其实都是一样的功能,写一个,调用一个就好了。

指导书中的一些问题和疑惑

文件夹fcb中的...文件项有什么用

没用,真的没用,至少我认为用了这两个文件项会出bug,因为当你用./这个目录打开当前目录的时候,当前目录会把./当成自己的父目录,当当前目录发生了修改,需要把修改后的信息写入父目录时,其实际父目录不会发生修改。
然后自己是写了一个rewrite_dir()函数来把输入的目录改写成一个完整的目录,每次从根目录打开文件夹,避免使用...文件项。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果拒绝访问怎么办 商品被手拍立淘怎么办 没有菜鸟驿站怎么办 淘宝买到假天梭怎么办 买家假货退货怎么办 淘宝不健康了怎么办 直通车同行点击怎么办 直通车恶意点击怎么办 直通车点击率低怎么办 淘宝收藏夹打不开怎么办? ios12淘宝打不开怎么办 唯品会提现失败怎么办 唯品花提现失败怎么办 115之后怎么办 淘宝空包诈骗怎么办 想开网店卖货怎么办 小黄车换号码了怎么办 离婚支付宝里钱怎么办 忘记淘宝密码怎么办 闲鱼被限制聊天怎么办 光盘打不开怎么办 宏基笔记本打不开怎么办 dvd驱动器打不开怎么办 电脑驱动器打不开怎么办 驱动器打不开怎么办 笔记本找不到光驱怎么办 dvd盒子打不开怎么办 串口打开失败怎么办 阴阳师换手机号怎么办 手机网络崩溃怎么办 淘宝不当注册怎么办 注册没有成功怎么办 淘宝上收不到货怎么办 旺旺被限制怎么办 微博连不上网怎么办 怎么办网卡手机淘宝 淘宝被限购了怎么办 淘宝违规了怎么办 分辨率调不了怎么办 wifi开关打不开怎么办 电脑登陆密码错误怎么办