资源简介
1. 在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。2. 文件物理结构可采用显式链接或其他方法。3. 磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4. 文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。5. 设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建: create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete (9)创建目录(建立子目录):mkdir(10)改变当前目录:cd(11)列出文件目录:dir(12)退出:logout6. 系统选用程序设计语言:C。7.含源代码与实验报告
代码片段和文件信息
#include
#include
#include
#include
#include
const unsigned FILE_SYS_SIZE = 1024 * 1024; //模拟文件系统的容量设为1M
const unsigned BITMAP_LEN = 64; //位示图的长度 512/8
const unsigned BLOCK_SIZE = 512; //一个文件块的大小
const unsigned BLOCK_COUNT = 512; //文件系统中文件块的数量
const unsigned NAME_LEN = 11; //最长文件名的长度
const unsigned PASSWORD_LEN = 11; //用户密码的最大长度
const unsigned LOGIN_COUNT = 5; //用户登录尝试次数
const unsigned COMMAND_LEN = 200; //命令行最大长度
const unsigned PRO_SET_COMM_COU = 10; //预设命令数
const char *PRO_SET_COMM[] = {“create“ “open“ “read“ “write“ “close“ “delete“ “mkdir“ “cd“ “dir“ “logout“};
//文件元素可供操作性权限
typedef enum
{
pub //任何人可做任何操作
protect //非创建者或ADMIN,只可以察看
pri //非创建者或ADMIN,不可以做任何操作
} FileAccess;
//文件元素类型
typedef enum
{
file //文件
dir //文件夹
} FileType;
//用户类型
typedef enum
{
admin //管理者,拥用所有权限
comm //一般用户
} UserType;
//文件状态
typedef enum
{
closed
opened
reading
writing
} FileStatus;
//一个文件索引结构
typedef struct
{
unsigned Index; //文件元素索引编号
char FileName[NAME_LEN]; //文件元素名
char ParentName[NAME_LEN]; //父节点名
unsigned FileBlockId; //文件元素所在物理块编号
unsigned FileLevel; //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置
unsigned effect; //是否有效,0-无效,1-有效
} FileIndexElement;
//文件索引结构或目录表项
typedef struct
{
FileIndexElement *FIStart; //文件系统中的文件索引起始位置
unsigned FILen; //文件索引的最大长度
unsigned FICount; //文件索引数量
} FileIndex;
//文件块的结构
typedef struct fb
{
unsigned FileBlockId; //文件块编号
unsigned BLOCK_SIZE; //文件块的容量
char *FileBlockAddr; //文件块地址
struct fb *next; //下一个文件块的地址
} FileBlock;
//文件系统的位示图结构
typedef struct
{
unsigned BITMAP_LEN; //文件位示图长度
char *BMStart; //位示图的起始指针
} BitMap;
//文件系统结构
typedef struct
{
char *FSStart; //文件系统的起始地址
unsigned SuperBlockSize; //文件系统的容量
BitMap bm; //文件系统中的位示图
unsigned BLOCK_COUNT; //文件系统中文件块的数量
FileBlock *head; //文件系统中文件块首地址
FileIndex FI; //文件系统中的文件索引
} SuperBlock;
typedef struct
{
char *UserName; //用户名称
UserType ut; //用户类型
} User;
//文件系统中的元素结构,包括文件和文件夹
typedef struct fse
{
struct fse *parent; //指向自己的父亲节点
unsigned FileLevel; //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置
char FileName[NAME_LEN]; //文件元素名
unsigned FileBlockId; //文件元素所在物理块编号
unsigned FileElemLen; //文件元素的长度
FileType Type; //文件元素类型
FileAccess Access; //文件元素可供操作的权限
User Creator; //文件创建者
char CreateTime[18]; //创建时间,日期格式:MM/DD/YY HH:MI:SS
char LastModTime[18]; //最后一次修改时间
char *FileData; //一个文件的数据开始地址,文件夹时该值为NULL
FileStatus fileStu; //如果是一个文件表示文件当前的状态
} FSElement;
//系统当前状态
typedef struct
{
User CurrentUser; //当前用户
unsigned FileLevel; //用户所在文件系统层
FSElement *CurrParent; //当前层的父节点
char *CurrentPath; //当前路径
} CurrentStatus;
SuperBlock FS; //一个全局文件系统的变量
CurrentStatus CS; //当前系统状态
FSElement *base; //文
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 637440 2007-06-29 10:57 FileSystme\实验报告.doc
文件 22214 2007-06-29 00:45 FileSystme\多用户多级目录文件系统.cpp
文件 49152 2007-06-29 00:50 FileSystme\可执行文件.exe
目录 0 2007-08-30 01:11 FileSystme
----------- --------- ---------- ----- ----
708806 4
- 上一篇:amlogic编译
- 下一篇:DL/T614-2007 多功能电能表
相关资源
- UNIX文件系统
- 沈阳大学操作系统课程设计
- 操作系统课程设计-消费者生产者问
- 可变式分区存储管理 实验报告和源代
- 广工最新2020操作系统课程设计
- 操作系统课程设计-简单字符设备和块
- 1---17030140015+党奇伟+西电计算机操作系
- 操作系统课程设计页面置换算法
- 操作系统课程设计报告-建立基于磁盘
- 串联文件,连续文件的存储模拟
- 华工操作系统课程设计
- 操作系统课程设计多级目录查询
- 时间片轮转、最高响应比优先调度算
- 进程调度模拟设计——先来先服务、
- 文件系统源码--操作系统课程设计
- 计算机操作系统课程设计报告.docx
- 基于FAT16的虚拟文件系统——操
- 华中科技大学操作系统课程设计源代
- 15年操作系统课程设计
- 操作系统课程设计(虚拟文件系统)
- 操作系统课程设计-文件管理系统-源码
- 操作系统课程设计-文件系统源码+文档
- 操作系统课程设计 目录查询
- 操作系统课程设计 处理机调度程序
- 文件管理系统-操作系统课程设计
- 操作系统课程设计小型命令处理器s
- 操作系统课程设计--模拟文件系统
- \\操作系统课程设计银行家算法,生产
- 华中科技大学操作系统课程设计
- 操作系统课程设计--死锁
评论
共有 条评论