实 验 报 告
( 2014/ 2015 学年 第 一 学期)
课程名称
实验名称
实验时间
指导单位
指导教师
操 作 系 统 A
文件系统
2014
年 12 月 15 日
南京邮电大学
学生姓名
学院(系)
班级学号
专
业
实 验 报 告
实验名称 文件系统模拟设计
实验类型 验证
实验学时 2
指导教师
实验时间
一、 实验目的和要求
1.掌握文件系统的使用。
2.实现一个文本文件的某信息的插入和删除。
3.实现一个记录文件的某记录的插入和删除
设计一个多用户文件系统,模拟管理的工作过程,
二、实验环境(实验设备)
Windows 7
三、实验原理及内容
实验流程图
1
数据结构设计
用户结构:账号与密码结构
typedef struct users
{
char
char
}users;
本系统有 8 个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可
name[8];
pwd[10];
进入系统,否则提示失败要求重新输入。
users usrarray[8] =
{
"usr1","usr1",
"usr2","usr2",
"usr3","usr3",
"usr4","usr4",
"usr5","usr5",
"usr6","usr6",
"usr7","usr7",
"usr8","usr8",
};
(3)数据结构说明
a)文件结构链表
struct fnode
{
char filename[FILENAME_LENGTH];
isdir;
int
int isopen;
char content[255];
2
fnode *parent;
fnode *child;
fnode *prev;
fnode *next;
};
b)函数介绍
fnode *initfile(char filename[],int isdir);//初始化文件或目录
void createroot();//建立系统根目录
int run();系统运行
int findpara(char *topara);对参数进行处理
bool chklogin(char *users, char *pwd);检查账号与口令
void help();命令列表
int mkdir();建立目录
int create();建立文件
int read();读取文件
int write();写入文件
int del();删除文件
int cd();切换目录
int dir();文件与目录列表
模块设计
此课程设计把文本作为研究对象来模拟操作系统的文件系统工作过程。所以用一个字
符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储服务。
所有用户构成一个数组,每个数组元素是一个结构体,每个结构体包括三部分,用户
的用户名、用户密码和文件链表(由于模拟文件系统的文件数量不多,故文件表采用线性
链表来存储。线性表每个结点放置一个文件的 FCB,其中存储一个文件的信息,文件名、
长度、类型、创建时间等);
磁盘空间分配表,采用链表结构,每个节点保存模拟磁盘的一个逻辑块的信息,包括
块的最大长度,文件占用长度,占用标志。如果占用标志为 0,即该空间可分配给文件。初
始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块,并置占用位为 0。当有进程申请
磁盘空间时,从头开始遍历,检查占用位,如果该块为可分配,则检查块大小,若块长度
大于或等于申请空间大小,则把块的前一部分(等于申请大小)分配给文件,并置标志位
为占用。剩下的大小作来一个新块,作来一个新节点插入到原节点的后边,标志位为可用。
这样就实现了模拟磁盘的线性分配。
算法流程图
3
建
立
目
录
切
换
目
录
退
出
登
录
模拟二级文件系统
主界面
建
立
文
件
读
取
文
件
写
入
文
件
相关程序:
略,详见电子版附件。
系统运行图:
1.首先登陆,输入用户名和密码
用
户
登
录
删
除
文
件
4
2.输入 help 获得命令帮助
4.依次根据命令提示,建立文件目录 makdir、查看目录 dir、跳至新建目录 cd、
建立文档 create、读取文档 read、写文档 write、删除文档 del
5
5.退出登录 logout
6
实 验 报 告
7