-
操作系统课设--多用户多级目录的文件系统
2021-01-15 22:45:48本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1. 在...一、课程设计的内容
本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
二、课程设计的要求与数据
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一、设计思想说明
1.1设计环境
a、编程语言:C++
b、开发环境:DEV
c、操作系统:windows 101.2 设计思想
1.2.1整体思路
本次课程设计是一个模拟的多用户多级目录的文件系统,可以支持多用户注册、登录、注销,支持多级目录,文件按名存取,支持文件的增删查改,使用FAT显示链接保存文件在磁盘的分配,使用位示图保存磁盘块的使用情况。
整个项目主要内容分为三个模块的开发:一是用户模块,二是文件模块,三是磁盘模块。
1.2.2 用户模块
用户模块内容主要包括初始化建立管理员账号、注册账号、登录验证、退出登录、删除账号、打印所有用户等功能。
使用账号头指针admin将所有的账号链接起来,为所有的用户创建一个同名用户文件夹,该账号下的所有文件操作都在该文件夹下执行。
用户指针保存用户名、用户密码、指向下一个用户的指针和指向账号文件夹的指针。
1.2.3 文件模块
文件模块内容主要包括创建文件(文件夹或文件)、创建文件的索引结点、进入文件夹、读文件、写文件、删除文件、删除文件夹、回退到上一个文件、打印所有目录、打印当前文件夹目录等功能。
采用树形结构目录存储文件目录,并使用孩子兄弟链表法存储表示。
定义一个账号文件夹头指针admin_folder,所有的用户文件夹都存储在该文件夹下,其是一个实际不存在的文件夹。即admin_folder->child结点指向第一个用户文件夹root,root的brother指向其他用户文件夹。
定义一个当前文件夹指针now_folder,用来指向当前所在的文件夹。
树形文件目录中保存文件名、文件类型、和索引结点,索引结点中保存文件大小、文件在磁盘中的第一个盘块号等具体文件信息。
1.2.4 磁盘模块
磁盘模块主要保存初始化磁盘、初始化FAT表、在FAT中查找空闲盘块、打印位示图等功能。
FAT表中保存当前盘块号、下一个盘块号和位示图,物理盘中保存磁盘块号、块大小和存储内容。
用一个block[block_count]数组模拟磁盘,建立一个等大的fat[block_count]数组保存FAT。二、系统结构
2.1 结构联系
系统大体分为三层,最顶层是用户层,包含对账号的操作等功能,只有登录了之后才能进行文件层的文件操作,每个用户账号都拥有一个用户文件夹。
文件层可以进行对文件的操作,比如创建和读写删等操作,但不允许删除根目录用户文件夹,树形文件目录中仅保存文件名和索引节点。
物理层中存储磁盘的使用情况和文件内容,使用FAT显示链接将文件链接起来,通过FAT表查找到文件在磁盘的块号,在磁盘块中读出文件的内容。
三、数据结构的说明
3.1 user_management
typedef struct mfd { // 主文件目录,存储用户文件夹
string username; //用户名
string password; //用户密码
struct mfd next; //指向下一个用户的指针
TSD link; //指向该用户的文件目录指针
}MFD;
3.2 file_management
typedef struct tsd { //树形文件目录
string name;
short type; //文件类型,文件夹或者文件
struct tsd father; //父节点指针
struct tsd child; //孩子节点
struct tsd* brother; //兄弟节点
INDEXES* indexes; //索引结点
}TSD;typedef struct indexes{ //索引结点
short capabilities; //访问权
int size; //占用空间
int first_block; //文件物理地址(盘块号)
}INDEXES;3.3 disk_management
typedef struct fat { //文件分配表
bool bitmap; //位示图
int id; //当前盘块号
int next_id; //下一个盘块号
}FAT;typedef struct block { //磁盘
int id; //物理块号||盘块号
unsigned int s_BLOCK_SIZE;
string content; //存储内容
}BLOCK;四、算法流程图
五、主要函数列表
六、 测试与分析
1.初始界面
2. 文件夹的创建和进入文件夹
3.创建文件和对文件的读写和删除文件
-
返回上一层目录和删除文件夹
-
打印目录
-
打印位示图
七、 用户使用说明
本系统内置一个管理员账号root,密码root,在初始界面登录或者进行账号管理。
登录系统后可以按照提示进行文件操作
create [file name] 创建文件
read [file name] 读文件
write [file name] 写文件
delete [file name] 删除文件
mkdir [dir name] 创建子文件夹
cd [dir name] 进入子文件夹
rd [dir name] 删除文件夹
dir 打印当前目录下文件
dir_all 打印所有文件
show 打印位示图
retreat 回退到上一级文件夹
logout 退出登录
help 提示在账号管理时,可以按照提示输入对应的数字来选择操作
八、附录
-
-
多用户多级目录文件系统的实现
2015-09-16 09:22:404.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.... -
多用户多级目录文件系统.zip
2021-01-15 22:54:31通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1. 在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个... -
模拟采用二级目录结构的磁盘文件系统中的文件操作_[源码和文档分享]基于Android实现的文件系统模拟...
2021-01-28 11:27:27本项目基于Android的操作系统,来模拟实现文件管理系统,并且学习Android环境下使用Java实现申请磁盘空间、分配并管理物理空间以及多级目录结构。1.2 项目功能在内存中开辟一个空间作为文件存储器,在其上实现一个...一、使用说明
1.1 项目简介
在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统。本项目基于Android的操作系统,来模拟实现文件管理系统,并且学习Android环境下使用Java实现申请磁盘空间、分配并管理物理空间以及多级目录结构。
1.2 项目功能
- 在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统
- 退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其回复到内存中来
- 文件存储空间管理采取显式链接
- 空闲空间管理采用位图
- 文件目录采用多级目录结构,目录项目中包含:文件名、文件大小、创建日期、文件类型信息
- 该文件系统提供操作:格式化、创建文件夹、删除文件夹、显示目录、更改当前目录、创建文件、打开文件、关闭文件、写文件、读文件、删除文件、复制、粘贴、查看属性、退出系统
1.3 操作手册
运行程序后,首先进入文件管理系统操作界面。
新建文件(文件夹)并命名
点击右上角“+”按钮可以新建文件或文件夹,并可以给该文件或文件夹命名。
参考文档和完整的文档和源码下载地址:
https://www.write-bug.com/article/1300.html
-
Linux--目录结构
2020-06-17 11:53:59Linux采用的多级目录树型层次结构,树形结构最上层是根目录 :"/",但是在DOS和Windows中,这样的树形结构的根目录是磁盘分区的盘符(C,D,E,F),所以在Windows中是森林 文件扩展名与文件类型无关 Linux中每个...在安装系统时,安装程序就已经位用户创建了文件系统和完整而固定的目录组成形式
Linux采用的多级目录树型层次结构,树形结构最上层是根目录 :"/",但是在DOS和Windows中,这样的树形结构的根目录是磁盘分区的盘符(C,D,E,F),所以在Windows中是森林
- 文件扩展名与文件类型无关
- Linux中每个分区都是一个文件系统,有自己的目录层次结构,Linux将分属不同分区,单独的文件系统按“挂载”的方式组成一个系统的,总的目录层次结构
- 挂载:就是将一个文件系统的顶层目录挂到另一个文件系统的子目录下,使之成为一个整体,上一层文件系统的子目录就称为挂载点
- 挂载点必须是一个目录
- 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但是挂载后这个目录下以前的内容将不可用
- 挂载前要了解Linux是否支持所要挂载的文件系统格式
- 光盘,软盘以及其他操作系统使用的文件系统的格式于Linux是否支持所要挂载的文件系统格式
- 光盘:ISO9660
- 软盘:fat16或者ext2
- Windows:fat16,fat32,NTFS
- Linux:ext2,ext3
目录结构
- /:文件系统最高一级的目录,称为根目录,一般不把文件放在根目录下
- /bin:进行系统操作所需要的基础命令,即最小系统所需要的命令,位于此目录。这个目录都是普通用户可以使用的可执行文件
- /boot:Linux的内核及引导系统程序所需要的文件,比如vmlinuz,initrd.img,一般情况下,系统引导管理器GRUB位于此目录
- /dev:设备文件存储目录,比如磁盘,光驱,终端设备
- /etc:系统配置文件所在地
- /home:普通用户家目录的默认父目录
- /lib:库文件的存放目录
- /lost+found:在ext2,ext3,ext4文件系统中,系统崩溃或者意外关机而产生的一些文件碎片放在这里,当系统启动的过程中给fsck工具会检查这里,并修复已经损坏的文件系统
- /media:即插即用型存储设备的挂载点自动在这个目录下创建
- /mnt:这个目录一般用作挂载点的父目录,将其他存储设备挂载到该目录的子目录下
- /opt:有些软件包会被安装在这里,建议将自编译的软件(即通过源码包安装的软件)安装在这个目录中
- /proc:操作系统运行时,进程信息及内核信息(CPU,硬盘分区,内存信息)存放在这里
- /root:Linux超级权限用户root的家目录
- /sbin:这个目录和/usr/sbin或者/usr/local/sbin目录一样,存放的是涉及系统管理的必须有root权限才能执行的命令
- /tmp:临时文件目录,/var/tmp目录和这个目录相似
- /usr:存放系统软件包程序的目录,比如命令,帮助文件等
- /var:这个目录的内容经常变动,/var/log存放系统日志的目录,/var/www是Apache服务器站点的存放目录,/var/spool式打印机,邮件,代理服务器等假脱机文件(有输入井和输出井)存放目录
文件类型
- 普通文件:白色,文本文件,二进制文件;‘-’
- 文本文件:基于字符编码(ASCII,UTF8)
- 二进制文件:基于值编码的文件(由具体的应用程序指定或区分某个值是什么意思),比如编译
- 目录文件:蓝色;‘d’
- 链接文件:浅蓝色;‘l’
- 设备文件:黄色;字符设备:一次传一个字节,串行;块设备:一次传一块(4KB),并行
- 块文件:‘b'
- 字符文件:‘c’
- 压缩文件:红色
- 可执行文件:绿色
无论那种类型的文件,Linux都以无结构的流式文件(把文件的内容看成一系列有序的字节流)
Linux中shell种类
- Bourne Shell(sh)
- Korn Shell(ksh)
- C Shell(csh):主要在BSD版本的UNIX系统中使用,语法和C语言类似
- BASH:Linux系统默认的Shell
Linux的环境变量
- 系统级的环境变量对登陆系统的所有用户均有效
- 用户级的环境变量仅对当前登录用户有效
- PATH:命令搜寻路径,指明Shell将到哪些目录中寻找命令或者程序
- HOME:当前用户的家目录
- HISTSIZE:历史记录数
- LOGNAME:当前用户的登录名
- HOSTNAME:主机的名称
- SHELL:当前用户使用的Shell类型
- LANGUAGE:语言相关的环境变量
- MAIL:当前用户的邮件存放目录
-
多级多用户文件管理系统 源码+jar
2015-01-13 09:11:334.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作: (1)... -
【操作系统】多级索引、混合索引例题
2020-08-22 16:21:28多级索引: 文件系统采用多重结构搜索文件内容。设块长为512B,每个块号占3B,如果不考虑逻辑块号在物理块中所占的位置,分别求二级索引和三级索引时可寻址的文件最大长度。...eg1/某系统中磁盘的每多级索引:
文件系统采用多重结构搜索文件内容。设块长为512B,每个块号占3B,如果不考虑逻辑块号在物理块中所占的位置,分别求二级索引和三级索引时可寻址的文件最大长度。
设块长为512B,每个块号占3B,一个物理块可放:512/3=170个目录项,即:
一个一级索引可存放的文件大小为:170×512=
一个二级索引可存放文件的大小为:170×170×512=
一个三级索引可存放文件的大小为:170×170×170×512=混合索引:
eg1/某系统中磁盘的每个盘块大小为1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址6项,一级索引地址2项,二级索引地址1项,每个盘块号占用4个字节,请问该系统中允许的文件最大长度是多少?
一个盘块可记录的盘块号的数量为∶1KB/4=256
直接地址∶记录6个文件所占物理块的块号
一级索引∶记录256x2=512个文件所占物理块的块号
二级索引∶记录256x256个文件所占物理块的块号
该系统中允许的文件最大长度 (256x256+256x2+6)*1KB=eg2/存放在某个磁盘上的文件系统,采用混合索引分配方式,其FCB中共有13 个地址项,第0~9个地址项为直接地址,第10个地址项为一次间接地址,第11个地址项为二次间接地址,第12个地址项为三次间接地址。如果每个盘块的大小为4K字节,若盘块号需要用4个字节来描述,请问该系统中允许的文件最大长度是多少?
由题意可得,每个盘块最多存放4K/4=1K个盘块地址。
4K×(10+1K+1K×1K+1K×1K×1K)=40K +4M+4G +4T= -
操作系统 实验十 简单文件系统的实现
2020-12-18 10:08:53今日作业: ...实验原理 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件...文件目录结构采用多级目录结构。为简单起见,可以不使用索引结点,每个目录 -
基于JAVA实现的文件系统
2019-09-26 20:21:44在操作系统课上的一点小感想,基于JAVA的文件系统,分享出来和大家一起学习。 文件存储空间管理可采取... 文件目录采用多级目录结构。至于是否采用索引节点结构,自选。目录项目中应包含:文件名、物理地址、长度等... -
基于JAVA的文件系统
2019-07-21 07:38:28一、项目需求 在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统。退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其恢复到内存中来。... 文件目录采用多级目录结构。至... -
基于C#实现的文件管理系统
2019-08-15 08:32:00一、项目背景在内存中开辟一个空间作为文件存储器(虚拟磁盘),在其上实现一个简单的文件管理系统退出这个文件系统时,应将文件系统的内容保存在磁盘上,下次将其恢复到内存中文件目录采用多级目录结构二、开发/... -
操作系统作业-文件管理-文件系统.zip
2020-09-23 20:10:52- 文件目录采用多级目录结构。至于是否采用索引节点结构,自选。目录项目中应包含:文件名、物理地址、长度等信息。同学可在这里增加一些其他信息。 - 文件系统提供的操作: - 格式化 - 创建子目录 - 删除子目录 - ... -
操作系统-期末复习-第六章 文件系统
2020-12-15 11:22:402.在操作系统中,特别文件的概念 设备文件(Linux中) 3.文件系统采用多重索引结构搜索文件内容的计算 一次间接二次间接 4.理解文件控制块(目录项) 5.多级目录的优势 文件系统的功能是什么?... -
操作系统课程设计——文件管理系统
2010-06-21 20:05:394、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5、对文件或目录的操作采用windows系统的API函数来实现。 6、设计一个较实用的... -
数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版
2013-04-05 13:45:32全书共分4个部分,第一部分介绍最基本的概念、术语及建模原则,第二部分描述了关系数据模型和关系型DBMS,第三部分讨论数据库设计,第四部分主要描述数据库系统中使用的物理文件结构和存取方法。书中涉及的内容非常... -
MOOC南京大学操作系统第五次单元测验
2020-05-25 12:52:111.Unix系统中,文件的索引结构存放在_________中。 编号 选项 A inode节点; B 超级块; C 空闲块; D 目录项; 2.操作系统中对文件进行管理的部分叫做____。 编号 选项 A 文件系统; B ... -
MOOC南京大学计算机操作系统第五次单元测试答案
2021-01-06 16:14:14Unix系统中,文件的索引结构存放在_________中。(D) 选项 描述 A 超级块 B 目录项 C 空闲块 D inode节点 2.操作系统中对文件进行管理的部分叫做____。(A) 选项 描述 A 文件系统 B 数据... -
《计算机操作系统》期末复习指导
2009-12-30 10:57:55•在操作系统中,大量采用“表格”管理。 5、文件存取控制 •解决文件保护、保密和共享 •常用的文件存取控制方法有:存取控制矩阵、用户权限表、使用口令、使用密码 6、文件系统的数据结构和... -
盛世桃源网络存储系统 v.2010.5.1.rar
2019-08-30 01:07:23总之,这一切均可以自定义,通过自定义这些要素,无论您在那个行业,您内部是什么结构,您喜欢如何描述您的用户或文件,您想如何控制系统特性或权限,您都可以自行定义,从而轻松地获得一套非常适合您应用的系统,这... -
DXE-shop网店系统 v1.2.zip
2019-07-07 18:39:52为方便开发调试,系统预置了开关,可在页面下方或FirePHP中输出所有SQL语句和查询结果,以及调用堆栈等信息,极大方便了在开发过程中对数据的掌控。 更新说明: 2013-11-06 人气组合前台实现 将商品原来的...
-
华为1+X——网络系统建设与运维(高级)
-
maindianzishizh.c
-
jquery怎么操作json
-
Apache Solr 远程命令执行漏洞 CVE-2017-12629 漏洞复现
-
机载激光雷达沙尘探测能量优化配置的统计研究
-
Samba 服务配置与管理
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
那些技术文档
-
MySQL Router 实现高可用、负载均衡、读写分离
-
Python剑指42.(lc53.)连续子数组的最大和---动态规划、分治算法
-
五金机械工具箱电商淘宝详情页设计模板.zip
-
漫谈TCP新算法Elastic-TCP
-
程序员必修基础套餐课
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
mac 配置php-fpm
-
一起看看 Activity启动模式
-
精益用户体验(UX):摆脱只注重结果的工作
-
鸿蒙系统Harmonyos源码架构分析-第1期第2课
-
开源软件测试模型
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