操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc

上传人:飞****9 文档编号:133716506 上传时间:2020-05-30 格式:DOC 页数:42 大小:394.50KB
返回 下载 相关 举报
操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc_第1页
第1页 / 共42页
操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc_第2页
第2页 / 共42页
操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc_第3页
第3页 / 共42页
操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc_第4页
第4页 / 共42页
操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc》由会员分享,可在线阅读,更多相关《操作系统-文件系统-课程设计报告--后附源代码 - 副本.doc(42页珍藏版)》请在金锄头文库上搜索。

1、计算机操作系统 课程设计报告 设计项目名称: 文件系统设计 专 业: 网络工程 班 级: 201001 学 号: 201026340117;201026340121 姓 名: 张世波 赵流男 指 导 教 师: 张 瑞 红 目录1 课程设计简介11.1 课程设计的目的11.2 课程设计内容12 数据结构的设计22.1 预定义22.2 结构体22.3 全局变量和函数23 功能模块(或算法)描述33.1 模块划分43.2 模块流程图64 程序运行结果45心得体会5参考文献6附源代码72.1 课程设计简介1.1 课程设计的目的课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及

2、其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。1.2 课程设计内容课程设计内容设计一个简单的多用户文件系统。即在系统中用一个文件来模拟一个磁盘;此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。实现这个文件系统。能实际演示这个文件系统。基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。1)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行

3、用户可以打开5个文件。2)程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD)。另外,为打开文件设置了运行文件目录(AFD)。3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。4)因系统小,文件目录的检索使用了简单的线性搜索。5)文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。6)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录,如图5.1所示。 2 数据结构的设计2.1 预定义#define BLOCKSIZ 512/磁盘块的

4、大小#define DATABLKNUM 512/数据块的数目#define BLKGRUPNUM50/数据块组包含多少数据块#define P_N_BLOCKS15/inode节点中 指向数据块的指针个数#defineGROUPNUMDATABLKNUM/BLKGRUPNUM+1 /数据块组 组数#define DINODESIZ 512/磁盘i结点区的大小(空间32512)#define DINODENUM 32/磁盘i结点区的块数#define SYSOPENFILE 40#define DIRNUM 32/一个目录下的最多目录和文件的总和数#define DIRSIZ 14/文件、目录

5、名的长度(字节)#define UPWDSIZ 15/密码的长度#define UNAMSIZ 15/用户名的长度#define PWDSIZsizeof(struct pwd) /密码结构的长度 #define PWDNUM BLOCKSIZ/PWDSIZ/密码数据空间的大小(pwd为单位)#define NOFILE 20/一个用户最多可以打开的文件数目#define DINODESTART 4*BLOCKSIZ/i结点区的开始地址-inodes table ,1引导 2超块 3block bitmap 4inode bitmap #define DATASTART (2+DINODENU

6、M)*BLOCKSIZ/数据区的开始地址#defineDATASTARTNO36/数据区开始指针#define DIMODE_EMPTY00000/*可以用的空间*/#define DIMODE_FILE00001#define DIMODE_DIR 00002#define DIMODE_PASSWD00004#define GRUP_00/管理员组#define GRUP_11#define GRUP_22#define GRUP_442.2 结构体/磁盘i结点结构,struct inode/ chardi_nameDIRSIZ; unsigned _int16 di_ino;/*磁盘i节

7、点标识*/ unsigned _int16 di_number;/*关联文件数,当为0时表示删除文件*/ unsigned _int16 di_mode;/*存取权限*/ unsigned _int16 di_uid;/*磁盘i节点用户id*/ unsigned _int16 di_gid;/*磁盘i节点权限组id*/ /1管理员组 2用户组 unsigned _int32 di_size;/*文件大小*/ unsigned _int32 di_ctime; /* Creation time */ unsigned _int32 di_mtime; /* Modification time *

8、/ unsigned _int16 di_blockP_N_BLOCKS; /* 一组 block 指针 */ ;/目录项结构struct directchard_nameDIRSIZ;/*目录名(14字节)*/_int16 d_ino;/*目录号*/;/超级快结构struct super_blockunsigned _int16 s_inodes_count; /* inodes 计数 */unsigned _int16 s_blocks_count; /* blocks 计数 */unsigned _int16 s_r_blocks_count; /* 保留的 blocks 计数 */un

9、signed _int16 s_free_blocks_count; / 空闲的 blocks 计数 unsigned _int16 s_free_inodes_count; /* 空闲的 inodes 计数 */unsigned _int16 s_free_blocks_groupGROUPNUM;/新增 一个数组来记录每个数据块组中的空闲数据块计数 unsigned _int16 s_first_data_block; /* 第一个数据 block */unsigned _int16 s_log_block_size; /* block 的大小 */unsigned _int16 s_bl

10、ocks_per_group; /* 每 block group 的 block 数量 */unsigned _int16 s_inodes_per_group; /* 每 block group 的 inode 数量 */;/用户密码struct pwdunsigned _int8 p_uid;unsigned _int8 p_gid;char usernameUNAMSIZ;/*用户名 新加的*/ char passwordUPWDSIZ;/目录结构struct dirstruct direct directDIRNUM;_int16 size;2.3 全局变量和函数/全局变量unsign

11、ed _int8 di_bitmapDINODENUM;/ 硬盘inode节点位图1表示已使用 0表示未使用unsigned _int8bk_bitmapDATABLKNUM;/ 数据块block位图 struct super_block filsys;/超级块struct pwd pwdPWDNUM;FILE *fd;/文件指针struct inode *cur_inode;/i节点当前目录指针struct inode *inodetemp;/i节点指针const char fsystemname20=Linux.EXT2;/模拟硬盘的文件名struct direct dir_bufBLOC

12、KSIZ / sizeof(struct direct);/目录数组char cmdhead20;/cmd 的头 表示所在哪个文件夹、int i_lock=0;/inode位图锁 可能会多线程int b_lock=0;/block位图锁struct pwd *cur_user;/*全局函数*/extern intFormat();/格式化磁盘extern intInstall();/启动,安装文件系统struct inode * read_inode(int);/install里面读取文件dinodestruct direct * read_dir_data(int);/读取存储文件夹的物理块

13、extern void showdir();/命令 dirint Enterdir(char);/进入某个文件夹 命令- cd 文件名int Fd_dirfile(char);/查找当前目录里的文件 没找到返回-1 找到返回inode号int Iscmd(char);/判断是否两个字符串的命令void two_cmd(char,char);/两个字符串的命令int creat(char);/创建文件void changeinode();/交换指针char * ReadFile(char);/读取文件int mkdir(char);/创建文件夹void showbitmap();/显示位图int deletefd(char);/删除文件int editfile(char);/编辑文件int rename(char);/重命名void showhelp();/命令帮助void login();void logout();int access();/权限判断/*磁盘i节点的分配与释放(当一个新文件被建立的时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号