没有合适的资源?快使用搜索试试~ 我知道了~
实验四 文件管理 昆工版.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 65 浏览量
2022-10-19
09:06:41
上传
评论
收藏 466KB DOCX 举报
温馨提示
试读
35页
实验四 文件管理 昆工版.docx实验四 文件管理 昆工版.docx
资源推荐
资源详情
资源评论
昆明理工大学信息工程与自动化学院学生实验报告
( 2013 — 2014 学年 第二学期 )
课程名称:操作系统
开课实验室:信自楼 444
2014 年 5 月 28日
邹华宇 成绩
指导教师 杨云飞
教
师
评
语
年
月
日
一、实验目的
用 C 或 C++语言编写和调试一个简单的文件系统,模拟文件管理的基本功
能。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验原理及基本技术路线图(方框原理图)
用 C 模拟实现文件系统的管理;要求设计一个多级目录结构的文件系统,
能正确描述文件控制块,采用合理的外存分配方式,能实现基本的目录及文件
的操作,包括创建、删除、重命名、复制、移动等功能,并对文件有一定的存
取权限控制。
功能设计 :
Help
dir
显示命令帮助
显示当前目录下的文件和文件夹
退出系统
exit
create [文件名] 创建文本文件
cdir [目录名] 创建文件夹
第 1 页
read [文件名]
close[文件名]
edit [文件名]
cd [目录名]
读取一个文件最多可同时读取五个
关闭一个文件
编辑一个文件
进子目录或者上级目录
显示该文件的属性
删除文件
attr [文件名]
del [文件名]
rename [文件名] 重命名
第 2 页
编辑功能流程图:
删除文件流程图
创建文件流程图
第 3 页
核心算法:
bool Format(void);
bool install(void);
void login(void);
//格式化
//装载虚拟硬盘的数据
//用户登陆
void showMenu(void);
bool onAction(void);
//显示功能菜单
//用户选择功能并执行
void createFile(string str);//创建文件
bool read(string str); //读取文件
void editFile(string str); //编辑文件
void Delete(string str);
//删除一个文件
数据结构:
/*常变量*/
const unsigned int BLOCK_SIZE=512;
const unsigned int DATA_BLOCK_NUM=512;
//块长
//数据块数量
const unsigned int DINODE_START=4*BLOCK_SIZE; //inode 起始位置
const unsigned int DINODE_SIZE=512;
const unsigned int DINODE_NUM=32;
//inode 大小
//inode 数量
const unsigned int DATASTART=(2+DINODE_NUM)*BLOCK_SIZE; //
数据区的开始地址
const unsigned int ACCOUNT_NUM=10;
//用户数量
/*inode 结构体*/
struct inode{
unsigned short di_tag;
unsigned short di_number;
如一个目录至少包含两个文件:"."和".."
unsigned short di_mode;
//inode 标识
//关联文件数,当为 0 时表示删除文件,
//存取模式:0 为目录,1 为文件
unsigned short di_userID; //当前 inode 所属用户 0 为根目录 ID,一次
下去是管理员目录、用户目录
unsigned short di_access; //访问权限 0 为不允许普通用户访问(公共
目录),1 为允许普通用户访问
第 4 页
unsigned short di_size;
unsigned short di_ctime;
unsigned short di_mtime;
//文件大小,目录没有大小,值为 0
//创建时间
//最后一次修改时间
unsigned short di_block[DATA_BLOCK_NUM]; //数据块块地址编号
};
/*超级块*/
struct super_block{
unsigned short s_inodes_count;
unsigned short s_blocks_count;
unsigned short s_r_blocks_count;
//文件系统中 inode 的总数
//数据块总数
//保留块总数
unsigned short s_free_blocks_count; // 空闲块总数
unsigned short s_free_inodes_count; //空闲的 inode 总数
unsigned short s_log_block_size;//block 的大小
};
/*账户信息*/
struct user{
unsigned short user_id;
//用户 ID
unsigned short user_access; //权限
string username;
string password;
};
//用户名
//密码
/*文件/目录结构*/
struct directory{
string name;
unsigned short d_ino;
};
//目录名
//目录号
三、所用仪器、材料(设备名称、型号、规格等)。
计算机一台
第 5 页
剩余34页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功