操作系统实验报告(3)
(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(\
/*******************************************************/
…… 此处隐藏:656字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




