虚拟文件系统的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

渤海大学操作系统课程设计

实验报告书

虚拟文件系统的实现题目:

题目编号:

软件服务与外包学院院系:

11级:班级2班

111810040 学号:陈镜欢小组成员:

111810035

学号:王晨

2013-06-30

目录

一、课程设计任务划分 (1)

二、基本原理 (1)

2.1主要操作函数 (1)

2.2数据结构 (1)

2.3算法流程图 (3)

三、基本思路 (4)

3.1 设计简介 (4)

3.2 设计方案论述 (4)

3.3 文件基本操作 (4)

四、调试及实验结果 (5)

运行结果分析 (8)

五、个人体会 (8)

一、课程设计任务划分

陈镜欢:

主要编写代码熟悉课题的任务和要求,查阅相关文献和资料,并做好编码准备,调试,验收

王晨:

程序编码、调试和测试,书写报告

二、基本原理

2.1主要操作函数

int create(char *name);

int open(char *name);

int close(char *name);

int write(int fd,char *buf,int len);

int read(int fd,char *buf);

int del(char *name);

int mkdir(char *name);

int rmdir(char *name);

void dir();

int cd(char *name);

void print();

void show();

2.2数据结构

struct fatitem /* size 8*/

{

1

int item; /*存放文件下一个磁盘的指针*/

char em_disk; /*磁盘块是否空闲标志位0 空闲*/

};

struct direct

{

/*-----文件控制快信息-----*/

struct FCB

{

char name[9]; /*文件/目录名8位*/

char property ; /*属性1位目录0位普通文件*/ int size; /*文件/目录字节数、盘块数)*/

int firstdisk; /*文件/目录起始盘块号*/

int next; /*子目录起始盘块号*/

int sign; /*1是根目录0不是根目录*/

}directitem[MSD+2];

};

opentable struct {

struct openttableitem

{

char name[9]; /*文件名*/

int firstdisk; /*起始盘块号*/

int size; /*文件的大小*/

}openitem[MOFN];

*/当前打文件的数目/*cur_size; int };

2

2.3算法流程图

3

三、基本思路

3.1 设计简介

本系统是模拟实现多用户多目录的文件系统,在系统出现登录后 ,输入用户与口令,在用户登录系统后,可建立文件卷,将用户输入的文件保存在指定的文件中。系统的命令与其命令的具体实现,此模拟系统共提供了上述命令,并根据命令的含义与要求,用C++编程来完成所有具体操作。该系统可以模拟完成用户的登陆和验证,列出文件和目录,新建目录,改变目录,创立和编写文件,删除文件和退出系统等功能

3.2 设计方案论述

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。

3.3 文件基本操作

创建文件:创建一个新文件时,系统首先要为新文件申请必要的外存空间,并在FAT中为文件分配一个目录项。目录项中应记录新建文件的文件名、文件总容量、当前已经使用的容量、文件属性、文件在磁盘中的起始位置。

删除文件:当已不在需要某文件时,可将它从文件系统中删除。在删除时,4

首先在FAT的文件链表中找到与该文件对应的文件结点,然后确认文件是否处于关闭状态,若以上条件都满足,则系统就可以把结点从文件链表中删除,然后回收改结点对应的磁盘空间。

打开文件:只有处于打开状态的文件才能被读取、写入、重复关闭且不能被删除。

关闭文件:只有处于关闭状态的文件才能被删除,且不能被重复关闭。

列文件目录:用户只能获取自己建立的文件或其他用户共享的文件的列表,并可以查看所用户建立的文件列表。

写文件:用户可以把相关数据写入到用户自定义的文件中(磁盘上);待写文件必须处于打开状态,且不能是其他用户共享的文件。

读文件:用户可以把文件中存储的数据读取出来;待读文件必须处于打开状态;用户既可以读取自己建立的文件,也可以读取其他用户共享的文件。

建子目录:输入目录名,若存在于该文件名相同的目录,这创建失败;若无,则查找空闲的磁盘,将该磁盘置为分配状态,填写目录项,分配地址后,子目录创建成功。

删除目录:输入名字,查找是否存在该文件或目录,若为文件,则不能删除;若存在,找到起始盘块号,并将其释放,修改目录项,删除成功。

四、调试及实验结果

(1)login用户登录

相关文档
最新文档