模拟文件系统设计。
班级:计0301
学号: 姓名:
指导老师:提交时间:2006-7-11
实验地点:西配楼机房。
太原理工大学计算机与软件学院。
一、课程设计题目和目的。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识。
二、课程设计要求。
通过课程设计,要求学生主要掌握如下内容:
1.设计出文件系统中常用的数据结构;
2.理解文件系统的工作流程,给出程序流程图;
3.设计出文件系统中关键的算法;
4.模拟实现二级目录文件系统,并给出一组运行结果。
三、课程设计内容。
本课程设计要求模拟采用二级目录结构的磁盘文件系统的文件操作。其主要内容有:
1、采用二级目录结构为主文件目录mfd和用户文件目录ufd。
2、为每个用户设置一张“用户打开文件表”(uot),用以说明用户当前使用文件的情况。
3、假定文件系统提供的文件操作有建立文件;打开文件;关闭文件;读文件;写文件和撤消文件。
4、用输入命令来模拟用户程序中调用的文件操作,其命令格式和处理要求见指导书。
5、在各命令的实现流程中“寻找空闲块”的工作可以用一个随机数来模拟,取到的随机数即为空闲块号。
四、文件系统实现。
1、数据结构设计。
通过分析设计题目,具体设计出主要的三个数据结构。
ufd:通过结构体,将文件名,文件属性,记录长度和文件的地址结合在一体。
uof:同样是通过结构体,将文件名,文件属性,记录长度,当前状态,读指针,写指针以及最后一块的指针结合在一起。
mfd:通过一个类来实现其功能。类中包括用户名,ufd及uof中的文件个数,以及与用户相对应的ufd和uof。另外还包括两个初始化函数。
模拟二级目录结构时,第一级为主文件目录mfd,第二级为用户文件目录ufd。假定系统可同时管理n个用户的文件,每个用户最多在磁盘上保存l个文件,则二级目录结构可用如下形式表示:
n l栏栏。
主文件目录mfd用户文件目录ufd
整个系统只有一张主文件目录表,但有n张用户文件目录表。用户文件ufd中的“文件属性”规定文件的使用权限为“只可读”或“只可写”或“可读可写”。
可为每个用户设置一张“用户已打开文件表(uof)”,用以说明该用户当前正在使用文件的情况。如果用最多同时打开或建立s个文件,那么,用户已打开文件表uof应该有s个登记栏,其结构如下:s栏。
用户请求打开或建立一个文件时,相应的文件操作把在关该文件的信息登记到uof中,读指针和写指针用于指出对文件的进行存取的当前位置。
2、程序流程设计。
1、程序结构框图:
文件系统提供的文件操作有建立文件(create),打开文件(open),关闭文件(close),读文件(read),写文件(write)和撤消文件(delete)。在模拟程序中可从键盘上输入文件操作命令来模拟各用户程序中所调用的各种文件操作,用一个结束命令(end)停止程序的执行,其程序的结构图如下:
2、用输入命令来模拟用户程序中调用的文件操作,这些命令的格式和处理要求如下:
1).建立文件:create(文件名,记录长度,文件属性)
模拟文件系统进行“建立文件”的处理流程如下:
建立文件”模拟流程:
2).打开文件:open(文件名,操作类型)
其中操作类型指出文件打开后用户将对文件进行读还是写。约定操作类型与文。
属性不符合或正处于“建立”状态的文件不允许打开,处理流程如下:
打开文件”模拟流程。
3).读文件:read(文件名,读文件)
文件打开后,可用“读文件”操作请求读指定文件中的若干记录,既可顺序读写也可随机读。这里约定总是顺序读文件中的记录本,读长度表示本次操作需计的记录个数。处理流程如下:
读文件”模拟流程:
4).关闭文件:close(文件名)
对某个文件不需要再读或写时,用户应关闭文件。若关闭一个新建立的文件,则要建立文件的结束标志。对链接文件来说,最后一块中的链接字应为“0”。关闭文件的工作流程如下:
关闭文件”模拟流程。
5).删除文件:delete(文件名)
把请求撤消的文件从用户文件目录表中除名,收回该文件占用的存储区域。处理流程如下:
删除文件”模拟流程
6).写文件:write(文件名,记录号)
执行写文件操作时要区分两种情况,第一种是在执行create后要求写。第二种是在执行open后要求写的。对第二种情况可认为用户要对一个已建立好的文件进行修改。
一个文件可以分多次写,既可按记录顺序写也可随机写一个记录,采用顺序写时可省略记录号。模拟写文件操作的工作的流程图如下:
“写文件”模拟流程。
注:流程图中“寻找空闲块”的工作可以用取一个随机数来模拟,取到的随机灵敏即为空闲块号。
五:源程序及注释如下:
#define s 10
#define l 20
#define n 30
#include""
#include""
#include""
struct ufd;
struct uof;
struct mfd;
struct mfd mfd[n];
create(int x);
open(int x);
close(int x);
read(int x);
write(int x);
delete(int x);
main()
char namestr[20],order[20];
int i,j;
/*chu shi hua mfd*/
strcpy(mfd[0].uname,"zhangjian");
strcpy(mfd[0].ufd[0].fname,"wenjian1");
strcpy(mfd[0].ufd[0].shuxing,"read");
mfd[0].ufd[0].length=25;
mfd[0].ufd[0].addr=6120;
* printf("uname:%s,fname:%s,shuxing:
%s,length:%d,address:%d",mfd[0].
uname,mfd[0].ufd[0].fname,mfd[0].
ufd[0].shuxing,mfd[0].ufd[0].
length,mfd[0].ufd[0].addr);*
strcpy(mfd[0].ufd[1].fname,"wenjian2");
strcpy(mfd[0].ufd[1].shuxing,"rw");
mfd[0].ufd[1].length=20;
mfd[0].ufd[1].addr=0;
strcpy(mfd[0].ufd[2].fname,"wenjian3");
strcpy(mfd[0].ufd[2].shuxing,"rw");
mfd[0].ufd[2].length=20;
mfd[0].ufd[2].addr=1000;
strcpy(mfd[1].uname,"hey");
strcpy(mfd[1].ufd[0].fname,"wenjian5");
strcpy(mfd[1].ufd[0].shuxing,"read");
mfd[1].ufd[0].length=30;
mfd[1].ufd[0].addr=4020;
strcpy(mfd[1].ufd[1].fname,"wenjian8");
strcpy(mfd[1].ufd[1].shuxing,"rw");
mfd[1].ufd[1].length=21;
mfd[1].ufd[1].addr=1;
/*chu shi hua uof*/
strcpy(mfd[0].uof[0].fname,"wenjian1");
strcpy(mfd[0].uof[0].shuxing,mfd[0].ufd[0].shuxing);
mfd[0].uof[0].length=mfd[0].ufd[0].length;
strcpy(mfd[0].uof[0].state,"open");
mfd[0].uof[0].w=mfd[0].ufd[0].addr;
mfd[0].uof[0].r=mfd[0].ufd[0].addr;
strcpy(mfd[0].uof[1].fname,"wenjian3");
strcpy(mfd[0].uof[1].shuxing,mfd[0].ufd[2].shuxing);
mfd[0].uof[1].length=mfd[0].ufd[2].length;
strcpy(mfd[0].uof[1].state,"open");
mfd[0].uof[1].w=mfd[0].ufd[2].addr;
mfd[0].uof[1].r=mfd[0].ufd[2].addr;
/* printf("w=%d",mfd[0].uof[0].w);
shuru:
printf("initial has input your name to login:");
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...