操作系统 模拟linux文件管理系统
Unix文件系统模拟实验报告
一.实验任务和说明
这次实验是操作系统大型实验,要完成的任务是
模拟unix操作系统中的文件系统功能。在终端界面上用户可以象unix的shell命令一样输入一些命令,如输入ls 显示文件目录,chmod改变文件权限,chown改变文件拥有者,chgrp改变文件所属组,chnam改变文件名,pwd显示当前目录,cd改变当前目录,mkdir创建目录,rmdir删除目录,mk创建文件 ,cp文件拷贝,rm删除文件,cat显示文件内容,login切换用户,passwd修改用户口令 等功能。在后台,要实现混合索引式文件结构,包括用空闲结点号栈管理空闲结点和成组链接发管理空闲盘块。
二.实验需求分析、设计思路和总体方案
1
.基本思路:
用一个文件(disk.txt)模拟一个物理硬盘, 通过对该文件的一系列操作,模拟UNIX文件系统中的文件操作。
2
.理磁盘块的设计
:
卷盘块数等于100块,每个磁盘块512字节,磁盘块之间用/n隔开,总共是514字节。0#表示超块,1#--10#放索引结点,每个索引结点占64字节,共80个索引结点。初始化是存在根目录root,占用了0#结点和11#盘块。
3
.空闲磁盘块:
采用成组链接法管理。每组10块,12#--99#分为9组,每组的最后一个磁盘块里存放下一组的磁盘号信息。最后一组只有8块,加上0作为结束标志。在超块中用一个一维数组(10个元素)作为空闲磁盘块栈。放入第一组盘块。
4
.空闲
I
结点:
采用混合索引式文件结构。索引结点结构中文件物理地址为六项:四个直接块号,一个一次间址,一个两次间址,其中一次间址和两次间址中一个磁盘块中存放16个磁盘号 。在超块中也用一维数组(80个元素)作为空闲I结点栈,与空闲磁盘块管理不同的是这里不用采用成组链接法,这一维数组中存放所有I结点编号,而且一直保持同一大小秩序。根目录占0#索引结点,由于根目录不会删改,是一直占0#索引结点,所以我并未按实验指导所说,把它写在超块里,不过写进去也无所谓的。
5