模拟UNIX文件系统的设计及实现操作系统大作业含源文件文档格式.docx
- 文档编号:13357688
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:55
- 大小:372.63KB
模拟UNIX文件系统的设计及实现操作系统大作业含源文件文档格式.docx
《模拟UNIX文件系统的设计及实现操作系统大作业含源文件文档格式.docx》由会员分享,可在线阅读,更多相关《模拟UNIX文件系统的设计及实现操作系统大作业含源文件文档格式.docx(55页珍藏版)》请在冰豆网上搜索。
10.删除文件:
delete
11.创建目录(建立子目录):
mkdir
12.改变当前目录:
cd
13.列出文件目录:
dir(包括文件属性)
14.删除目录:
rmdir
15.退出:
logout
五、实现方法
该大作业是实现一个类似unix的文件系统,只需要实现上述功能要求中所列出的功能,代码中不能调用OS系统提供的与文件操作和磁盘操作有关的系统调用。
设计提示:
用内存模拟磁盘操作,对文件和目录的创建、删除、读写都用对内存的操作来模拟。
文件的属性信息用内存数据结构保存;
所有文件内容和目录信息保存在内存中。
文件属性包括:
文件名,所有者,创建时间,最后访问时间,文件大小,数据区指针或I-node指针等。
当程序运行结束时回收内存,信息不需要保存到磁盘,下次重新运行程序时重头开始。
六、实验要求
每人完成一份大作业实验报告。
报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。
1)给出数据定义和详细说明;
2)给出实现思想和设计流程;
3)调试完成源程序;
4)屏幕观察运行结果;
5)总结自己的设计体会;
编程语言及操作系统平台不限。
七、提交内容
本大作业每个人必须单独完成。
最后需提交的内容包括:
源程序(关键代码需要注释说明)、可运行程序、算法思路及流程图、心得体会。
大作业必须以WORD附件的形式提交。
大作业严禁抄袭。
发现抄袭一律以不及格论。
大作业内容要完整,一定要有算法思路、流程图、心得体会、运行输出信息截屏等内容,如果只提交源代码则大作业成绩记为不合格。
2017-3-20
目 录
模拟UNIX文件系统的设计及实现
1.课程设计内容
2.概述
UNIX采用树型目录结构,每个目录表称为一个目录文件。
一个目录文件是由目录项组成的。
每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。
在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;
后14B为文件名,是该文件的外部标识。
所以,文件目录项记录了文件内、外部标识的对照关系。
根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。
UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。
UNIX中的文件系统磁盘存储区分配图如下:
0#
1#
2#
…
K#
K+1#
K+2#
K+3#
n#
i节点区
文件存储区
引导区
管理区
本次课程设计是要实现一个简单的模拟UNIX文件系统。
我们在内存中开辟一个虚拟磁盘空间(1MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。
文件存储空间的管理可采用位示图方法。
3.课程设计任务及要求
3.1.设计任务
多用户、多级目录结构文件系统的设计与实现。
可以实现下列几条命令
login
用户登录
退出当前用户
dir
列文件目录
creat
创建文件
删除文件
打开文件
关闭文件
读文件
write
写文件
创建目录
ch
改变文件目录
rd
删除目录树
format
格式化文件系统
quit
退出文件系统
3.2.设计要求
1)多用户:
usr1,usr2,usr3,……,usr8(1-8个用户) 2)多级目录:
3)具有login(用户登录) 4)系统初始化(建文件卷、提供登录模块)
5)文件的创建:
create(用命令行来实现) 6)文件的打开:
7)文件的读:
read 8)文件的写:
9)文件关闭:
close 10)删除文件:
11)创建目录(建立子目录):
mkdir 12)改变当前目录:
13)列出文件目录:
dir 14)退出:
新增加的功能:
15)删除目录树:
16)格式化文件系统:
4.算法及数据结构
4.1.算法的总体思想
本课程设计是要求我们模拟UNIX文件系统功能设计一个虚拟文件系统,依据UNIX文件系统的特点,其设计思想是:
申请1M的内存空间来虚拟文件系统,将其以512B每块划分2048块,采用位示图管理文件系统的方法,利用其原理将第1块作为位图区(512B),共有对i节点区和数据块区分别建立位图;
每个i节点占16B,每块有512/16=32个i节点,用2、3共两块作为i节点,总共有64个i节点,在位图区占用8B;
其余2045块作为数据区(本课设要求只用到512块),在位图区占用接近256B(2045位)。
文件系统存储区分配图如下:
位图区
数据区
位图:
用0表示未使用,1表示使用;
i节点:
文件控制块(FCB),描述文件信息的一个数据结构;
数据区:
存放用户数据,包括目录文件。
位示图用以反映整个存储空间的分配情况,由若干字节构成,每个字节中的每一位对应文件存储器中的一块,“1”状态表示相应块已占用,“0”状态表示该块为空闲。
存储块分配时,只要把找到的空闲块所对应的位由"
0"
改为"
1"
,而在释放时,只要把被释放的物理块所对应的位由"
0"
即可。
分配和释放都可以在内存的位示图上完成,而且速度较快。
磁盘i节点利用在内存中生成链表或者数组的方法来生成,并且限制磁盘节点数的最大值。
同样内存i节点利用链表的方法在内存中生成。
同时在往文件中写或者读的时候我们都是对内存中有内容进行读写。
在该文件系统中,规定一个文件最多只能占用2个数据块,这两个数据块可以是不连续的,其块号记录在一个索引块中,该索引块称为inode结构。
读入一个文件时,先根据目录找到相应的i节点号,将i节点读入主存i节点,建立打开文件表指向该主存i节点,再将文件内容读入主存数据区。
4.2.系统总体框架图
4.3.系统总体流程图
开始
文件系统是否建立?
在内存中申请1M内存空间
将磁盘上的文件系统读入内存
Y
N
用户登录模块,输入用户名和密码,可以
在程序中设定,不用保存在文件系统中
用户名、密码对吗?
执行init(),进行初始化
操作,进入用户子目录
执行command(),对用户输入的命令进行解析和
执行。
若数据被修改或新建立,则保存主存i节
点和数据块的内容到内存的文件系统,并写回磁
盘,保存修改。
若输入错误命令则显示出错信息。
退出用户(logout)吗?
用户输入quit吗?
结束
执行format(),
建立文件系统
4.4.各模块功能说明
4.4.1 format模块
功能:
格式化文件系统,即初始化文件系统,相当于硬盘的格式化。
将其中原有的用户及用户下的文件系统全部还原初始状态,即没有任何用户和目录、文件,也就是按设计的文件系统格式重建新的文件系统。
4.4.2get_blknum和release_blk模块
实现i节点的分配和回收;
算法:
当一个新的文件被建立时,在给该文件分配磁盘存储区之前,应为该文件分配存放该文件的说明信息的磁盘i节点。
反之,当从文件系统中删除某个文件时,则要首先删除它的i节点项。
4.4.3 init()模块
进入文件系统
初始化用户打开文件系表。
在内存中申请一个虚拟存储空间,此空间必须大于或等于可格式化时的空间。
将文件系统文件读入虚拟磁盘。
4.4.4quit()模块
退出文件系统函数quit()
将虚拟磁盘内容保存到磁盘上。
释放虚拟磁盘所占据的空间。
撤消用用户打开文件表。
4.4.5Creat()模块
用法:
creatfilename
分配一空目录项,分配磁盘块。
可用位示图。
填写该空目录项。
如文件长度(0),文件名,类型等。
分配一个用户打开文件表项,并填写相关目录,读写指针=0。
4.4.6open()模块
打开文件open()
openfilename
if(该文件已打开or该文件不存在)报错(出错信息)。
分配一个用户打开文件表项。
4.4.7close()模块
关闭文件close()
closefilename
释放该文件的用户占据的内存空间。
清空该文件的用户打开文件表目。
4.4.8write()模块
写文件write(fd,buf,len)
writefilename,需要先打开文件。
指定写入内容长度。
buf。
修改打开文件表读/写指针。
修改目录项中的文件长度。
4.4.9read()模块
read(fd,buf,len)
readfilename,需先打开文件。
文件信息.修改读/写指针。
4.4.10delete()模块
删除文件delete()
deletefilename
若文件不存在,报错。
回收磁盘空间。
回收目录项。
4.5.该文件系统的数据结构和申明函数
//用户(20B)
typedefstruct
{
charuser_name[10];
//用户名
charpassword[10];
//密码
}User;
//i节点(32B)
shortinum;
//文件i节点号
charfile_name[10];
//文件名
chartype;
//文件类型
//文件所有者
shortiparent;
//父目录的i节点号
shortlength;
//文件长度
shortaddress[2];
//存放文件的地址
}Inode;
//打开文件表(16B)
//i节点号
shortmode;
//读写模式(1:
read,2:
write,3:
readandwrite)
shortoffset;
//偏移量
}File_tabl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 UNIX 文件系统 设计 实现 操作系统 作业 源文件