广工操作系统课设--多用户多级目录的文件系统

本文介绍了一种模拟的多用户多级目录文件系统的设计与实现,涵盖了用户管理、文件操作、目录操作等功能,并实现了文件权限保护及不同文件类型的可视化显示。

广东工业大学课程设计任务书

一、课程设计的内容

本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

二、课程设计的要求与数据

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)退出:logout

6. 系统必须可实际演示,选用程序设计语言:C++、C等。

三、课程设计应完成的工作

1.充分理解设计的任务,完成设计的基本要求。然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。

\2. 独立独立完成系统的分析、设计、编码、测试工作。

3.完成设计报告的撰写。

4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。

四、课程设计进程安排

序号 设计各阶段内容 地点 起止日期
1 查阅资料、分析题目、概要设计 分散 周一
2 详细设计、编码 分散 周二
3 调试 实验室 周三
4 撰写设计报告 分散 周四
5 运行、验收 实验室 周五

五、应收集的资料及主要参考文献

[1] 计算机操作系统, 汤小丹等 ,西安电子科技大学出版社

[2] 操作系统实验指导书,傅秀芬,广东工业大学(自编)

[3] 计算机操作系统教程 ( 第二版 ), 张尧学、 史美林,清华大学出版社

[4] 现代操作系统,A.S.Tanenbaum 著,陈向群等译机械工业出版社

一、 设计思想说明

1.1 设计环境

a) 编程语言:Java

b) 开发环境:IntelliJ IDEA 2021.1.1

c) 操作系统:windows 11

1.2 设计思想

1.2.1 整体思想

本课设要求开发一个模拟的多用户多级目录的文件系统,要求实现多用户注册、登录与退出,文件的增删改查打开关闭以及目录的创建切换与显示。本人开发过程中基于Linux系统的文件目录操作思想以及输出格式进行开发,文件的物理结构采用显示链接法,磁盘空间的管理选择位示图,同时将位示图合并到FAT表中,目录项增加了索引结点的方式进行封装,大量节省目录的空间,加快访问速率。在100%完成任务书要求之余,我还基于linux文件权限简化设计了涉及文件创建者及其他用户的文件权限保护,并且,系统界面针对不同的文件格式可显示不同的颜色进行明显区分。整个系统分为四大模块的开发:用户管理模块,文件操作模块,目录操作模块,数据存储模块。

1.2.2 用户管理模块

用户管理包括用户注册、登录以及退出功能。

(1) 系统设置userMap<String username , User user>充当用户数据库,在磁盘上分配以磁盘块专门存放用户数据,系统运行之后就读入内存。

(2) 登录(login)进行用户名密码校验,登录后可显示用户上一次登录时间(这一点是仿造linux进行的添加),登录后默认进入每个用户的同名专属文件夹,设置内存curUser为当前用户。用户可以使用cd命令切换到其他有权限目录。

(3) 注册时进行用户名重名检测,将用户名、密码添加到用户数据库,注册成功后为用户添加一个同名用户文件夹,设置权限为(rwx—)只允许用户自己访问,同时加入根目录下。

(4) 用户退出时系统会自动进行数据持久化保存,保证数据不丢失。

Login、register操作只可以在未登录状态下进行,而logout操作只允许在登录状态下进行。

1.2.3 文件操作模块

文件操作包括创建(create)文件、打开(open)文件、关闭(close)文件、显示打开的文件(show_open)、读取(read)文件内容、覆盖写入或追加写入(write)文件、删除(delete)文件、文件重命名(rename)等操作。本系统的所有文件操作实现了跨目录操作,只要有权限以及文件存在便可以进行操作,而不是只能操作当前目录文件。

(1) create:用户输入create + 文件名,系统进行文件名判空和重名检测 如无重名文件即进行创建。创建过程包括创建文件索引结点和文件控制块FCB,文件大小为空文件,将FCB存入磁盘,修改父目录的文件项,加入到父目录的儿子集合。

(2) open: 用于打开文件,用于在对文件进行操作前需要先打开文件,这样可以方便操作系统分配资源使用权比如外设的管理。打开文件包括解析文件路径是否存在,解析是否是普通文件,判断用户权限,判断是否重复打开,然后封装为openFile加入到openFileList中。系统可选择打开多个文件。

(3) close:用于关闭文件,只有关闭文件才可以释放资源使用权,别的进程才可以进行使用该资源,用于在进行logout操作之前需要先确保关闭了打开的文件,否则无法正常退出。关闭过程包括:解析文件路径是否存在,解析是否是普通文件,判断是否在openFileList中。

(4) show_open:用于用户查看打开了什么文件,方便用于进行正常关闭操作。

(5) read:读取文件内容并显示出来给用户看。读取包括解析文件路径是否存在,解析是否是普通文件,判断用户权限,判断是否打开,必须先打开才能进行读取,随后进从文件的FCB中读取到第一块存放的位置,然后使用FAT表到磁盘进行一一读取。

