操作系统实验报告(3)

2019-08-26 17:42

(4).关闭文件:close(文件名)

对某个文件不需要再读或写时,用户应关闭文件。若关闭一个新建立的文件,则要建立文件的结束标志。对链接文件来说,最后一块中的链接字应为“0”。关闭文件的工作流程如下:

“关闭文件”模拟流程

开 始 查用户 UOF 文件为“建立” 状态? 否 是 置文件结束标志 文件为“打开”状态? 消除该文件在UOF中的登记栏 否

显示:文件已关闭 显示:“关闭文件”成功 返 回

(5).删除文件:delete(文件名)

把请求撤消的文件从用户文件目录表中除名,收回该文件占用的存储区域。处理流程如下:

“删除文件”模拟流程

开 始 查该用目录表 UFD UFD中有该文件? 是 查该用户的UOF 显示:文件已撤消 返 回 UOF中有该文件? 是 否 在 UOF中清除该文件的登记栏 归 还文件所占的存储区域 在 UFD中清除该文件登记栏

(6).写文件:write(文件名,记录号)

否 执行写文件操作时要区分两种情况,第一种是在执行create后要求写。第二种是在执行open后要求写的。对第二种情况可认为用户要对一个已建立好的文件进行修改。一个文件可以分多次写,既可按记录顺序写也可随机写一个记录,采用顺序写时可省略记录号。模拟写文件操作的工作的流程图如下:

“写文件”模拟流程

开 始 该文件为“建立”状态? 返 回 是 把记录信息写到“写指针”指出的物理块中(用显示物理块号来模拟) 文件属性为“只读”? 是 查用户的UOF UOF中有该文件 否 显示:文件尚未建立或打开,不能写

是 显示:操作不合法,不能写 否 顺序修改? 是 取出“写指针”指出的块号 找出存放指定记录的块返 回 修改“写指针” 把修改后的信息写入找到的物理块中 显示:“写文件”成功 返 回 注:流程图中“寻找空闲块”的工作可以用取一个随机数来模拟,取到的随机灵敏即为空闲块号

五:源程序及注释如下:

#define S 10 #define L 20 #define N 30 #include\#include\#include\struct UFD{

char fname[20]; char shuxing[20]; int length; int addr; };

struct UOF{

char fname[20]; char shuxing[10]; int length; char state[10]; int *w,*r; }; struct MFD{

char uname[25]; struct UFD ufd[L]; struct UOF uof[S]; };

struct MFD mfd[N];

create(int x); open(int x); close(int x); Read(int x); write(int x); delete(int x);

main() {

char namestr[20],order[20]; int i,j;

/*chu shi hua MFD*/

/************************************************************/ strcpy(mfd[0].uname,\

strcpy(mfd[0].ufd[0].fname,\ strcpy(mfd[0].ufd[0].shuxing,\ mfd[0].ufd[0].length=25; mfd[0].ufd[0].addr=6120; /*

printf(\ame,mfd[0].ufd[0].shuxing,mfd[0].ufd[0].length,mfd[0].ufd[0].addr);*/ strcpy(mfd[0].ufd[1].fname,\ strcpy(mfd[0].ufd[1].shuxing,\ mfd[0].ufd[1].length=20; mfd[0].ufd[1].addr=0;

strcpy(mfd[0].ufd[2].fname,\strcpy(mfd[0].ufd[2].shuxing,\ mfd[0].ufd[2].length=20; mfd[0].ufd[2].addr=1000;

strcpy(mfd[1].uname,\

strcpy(mfd[1].ufd[0].fname,\ strcpy(mfd[1].ufd[0].shuxing,\ mfd[1].ufd[0].length=30; mfd[1].ufd[0].addr=4020;

strcpy(mfd[1].ufd[1].fname,\ strcpy(mfd[1].ufd[1].shuxing,\ mfd[1].ufd[1].length=21; mfd[1].ufd[1].addr=1;

/*chu shi hua UOF*/

strcpy(mfd[0].uof[0].fname,\

strcpy(mfd[0].uof[0].shuxing,mfd[0].ufd[0].shuxing); mfd[0].uof[0].length=mfd[0].ufd[0].length; strcpy(mfd[0].uof[0].state,\ mfd[0].uof[0].w=mfd[0].ufd[0].addr; mfd[0].uof[0].r=mfd[0].ufd[0].addr;

strcpy(mfd[0].uof[1].fname,\

strcpy(mfd[0].uof[1].shuxing,mfd[0].ufd[2].shuxing); mfd[0].uof[1].length=mfd[0].ufd[2].length; strcpy(mfd[0].uof[1].state,\ mfd[0].uof[1].w=mfd[0].ufd[2].addr; mfd[0].uof[1].r=mfd[0].ufd[2].addr; /* printf(\

/*******************************************************/


操作系统实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:水产养殖贴士 养出肥瘦适度的草鱼

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: