资源简介
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
................................................
代码片段和文件信息
//************************disk.cpp********************************
# include “disk.h“
#include
#include
#include
#include
#include
using namespace std;
Cdisk::Cdisk() //管理磁盘的类,构造函数
{
int i=0;
char code1[10]=“201208“;
char name1[10]=“admin“;
strcpy(codecode1);
strcpy(namename1);
for(i=0; i<10000; i++) //初始化所有磁盘块为空闲
disk_block[i]=‘$‘;
//this->user[0].set_user(“student““123“);//默认一个用户char
disk_empty=10000;
cout.setf(ios::left); //设置输出方式
}
Cdisk::~Cdisk() //析构
{
}
int Cdisk::dele_user(int i) //Cdisk类dele_user的构造
{
Cuse C;
C=user[i];
user[i].dele_user(); //调用Cuse类的成员函数 int dele_user()
return 1;
}
int Cdisk::dis_disk() //检查磁盘信息
{
int i=0;
cout< for(i=0; i<5; i++)
if(user[i].get_status()==1) //存在的用户的信息
cout< cout<<“已用空间:“<<10000-disk_empty< return 1;
}
int Cdisk::login(char b) //登陆
{
char n[10]c[10];
int i;
if(b==‘1‘)
{
cout<<“请输入用户名:“< cin>>n;
cout<<“请输入密码:“< cin>>c;
if(!strcmp(nname))
{
if(!strcmp(ccode))
{
cout<<“管理员登陆成功!“;
system(“pause“);
return 1;
}
else
{
cout<<“密码错误!“< system(“pause“);
return -1;
}
}
else
{
cout<<“没有该用户名!“;
system(“pause“);
return -1;
}
}
else
{
if(!user[0].get_status()) //当前不存在用户
{
i=0;
cout<<“当前用户为空,欢迎注册!“< user[i].set_status(1); //为新用户分配权利
cout<<“请输入用户名:“< cin>>n;
cout<<“请输入密码:“< cin>>c;
user[i].set_user(nc); //调用Cuse的成员函数,传递用户名与密码
cout<<“恭喜,创建用户成功!“< return i;
}
else
{
cout<<“用户名:“;
cin>>n;
cout<<“密码:“;
cin>>c;
cout< for(i=0; i<5; i++) //查找是否存在此用户
{
if(user[i].get_status()) //存在方比较
if(!strcmp(nuser[i].get_name())) //相等时为0,此判断为匹配
if(!strcmp(cuser[i].get_code())) //密码匹配
{
cout<<“登陆成功!“< cout<<“欢迎“< return i;
}
else
{
cout<<“密码错误“<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 22151 2015-07-17 13:45 计算机1208班20124016\FS\disk.cpp
文件 2178 2015-07-13 17:16 计算机1208班20124016\FS\disk.h
文件 1116 2015-07-09 17:21 计算机1208班20124016\FS\FS.cbp
文件 1551 2015-07-22 17:52 计算机1208班20124016\FS\FS.depend
文件 687 2015-07-24 09:20 计算机1208班20124016\FS\FS.layout
文件 4237 2015-07-17 13:36 计算机1208班20124016\FS\main.cpp
文件 3259 2015-07-09 11:02 计算机1208班20124016\FS\menu.cpp
文件 138240 2015-07-09 23:13 计算机1208班20124016\FS\绘图1.vsd
文件 1015473 2015-07-17 13:46 计算机1208班20124016\FS\bin\Debug\FS.exe
文件 10444 2015-07-15 14:23 计算机1208班20124016\FS\doxygen\doxyfile
文件 59542 2015-07-17 13:46 计算机1208班20124016\FS\obj\Debug\disk.o
文件 21292 2015-07-17 13:36 计算机1208班20124016\FS\obj\Debug\main.o
文件 2346370 2015-09-16 09:16 计算机1208班20124016\20124016.doc
目录 0 2015-07-24 09:19 计算机1208班20124016\FS\bin\Debug
目录 0 2015-07-24 09:19 计算机1208班20124016\FS\obj\Debug
目录 0 2015-07-24 09:19 计算机1208班20124016\FS\bin
目录 0 2015-07-24 09:19 计算机1208班20124016\FS\doxygen
目录 0 2015-07-24 09:19 计算机1208班20124016\FS\obj
目录 0 2015-07-24 09:20 计算机1208班20124016\FS
目录 0 2015-07-24 09:21 计算机1208班20124016
----------- --------- ---------- ----- ----
3626540 20
评论
共有 条评论