操作系统2实验4报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统2实验4报告

实验(四)文件操作与管理 一、目的与要求 1、目的 随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 2、要求 (1)实际一个 n 个用户的文件系统,每个用户最多可保存 m 个文件。 (2)限制用户在一次运行中只能打开 l 个文件。 (3)系统应能检查打入命令的正确性,出错要能显示出错原因。 (4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。 (5)对文件的操作至少应有下述几条命令: creat 建立文件。 delete 删除文件。 open 打开文件。 close 关闭文件。 read 读文件。 write 写文件。 二、实验题目 (1)本实习设计一个 10 个用户的文件系统,每个用户最多可保存 10 个文件,一次运行中用户可打开 5 个文件。 (2)程序采用二级文件目录,即设置了主文件目录(MFD)和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置了运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 (3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。 三、实验源代码 #include cstdio #include cstring #define SizeOfUserName 255 #define SizeOfUser 10 #define SizeOfFile 10 #define SizeOfCommand 255 #define SizeOfFileName 255 char UserName[SizeOfUser][SizeOfUserName]; long User; struct InfoOfFile { char Name[SizeOfFileName]; bool safe[3];//Read,Write,Execute long status;//ready,open; } UFD[SizeOfUser][SizeOfFile]; long num[SizeOfUser]; long num_open[SizeOfUser]; char z[4]=rwe; void ls()//列文件目录 { char tmp[100]; long i,j; printf(%20s%20s%20s\n,Name,Property,Status); for (i=0;inum[User];i++) { printf(%20s,UFD[User][i].Name); for (j=0;j3;j++) { if (UFD[User][i].safe[j]) { tmp[j]=z[j]; } else { tmp[j]=-; } } tmp[3]=\0; printf(%20s,tmp); if (UFD[User][i].status) { printf(%20s\n,Opened); } else { printf(%20s\n,Ready); } } printf(%ld file(s) in total\n,num[User]); } long login()//切换用户 { long i; char NameInput[SizeOfUserName]; do { printf(Please input your ID:); scanf(%s,NameInput); i=0; while (iSizeOfUser strcmp(NameInput,UserName[i])!=0) { i++; } if (strcmp(NameInput,UserName[i])!=0) { printf(Bad UserID.\n); } }while (strcmp(NameInput,UserName[i])!=0);

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档