操作系统大作业Linux文件管理系统

华南理工大学软件学院2013级操作系统大作业实验报告课程名称:操作系统任课老师:作业题目:简单二级文件系统班级:学生姓名:学号:目录实验目12实验环实验内3程序中使用的数据结构及符号说45源程序及注6程序运行时的初值和运行结一、实验目的通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。二、实验环境操作系统:Ubuntu12.04(Ubuntu/Linaro4.6.3-1ubuntu5)编译器:gcc4.6.3语言:C语言三、实验内容FMSV1.0系统模拟了原生的文件系统,使用文本来当作磁盘,并使用了空闲块记录表,目录,i-node等数据结构来辅助文件系统的运作。磁盘:一个名为blockDisk的文件,里面含有256个数据块。每个数据块的长度为1024,可存储1024个字符。I节点:包含文件名,文件保护码,文件长度,文件存放位置。目录:一个链表,记录了i节点。空闲块记录表FBT:用于记录磁盘块使用情况,0表示未使用,1表示使用。数据块:保存了文件的数据,一个数据块至多存放一个文件。数据块使用情况:用于记录文件使用数据块的情况。存放在I数组中。fat节点的.文件:一个文件最多占用两个数据块,即长度至多为4028.FMSV1.0系统支持的命令行:login:登录register:注册open:打开文件read:读取文件数据到屏幕write:写文件,分为cover和append两种类型;cover是覆盖原数据,append是在不改变原始数据的基础上进行增加。close:关闭文件create:新增文件delete:删除文件exit:退出程序help:帮助四、程序中使用的数据结构及符号说明/*---------------结构定义-----------------*//*---------用户--------*/typedefstructuser{characcount[15];//账户最长为10charpassword[15];//密码最长为10,多出来的是为了方便运算}user;/*--------数据节点--------*/typedefstructdatanode//用于记录文件数据保存在哪个数据块的哪个范围{intnum;//数据块号intbegin;//数据开始位置intend;//数据结束位置}datanode;/*-------i节点--------*/typedefstructinode{Charfilename[30];Intnum;charcode[30];//保护码intsize;datanodefat[MAX_DATANODE_NUM];intnode_num;}inode;typedefstructdirEntry//用链表来记录I节点{inodeind;structdirEntry*next;}dirEntry;/*-------数据块--------*/typedefstructblock{charcontent[MAX_BLOCK_SIZE];//数据块内容最大长度为1025,预留最后一位用来存储'\0',intnum;intoffset;//记录当前数据的数量}block;五、源程序及注释head.h头文件#include<string.h>#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#defineMAX_BLOCKS_NUM256//最大数据块数量是256,则数据块总大小是256KB一,数据块数据容量//1025MAX_BLOCK_SIZE#define个数据块的大小是1KB,最有1位用来存储'\0',表示字符串结尾!#defineMAX_DATANODE_NUM2//每个文件最多占用的数据块的数量#defineMAX_INODE_NUM512//i节点的最大数目,亦即系统允许容纳文件的最大数量#defineMAX_CACHE_NUM32//允许缓存的最大数32个数据块,缓存为32KB据块数量为-----------------*//*---------------结构定义--------*//*---------用户typedefstructuser{账户最长为10characcount[15];//password[15];char多出10,密码最长为//来的是为了方便运算}user;--------*/数据节点/*--------typedefstructdatanode//用于记录文件数据保存在哪个数据块的哪个范围{intnum;//数据块号intbegin;//数据开始位置intend;//数据结束位置}datanode;/*-------i节点--------*/typedefstructinode{charfilename[30];intnum;charcode[30];//保护码intsize;datanodefat[MAX_DATANODE_NUM];intnode_num;}inode;typedefstructdirEntry//用链表来记录I节点{inodeind;structdirEntry*next;}dirEntry;/*-------数据块--------*/typedefstructblock{charcontent[MAX_BLOCK_SIZE];//数据块内容1024最大长度为intnum;//用于记录数据块boolisRevised;是否进行数据修改记录当前数据的//intoffset;数量}block;-------------------*/定义全局变量/*-------------//0meanstheintislogin=0;charblockspath[30]=%userdata/blocksDISK.disk;//所有数据(即虚拟磁盘)...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?