操作系统课程设计---多用户多级目录文件系统的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
课程名称:操作系统
课程设计题目:多用户多级目录文件系统的实现姓名:
系:
专业:
年级:
学号:
指导教师:
职称:
2011-2012学年第一学期
目录
1.设计思想说明 (1)
2.系统结构说明 (1)
3.数据结构说明 (2)
3.1开发环境 (2)
3.2数据存储 (2)
3.3数据结构 (2)
3.3.1数据块在内存中的物理结构 (2)
3.3.2文件索引结构 (2)
3.3.3文件系统中文件元素的结构(含文件夹和文件) (3)
3.3.4文件系统结构 (3)
3.3.5文件系统的当前运行状态 (4)
3.3.6用户结构 (4)
4.各主要模块的算法流程图 (4)
4.1整体思路概述 (4)
4.1.1login (用户登录) (4)
4.1.2系统初始化 (5)
4.1.3文件的创建: create (5)
4.1.4文件的打开:open (6)
4.1.5文件的读:read (7)
4.1.6文件的写:write (8)
4.1.7文件关闭:close (10)
4.1.8删除文件:delete (10)
4.1.9创建目录(建立子目录):mkdir (11)
4.1.10改变当前目录:cd (12)
4.1.11列出文件目录:dir (14)
4.1.12退出:logout ......................... 错误!未定义书签。
4.2算法流程图................................... 错误!未定义书签。
5.使用说明书 (15)
5.1登录 (15)
5.2新建目录和列出文件目录 (16)
5.3改变当前目录 (16)
5.4文件的创建 (16)
5.5文件的打开 (17)
5.6文件的写 (17)
5.7文件的读 (17)
5.8文件的关闭 (17)
5.9文件的删除 (17)
5.10返回根目录 (18)
5.11退出 (18)
6.总结........................................... 错误!未定义书签。参考文献. (1)
课程设计题目名称
1.设计思想说明
本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
2.系统结构说明
2.1在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
2.2文件物理结构可采用显式链接或其他方法。
2.3磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
2.4文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
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
2.5.8删除文件:delete
2.5.9创建目录(建立子目录):mkdir
2.5.10改变当前目录:cd
2.5.11列出文件目录:dir
2.5.12退出:logout
3.数据结构说明
3.1开发环境
Visual C++6.0下的win32控制台程序,C语言。
3.2数据存储
在内存中申请1M的空间来模拟存取设备,空间划分为三部分,第一部分用来存放位示图,用于标识数据块的使用情况,第二部分放置一个文件索引的数据,用于快速的查找数据,第三部分放置数据信息,第三部分划分为512块,每块512B,其256K,放置在1M空间的最末端,由第三部分的大小可知,第一部分只需64B即可,中间的部分用来存放文件索引。其他用到的存储单元由系统分配。
3.3数据结构
3.3.1数据块在内存中的物理结构
typedef struct fb
{
unsigned FileBlockId; //文件块编号
unsigned BLOCK_SIZE; //文件块的容量
char *FileBlockAddr; //文件块地址
struct fb *next; //下一个文件块的地址
} FileBlock;
3.3.2文件索引结构
typedef struct
{
unsigned Index; //文件元素索引编号
char FileName[NAME_LEN]; //文件元素名
char ParentName[NAME_LEN]; //父节点名
unsigned FileBlockId; //文件元素所在物理块编号
unsigned FileLevel; //文件元素所在层次,层+文件元素
名为一个文件元素逻辑位置