(6) write:用于用户对文件写入内容。写入有两种模式:覆盖写与追加写,新文件默认是覆盖写。写入过程包括:解析文件路径是否存在,解析是否是普通文件,判断用户权限,判断是否打开,必须先打开才能进行写入。如果是覆盖写入,则先清除文件的旧FAT表分配关系,再进行分配,将用户输入内容分块写入磁盘,修改FAT表及位示图,修改父目录文件项及递归修改父目录的文件大小;如果是追加写入,则找到FAT中指定的最后一块,在此基础上继续分配。

(7) delete:删除文件,允许用户删除文件及空目录。删除过程包括:解析文件路径是否存在,解析是否有权限,删除文件需要有rw权限,删除文件夹还需要执行权限。判断是否打开,如果打开则要先关闭才能删除,随后修改父目录大小及文件项,修改FAT表及位示图

(8) rename:文件重命名操作。过程包括解析文件路径是否存在,解析是否是普通文件,判断用户权限,判断是否打开,判断文件名是否重复,随后修改文件的FCB中的名称字段。

1.2.4 目录操作模块

目录操作包括显示(dir)目录文件项详细信息、创建(mkdir)目录、切换(cd)目录、解析(pathReslove)路径、更新目录(updateSize)大小、显示目录(ls)文件名、显示(pwd)全路径、显示当前(showPath)目录、显示位示图(bitmap)。本系统的所有目录操作实现了全路径操作,只要有权限及文件存在即可进行操作。

(1) dir: dir操作与linux的ll指令实现效果基本一致,可以显示目录下文件的文件类型、目录权限、创建者、文件大小、修改时间、文件名。例如:drwx— 4 root 32 2022.10.1 a.txt 同时,对于不同后缀文件格式,也仿照linux进行不同颜色显示,白色表示普通文件、绿色表示可执行文件、红色表示压缩文件、蓝色表示目录文件。

(2) mkdir:默认在当前目录下创建新目录项。创建过程包括目录名判空,目录名判断重复,创建索引结点,创建FCB,存入磁盘,修改父目录文件项,加入到父目录儿子集合。

(3) cd:切换目录操作,可切换到用户指定的有权限目录。cd … cd …/表示切换到上级目录。切换目录包括解析目录路径,判空,判断是否是目录文件,判断权限,如果都正常即切换目录并更新内存指定的当前目录。

(4) pathReslove:用于所有需要路径解析的功能,解析指定路径是否存在,存在则返回文件或目录的FCB。路径解析包括判断是否是当前目录,在指定目录寻找,或从根目录往下逐层寻找。

(5) updateSize:作用于文件大小有变化,逐级往上递归修改父目录的文件大小。其过程包括逐级往上遍历,判断增加还是减少,直到遍历到根目录。

(6) ls:用于显示当前目录的文件名。过程包括获得内存指定的当前目录FCB,遍历输出儿子集合目录项。

(7) pwd:模仿linux操作,指令输入时不直接显示当前相对于根目录的全路径,而是显示当前目录名而已,使用pwd操作才可以获得全路径。过程包括逐层往上遍历直到根目录。

(8) showPath:用于输入命令时显示当前目录及当前登录的用户。

(9) bitmap:用于显示磁盘的使用情况,由于位示图嵌入FAT表,因此遍历FAT表可得到所有磁盘的使用情况。

1.2.5 数据存储模块

数据存储模块即磁盘操作,本系统实现了数据存储功能,用户所有的操作都是永久性的,当用户logout后,系统就会自动将用户数据和磁盘数据序列化存储到“system.data”中包括系统磁盘和FAT表初始化(init),从虚拟存储文件中加载磁盘数据(loadData),存储数据到虚拟磁盘文件(saveData),释放文件的磁盘空间(freeFile),写入数据到磁盘(writeToDisk),从磁盘中寻找空闲块(find_empty)。

(1) in

1 概述 文件系统操作系统用于明确存储备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。 本次实验我们实现多级目录下的文件管理系统,具备文件系统的文件创建、删除、读写以及目录的创建、删除等操作,并在内存中开辟一块空间,模拟虚拟磁盘,成功地展示出文件系统的功能和属性。 2 计的任务和要求 2.1 计任务 在下列内容中任选其一: 1、多用户多级目录结构文件系统计与实现; 2、WDM驱动程序开发; 3、存储管理系统的实现,主要包括虚拟存储管理调页、缺页统计等; 4、进程管理系统的实现,包括进程的创建、调度、通信、撤消等功能; 5、自选一个感兴趣的与操作系统有关的问题加以实现,要求难度相当。 2.2 计要求 1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定计方案; 2、计系统的数据结构和程序结构,计每个模块的处理流程。要求计合理; 3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果; 4、确定测试方案,选择测试用例,对系统进行测试; 5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问; 6、提交计报告。 集体要求: 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)退出:logout ................................................
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiong-952

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值