Skip to content

MoonLightMadness/OperationCD-FileSystemManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

操作系统课设---文件系统管理

一、题目要求

设计题目:文件系统管理
设计内容:模拟 unix 多个登录界面(3 个用户),在系统出现登录模块(输入旧用户或新增
用户)后 ,输入用户与口令,在用户登录后进行系统初始化,建文件卷、将用户和口令信息保
存在假定的磁盘空间里,同时备份到几个指定的文件中,供下次启动此系统时恢复用。
模拟磁盘:
申请 1M 内存空间,供最多 3 个用户,并对用户的模拟磁盘的目录结构,文件全部存入文件中,
在下次启动时恢复到系统的目录树及相应的链表中。
设计要求:模拟 unix 文件系统的命令与其命令的具体实现:
(1) login:用户登录;
(2) logout: 用户退出系统
(3) canceluser:取消一个用户
(4) modifypsw:修改用户的密码
(5) dir:列出当前目录下的所有文件及子目录
(6) cd:显示当前的目录名
(7) cdback:退到上一级目录
(8) cdfore: 进入下一级子目录
(9) cdroot:回到根目录
(10) mkdir:新建一个子目录
(11) my_deletedir:删除一个子目录
(12) my_create:新建一个文件
(13) my_deletefile:删除一个文/
设计报告:
1、给出主要算法流程图
2、给出用到的主要数据结构
3、给出测试数据和测试结果

二、题目分析

程序框架见下导图:

导图

其中: Kernel为文件夹,其中包含user、backup、environment三个子文件夹。 user文件夹中存放用户信息文件(.user)及模拟的磁盘file文件夹。 backup备份文件夹,存放用户信息的备份文件(.user.backup)。 environment索引文件夹,存放各用户磁盘文档的索引。 SupporterClass为辅助类,主要提供真实操作系统与模拟系统之间的地址转换服务。 CMDClass为主要类,提供各种命令的支持。 UserClass为结构类,主要构建一个完整的User用户

三、主要数据结构、算法及其流程图

1、用户登录流程

有如下流程图:

登录

其中: 1:逻辑地址解析器将系统的绝对路径转化为模拟系统的逻辑地址 例如:一个名为root的用户在home目录下有名为usr的子目录,那么此时,这个usr目录的绝对地址可能为:C:\OSCourseDesign\system\kernel\user\root\file\home\usr。经过解析,这个目录变成了:home\usr。

2、命令输入及处理流程

有如下流程图:

命令处理

其中: 1.SuperCMD模式与CMDClass模式: 此二者均为命令解析模式 SuperCMD模式:管理员模式,主要能够创建和删除用户、用户登录。在执行完毕登录程序后自动转为CMDClass模式。 CMDClass模式:用户模式,拥有诸多命令,例如登出、修改密码、取消本用户、文件操作、文件夹操作等命令。在用户登出后自动转为SuperCMD模式。

3、涉及地址操作的命令流程

设计地址操作的命令有例如:新建文件(文件夹),删除文件(文件夹),进入子目录,返回上级目录等,这些命令的算法大致相同。 有如下流程图:

地址操作

其中: 真实地址解析器:由于程序中的一切地址均为逻辑地址,所以在操作过程中需要将逻辑地址转换为实际地址。 索引表:索引表中存储用户所有的文件及文件夹信息,其地址均为逻辑地址。

4、dir指令流程

有如下流程图:

dir

5、删除文件(文件夹)算法流程

有如下流程图:

delete

其中: 这种删除仅仅只是删除了索引表中对应的条目。并未真正意义上的删除对应文件,也就是说这个文件或者文件夹依旧存在于文件系统当中,只是用户已经无法看到了。

6、User的数据结构

数据结构类User有如下属性:

String Name;表示该用户的用户名

String nowPath;表示此用户现在所在的路径(逻辑地址)

String nowSinglePath;表示此用户现在所在的目录

有以下方法:

User GetInstance(String name){...}返回一个User实例

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages