实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读文件流程图
void Read(char *path)
{
char display[BLOCK_SIZE];
for (unsigned i = 0; i < FS.FI.FICount; i++)
{
if (!strcmp(FS.FI.FIStart[i].ParentName, CS.CurrParent->FileName)
{
printf("对不起,文件名不能为空。\n");
}
else
{
CreateFileElement(protect, filename, file, NULL, CS.CurrParent);
}
printf("[%s@localhost %s]$", CS.CurrentUser.UserName, CS.CurrentPath);
2. 独立独立完成系统的分析、设计、编码、测试工作。
3.完成设计报告的撰写。
4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
查阅资料、分析题目、概要设计
分散
周一
2
详细设计、编码
User Creator;//文件创建者
char CreateTime[18];//创建时间,日期格式:MM/DD/YY HH:MI:SS
char LastModTime[18];//最后一次修改时间
char *FileData;//一个文件的数据开始地址,文件夹时该值为NULL
FileStatus fileStu;//如果是一个文件表示文件当前的状态
2
2.1在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
2.2文件物理结构可采用显式链接或其他方法。
2.3磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
2.4文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
[4]现代操作系统,A.S.Tanenbaum著,陈向群等译机械工业出版社,2002年
发出任务书日期:2007年6 月15 日 指导教师签名:
计划完成日期:2007年6月24日基层教学单位责任人签章:
主管院长签章:
1
本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
4.1.1
内置9个用户名和密码,用来验证登录用户的身份,用户登录成功后会初始化当前用户等一系列的系统当前信息,默认用户的类型为普通用户,如果用户未能通过身份验证,提示用户登录失败,退出整个系统。
用户登录流程图
4.1.2
系统的初始化要完成文件系统的建立,包括以下几部分:请求内存、设置位示图、初始化文件索引、初始化文本块链表、初始化系统的当前状态、创建一个根目录做为系统的根。
{
FSElement *fselem = (FSElement *)
FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId);
fselem->fileStu = opened;
strcpy(display, "文件已打开完毕。\n");
break;
}
}
if (strcmp(display, "") == 0)
typedef struct
{
unsigned Index;//文件元素索引编号
char FileName[NAME_LEN];//文件元素名
char ParentName[NAME_LEN];//父节点名
unsigned FileBlockId;//文件元素所在物理块编号
unsigned FileLevel;//文件元素所在层次,层+文件元素
分散
周二
3
调试
实验室
周三
4
撰写设计报告
分散
周四
5
运行、验收
实验室
周五
五、应收集的资料及主要参考文献
[1]计算机操作系统(修订版),汤子瀛等,西安电子科技大学出版社,2001
[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)
[3]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社,2000
2.5.8删除文件:delete
2.5.9创建目录(建立子目录):mkdir
2.5.10改变当前目录:cd
2.5.11列出文件目录:dir
2.5.12退出:logout
3
3
Visual C++6.0下的win32控制台程序,C语言。
3
在内存中申请1M的空间来模拟存取设备,空间划分为三部分,第一部分用来存放位示图,用于标识数据块的使用情况,第二部分放置一个文件索引的数据,用于快速的查找数据,第三部分放置数据信息,第三部分划分为512块,每块512B,其256K,放置在1M空间的最末端,由第三部分的大小可知,第一部分只需64B即可,中间的部分用来存放文件索引。其他用到的存储单元由系统分配。
{
if (!strcmp(FS.FI.FIStart[i].ParentName, CS.CurrParent->FileName)
&&FS.FI.FIStart[i].FileLevel == CS.FileLevel
&& FS.FI.FIStart[i].effect == 1
&&strcmp(FS.FI.FIStart[i].FileName, path) == 0)
FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId);
名为一个文件元素逻辑位置
unsigned effect;//是否有效,0-无效,1-有效
} FileIndexElement;
3.3.3
typedef struct fse
{
struct fse *parent;//指向自己的父亲节点
unsigned FileLevel;//文件元素所在层次,层+文件元素名
} CurrentStatus;
3.3.6
typedef struct
{
char *UserName;//用户名称
UserType ut;//用户类型
} User;
4
4.1
首先系统要完成初始化的任务,建立一个系统,并等待用户登录使用文件系统,用户登录系统时,系统对用户的用户名和密码进行验证(允许用户用限次的尝试,多最多尝试五次),如果用户登录成功,则系统进入命令提示符状态,等用户输入指令后,系统得用一个解释程序按照指定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。
题目名称
多用户多级目录文件系统的实现
学生学院ቤተ መጻሕፍቲ ባይዱ
计算机学院
专业班级
计算机科学与技术04级1班
姓名
胡海洪
学号
3104006429
一、课程设计的内容
本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
}
4.1.4
只支持在当前目录进行操作,通过用户给定的文件名在文件索引中搜索到文件的物理文件块ID,找到该文件元素后,将文件当前状态置为打开。
打开文件流程图
void Open(char *path)
{
char display[100];
for (unsigned i = 0; i < FS.FI.FICount; i++)
} FSElement;
3.3.4
typedef struct
{
char *FSStart;//文件系统的起始地址
unsigned SuperBlockSize;//文件系统的容量
BitMap bm;//文件系统中的位示图
unsigned BLOCK_COUNT;//文件系统中文件块的数量
FileBlock *head;//文件系统中文件块首地址
&& FS.FI.FIStart[i].FileLevel == CS.FileLevel
&& FS.FI.FIStart[i].effect == 1
&&strcmp(FS.FI.FIStart[i].FileName, path) == 0)
{
FSElement *fselem = (FSElement *)
二、课程设计的要求与数据
1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
2.文件物理结构可采用显式链接或其他方法。
3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。
课程设计
课程名称_____操作系统____
题目名称多用户多级目录文件系统的实现
学生学院_____计算机学院_________
专业班级_计算机科学与技术04级1班__
学 号**********
学生姓名______胡海洪_____
指导教师________林穗________
2007年6月25日
广东工业大学课程设计任务书
3
3.3.1
typedef struct fb
{
unsigned FileBlockId;//文件块编号
unsigned BLOCK_SIZE;//文件块的容量
char *FileBlockAddr;//文件块地址
struct fb *next;//下一个文件块的地址
} FileBlock;
3.3.2
FileIndex FI;//文件系统中的文件索引
} SuperBlock;
3.3.5
typedef struct
{
User CurrentUser;//当前用户
unsigned FileLevel;//用户所在文件系统层
FSElement *CurrParent;//当前层的父节点
char *CurrentPath;//当前路径
4.1.3
只支持在当前目录创建文件,根据位示图找到一个未使用的文件块用来存放用户的文件信息,根据系统当前状态来构建一个文件系统元素放入到找到的文件块中,新创建的文件状态为关闭,同时更新位示图和文件索引。
文件创建流程图
void Create(char *filename)
{
if (strcmp(filename, "") == 0)
(9)创建目录(建立子目录):mkdir
(10)改变当前目录:cd
(11)列出文件目录:dir
(12)退出:logout
6.系统必须可实际演示,选用程序设计语言:C++、C等。
三、课程设计应完成的工作
1.充分理解设计的任务,完成设计的基本要求。然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。
5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:
(1)具有login (用户登录)
(2)系统初始化(建文件卷、提供登录模块)
(3)文件的创建:create
(4)文件的打开:open
(5)文件的读:read
(6)文件的写:write
(7)文件关闭:close
(8)删除文件:delete
为一个文件元素的逻辑位置
char FileName[NAME_LEN];//文件元素名
unsigned FileBlockId;//文件元素所在物理块编号
unsigned FileElemLen;//文件元素的长度
FileType Type;//文件元素类型
FileAccess Access;//文件元素可供操作的权限
2.5设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:
2.5.1具有login (用户登录)
2.5.2系统初始化(建文件卷、提供登录模块)
2.5.3文件的创建:create
2.5.4文件的打开:open
2.5.5文件的读:read
2.5.6文件的写:write
2.5.7文件关闭:close
{
strcpy(display, "当前目录下没有您要打开的文件。\n");
}
printf("%s\n", display);
printf("[%s@localhost %s]$", CS.CurrentUser.UserName, CS.CurrentPath);
}
4.1.5
只支持在当前目录进行操作,前提是用户已执行文件打开的命令,否则会提示用户先打开文件。通过类似的查找方式,找到文件的数据部分,将数据显示到界面。
相关文档
最新文档