- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文件目录管理实验告
操作系统课程设计报告
采用二级目录实现文件管理?
?
学????院:信息工程学院
班????级:计科1002班
姓????名:???杨辉??
学????号:101304230??
指导教师:?邹姝稚???
时????间:2013年1月
成????绩:???????? ????
目录
一 设计目的 ···················3
二 课题任务 ···················3
三 课题相关知识 ·················4
四 课题设计 ···················6
五 设计内容 ···················8
六 运行与测试 ·················14
七 设计总结 ··················17
一.设计目的:
文件系统是现代OS用来存储和管理信息的机构,具有按名存取的功能,不仅能方便用户对信息的使用,也有效提高了信息的安全性。本课题模拟文件系统的目录结构,并在此基础上实现文件的各种操作方法。
通过课程设计, 深入理解文件目录的作用和功能,掌握文件打开结构,熟悉与文件有关的系统调用,从而更好的掌握文件系统的概念。
(1)掌握文件系统的基本原理、结构和实现方法。
(2)掌握文件系统中文件的建立、打开、读/写、执行、属性等系统调用的使用
(3)学会设计简单的文件系统并实现一组操作
(4)通过实验学习文件系统的系统调用命令,提高文件系统实现功能的理解和掌握。
二.课题任务
为简单起见,假设文件物理结构为连续结构,编程模拟一个简单的文件系统,实现对文件的各种管理和控制功能。
1.文件目录采用二级目录结构,第一级为文件目录MFD,如图1所示;第二级为用户文件目录UFD,如图2所示。
用户名
用户文件目录地址
图1 MFD结构
文件名
文件保护方式
文件当前长度
文件最大长度
文件所在地址
图2 UFD结构
在UFD中,文件保护方式,用0表示文件可读;用1表示文件可读可写,执行,用2表示文件可写。
2.为加速文件存取,为每个用户建立一张用户打开文件表UOF,用以记录该用户当前正在使用的文件。假定最多允许打开4个文件,该表设置问4项,当打开文件个数超过4时,应给出出错信息。为此应该设置一个用户打开文件计数器,以控制文件打开个数,计数器初始化为0.UOF结构图如图3所示。
文件名
文件操作方式
读指针
写指针
文件当前长度
文件所在地址
状态
图3 UOF结构
在图3中,“文件操作方式”时指文件打开后要执行的操作,“状态”是指用户打开文件表的各个表象为空表目或被占用。读写指针用来指出文件的存取位置。出事状态下,读指针=1,写指针=文件长度,文件长度=0。
用户建立或打开一个文件时,将制定文件的说明信息登记在用户打开文件表中,其中为了给创建的文件分配磁盘空间,可引入一个计数器,用它来模拟磁盘使用情况,初始化为10。假定一个磁盘块大小为64个字节。
3.为该文件系统提供6条操作命令:创建、打开、读、写、关闭、删除、复制、粘贴等。要创建文件并向文件中保存信息时,用户程序应用create、write、close等3条命令来实现;当要读文件时,用户文件应使用open、read、close等3条命令来实现。
4.在该模拟系统中,应先建立主文件目录、用户文件目录和用户打开文件表,然后接受合法用户,给出一个菜单,按用户选择执行相应操作。
三.课题相关知识
设计一个简单的二级文件系统
设计内容:
编写程序模拟实现一个简单的文件管理系统,方便用户使用。
设计方法:使用两个结构体,USD、LIST分别存储用户和文件两个层次的数据信息,LIST链表有两个指针child、next,分别存储下一级文件和其他同级文件而实现树型的多级文件存储和管理。
结构体如下:
typedef struct list LIST;
struct list
{
char listname[10];///文件名长度
int type;
int length;/////文件长度
int protect;/////保护模式,0为只读1为可读写
int flag;//////标志,为0时创建文件夹,为1时创建文件
int mark;///标志文件状态,是否忙碌
char* content;
struct list *parent;
struct list *child;
struct list *next;
};
typedef struct usd USD;
struct usd
{
char username[10];////用户名长度
LIST *list;
struct usd *next;
};
除此以外,还用到一下自定义函数,其功能注释
文档评论(0)