操作系统课程设计报告5——模拟文件系统.pdf

操作系统课程设计报告5——模拟文件系统.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

操作系统课程设计报告

——模拟文件系统

1实现功能

实现了符合要求的文件系统。

实现了要求的文件系统接口。

2文件系统的实现

2.1目录项结构体dirEntry

文件系统中,使用dirEntry结构体表示一个目录项。该结构体长64字节,

其中记录了该项的FAT表入口位置start,文件名name(最长50字节)和长9

字节的未用项unused(可用于扩展文件系统的功能,记录其他信息)。

系统中的目录实际上就是仅由dirEntry项构成的目录文件。

2.2文件描述符分配表项结构体filpEntry

使用filpEntry结构体来表示一个已经打开的文件。它长8个字节,记录的

信息包括该文件的FAT表入口位置start,以及文件指针位置position。

fdPool数组提供了100个可用的filpEntry指针;minNotUsedFd变量储存当

前最小未用的文件描述符。每当打开一个文件时,要调用get_fd函数,它为文件

分配一个描述符,增加一个filpEntry项,并调整minNotUsedFd的值。当关闭文

件时,需要调用free_fd函数,来释放一个文件描述符和对应的filpEntry。

2.3文件分配表FAT

文件系统中,需要记录文件存储的块号的数据结构。除了可以使用inode以

外,还可以使用FAT。FAT在使用过程中需要将整张表读入内存,而使用inode

时,只需要将使用中的inode读入内存即可;故inode占用内存较少。但inode

数据结构复杂;尤其是当文件尺寸巨大,需要使用二级甚至三级间接表时,inode

在磁盘和内存之间的读写过程会变得相当繁琐。本项目中,选择使用方便的FAT。

当磁盘空间为250MB,块大小为1KB时,将有256000块;每块的号码需

要使用一个int来表达。故FAT表需要256000项,每项4字节,共1024000字

节,即1000KB。由于超级块已经占用块0,文件分配表将占用硬盘块1~1000。

FAT的每个表项的类型都是int。正整数表项指明该文件下一个块的号码;表

项为0,表示该块尚未被占用;-1表示该文件没有更多的块了。这样,对于每个

文件来说,只要知道它的第1个块的号码,就能顺藤摸瓜,访问到它的所有块。

FAT表的初始化状态,即文件系统中没有任何文件时,1~1024项全部标为

-1(其他全为0),表明这些是供文件系统使用的磁盘块,普通文件不能被分配到

这些块中。

在文件系统初始化时,需要将整个FAT表载入内存,程序中的fat数组。由

于表项为0表示该块未被占用,故数组的第0项不能使用;即FAT表不使用第0

块。此外,

使用了FAT表的文件系统,只要在关闭时将FAT表写回硬盘即可。

my_shutdown函数即起到此作用。

2.4超级块

本项目由于用不到太多的信息,故而简化了超级块的设计,使它只包含一个

魔数“”(字符串FFATSYST)。超级块放在硬盘的0扇区中。启动时,若检测到魔“

数”,则表明磁盘上已经存在文件系统;否则,需要重新建立一个。

2.5根目录

文件系统初始化时,必须要有一个根目录。它的“目录文件”所在块比较特

文档评论(0)

各类考试卷精编 + 关注
官方认证
内容提供者

各类考试卷、真题卷

认证主体社旗县兴中文具店(个体工商户)
IP属地宁夏
统一社会信用代码/组织机构代码
92411327MAD627N96D

1亿VIP精品文档

相关文档