- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习四:文件系统实习
一 . ? 目的要求 ?
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
二 . ? 例题:
设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。
为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作
4、算法与框图:?
因系统小,文件目录的检索使用了简单的线性有哪些信誉好的足球投注网站。
文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。
程序中使用的主要设计结构如下:
? 主文件目录和用户文件目录( MFD、UFD)
? 打开文件目录( AFD)(即运行文件目录)
M D F U F D A F D 用户名文件名打开文件名文件目录指针保护码打开保护码用户名文件长度读写指针文件目录指针文件名· ·
文件系统算法的流程图如下:实习总结: 通过这次实习,更清楚的理解了文件系统的操作,同时也对C语言编程进行了巩固。
实习代码:
#include string.h
#include stdio.h
#include conio.h
#include stdlib.h
#define L 6 /* 用户最多保存的文件数 */
#define N 5 /* 系统可同时管理的用户数*/
int U;
typedef int SX;/*文件属性 1为只读,2为写,3为可读可写*/
typedef int ZT;/*文件状态 1为建立,2为打开,3为关闭*/
typedef int FLAG;/*是否空表目,0为空,1为非空*/
static int memo[128]={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150};
/*用户文件目录*/
struct FCB
{
char filename[20];/*文件名*/
SX access;/*文件属性*/
int length;/*记录长度*/
int address[5];/*文件地址*/
FLAG flag;/*是否空表目,0为空*/
};
/*用户已打开文件表*/
struct UOF1
{
char filename[20];/*文件名*/
SX access;/*文件属性*/
int length;/*记录长度*/
ZT flag1;/*状态*/
int write;/*写指针*/
int read;/*读指针*/
FLAG flag;
int address[5];/*文件地址*/
};
struct FCB UFD[N][L] ={{{abc,2,3,{10,20,30},1},{def,1,3,{40,50,60},1},{wj,3,3,{70,80,90},1}},
{{xyz,1,1,{100},1},{aaa,2,1,{110},1}},
{{yyx,1,1,{100},1},{ccb,1,1,{120},1}},
{{ddd,1,3,{40,50,60},1}}
};
struct UOF1 UOF[N][L]={{abc,2,3,2,0,0,1,{10,20,30}},{ccb,1,1,2,0,0,1,{120}}};
struct MFD1
{char username[10];
int count;
int opencont;
struct FCB *userfaddr;
struct UOF1 *openfaddr;
};
struct MFD1 MFD[N]={A,3,0,UFD[0],UOF[0],B,2,0,UFD[1],UOF[1],C,2,0,UFD[2],UOF[2],D,1,0,UFD[3],UOF[3]};
/*在UFD中找空白表项*/
selectUFD()
{ int i;
struct FCB *P=MFD[U].userfaddr;
for(i=0;iL;
文档评论(0)