操作系统模拟unix文件系统实验报告.doc
文本预览下载声明
操作系统大型实验
班级: 学号: 姓名:
一 实验介绍……………………………………………………………………
1.实验名称
2.实验目的
3.实验内容及要求
二 实验环境……………………………………………………………………
三 实验设计……………………………………………………………………
1.数据结构设计
2.系统流程设计
3.实现命令操作
四 模块详解……………………………………………………………………
1 .文件操作
2 .用户操作
五 实验演示……………………………………………………………………
1 .初始化磁盘块
2 .用户登录
3 .目录操作
4 .文件操作
六 源代码………………………………………………………………………
七 实验心得体会……………………………………………………………………
1.调试中遇到的问题总结
2.实验感悟
一、实验介绍
1.实验名称
操作系统大型实验
2.实验目的
完成一个 UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。
3.实验内容及要求
文件卷结构设计
0#块可省略
I节点栈及空间为20项
块大小为512字节
卷盘块数大于100
I节点盘块数大于10块
I节点结构设计
文件大小
文件联接计数
文件地址
文件拥有者
文件所属组
文件权限及类别
文件最后修改时间
其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址
目录结构
用16字节表示,其中14字节为文件名,2字节为I节点号
用户及组结构
用户信息中包括用户名、口令,所属组,用户打开文件表
文件树结构
除(4)要求外,适当考虑UNIX本身文件树结构
实现功能
Ls 显示文件目录
Chmod 改变文件权限
Chown 改变文件拥有者
Chgrp 改变文件所属组
Pwd 显示当前目录
Cd 改变当前目录
Mkdir 创建子目录
Rmdir 删除子目录
Mv 改变文件名
Cp 文件拷贝
Rm 文件删除
Ln 建立文件联接
Cat 连接显示文件内容
Vi 文件写入
Mk 创建文件
umask 查看用户屏蔽码
Umask 文件创建屏蔽码
Passwd 修改用户口令
Ls-l 查看文件类型
Login 用户注销
Logout 退出系统
Help 显示帮助信息
二、实验环境
实验设备:Microsoft Visual Studio 2010
开发语言:c++
三、实验设计
1.数据结构设计
磁盘文件结构设计:
用一个名为disk.txt的文件模拟Unix系统磁盘 ,总共分为200块,每块514个字节(实际可用512个字节,还有2个字节是磁盘分割符‘\n’),使第一块(0#)盘块做为超级块,记录该系统磁盘的使用情况;第二块(1#)盘块——第十三块(12#)盘块作为存储I结点使用,每个I结点74个字节,所以每个盘块可以存放6个I结点,总共有72个I结点,记录在超级块中;十三块(12#)以后的盘块作为存储文件内容使用,总共187个盘块,用成组连接法记录在超级块中。
对于I结点的具体设计如下:
class INode //(74B)
{
public:
int fsize;//文件大小 setw(6)
int fbnum;//文件盘块数 setw(6)
int addr[4];//四个直接盘块号 文件最大为4*512=2048=2KB setw(4)*4
int addr1;//一个一次间址() 文件大于2KB,小于2KB+16*512=10KB setw(4)
int addr2;//一个两次间址() 文件大于10KB,小于10KB+16*16*512B=138KB setw(4)
char owner[6];//文件拥有者 setw(6)
char group[6];//文件所属组 setw(6)
显示全部