ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:139.16KB ,
资源ID:24500955      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24500955.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统设计一个二级文件系统报告样本.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统设计一个二级文件系统报告样本.docx

1、操作系统设计一个二级文件系统报告样本操作系统设计一个二级文件系统报告操作系统(2014年秋季学期)序号:8 实 验 报 告系别:计算机科学与技术班级:信安12-1班姓名:李勇学号:实验名称:进程调度总成绩:评语: 日期:操作系统实验报告实验名称进程调度实验序号1实验日期2014.1.2实验人李勇一、实验目的、要求与环境1目的:编写一个简单的二级文件系统实现程序,加深对文件系统的内部功能和内部实现的理解。2.要求:(1)用C语言(或其它语言,如Java)实现一个简单的二级文件系统设计,加深对文件系统的内部功能和内部实现的理解。要求模拟采用二级目录结构的磁盘文件系统的文件操作, 实现用户的创建、查

2、询、登录、删除,和文件的添加、删除、打开、关闭、读、写等基本命令,用在屏幕上输入命令来模拟用户程序中调用的文件操作。(2)为了清楚地观察文件的管理过程,程序应将每个文件操作的结果显示出来。(3)分析程序运行的结果,谈一下自己的收获。3.环境:1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。二、相关背景知识最基本的文件操作 (1)创建文件 在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。目录项中应该记录新文件的文件名及其在外存的地址等属性。

3、 (2)删除文件 当已不再需要某文件时,可将它从文件系统中删除。在删除时,系统应该先从目录中找到要删除的文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。 (3)读文件 在读一个文件时,须在相应的系统调用中给出文件名和应该读入的内存目标地址。此时,系统同样要查找目录,找到制定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。 (4)写文件 在写一个文件时,须在相应的系统调用中给出该文件名及该文件在内存中的(源)地址。为此,也同样须先查找目录,找到指定文件的目录项,在利用目录中的写指针进行写操作。 (5)截断文件 如果一个文件的内容已经陈旧而需要全部

4、更新文件的内容时,一种方法是将此文件删除,再重新创建一个新文件。但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或说放弃原有的文件内容。 (6)设置文件的读/写位置 前述的文件读/写操作,都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。也正因如此,才能改顺序存取为随机存取。 三、实验设计说明(写你实验相关的设计,别写这么少,多写点。)本次实验采用C语言模拟二级文件系统,可以在多用户环境下实现用户的创建、查询、登录、

5、删除,和文件的添加、删除、打开、关闭、读、写等基本操作,很好地模拟了操作系统对文件的管理过程。四、实验设计的流程图(写你实验相关的设计流程图,下面的流图是有问题的。)四、程序代码(换上你自己的程序代码,下面的程序代码是有问题的。)#include stdlib.h#include #define NULL 0int count=0;struct file char name10; int code;/保护码 int size; char pwrite;/读写指针;struct user char name10; struct file *list;/目录指针;/struct file one1

6、0=a1,0,10,0,a2,2,10,0,a3,1,10,0,a4,2,10,0,a5,2,10,0,a6,2,10,0,a7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file two10=b1,0,10,0,b2,2,10,0,b3,1,10,0,b4,2,10,0,b5,2,10,0,b6,2,10,0,b7,2,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file three10=c1,0,10,0,c2,2,10,0,c3,1,10,0,c4,2,10,0,c5,2,10,0,c6,2,10,0,c7,1,10,0,0,

7、0,0,0,0,0,0,0,0,0,0,0;struct file four10=d1,0,10,0,d2,2,10,0,d3,1,10,0,d4,2,10,0,d5,2,10,0,d6,2,10,0,d7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file fine10=e1,0,10,0,e2,2,10,0,e3,1,10,0,e4,2,10,0,e5,2,10,0,e6,2,10,0,e7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file six10=f1,0,10,0,f2,2,10,0,f3,1,10,0,f4,2

8、,10,0,f5,2,10,0,f6,2,10,0,f7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file seven10=g1,0,10,0,g2,2,10,0,g3,1,10,0,g4,2,10,0,g5,2,10,0,g6,2,10,0,g7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file eight10=h1,0,10,0,h2,2,10,0,h3,1,10,0,h4,2,10,0,h5,2,10,0,h6,2,10,0,h7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file

9、nine10=j1,0,10,0,j2,2,10,0,j3,1,10,0,j4,2,10,0,j5,2,10,0,j6,2,10,0,j7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file ten10=k1,0,10,0,k2,2,10,0,k3,1,10,0,k4,2,10,0,k5,2,10,0,k6,2,10,0,k7,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0;struct file UFD10;struct file AFD5=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;/struct user

10、 use10=number1,one,number2,two,number3,three,number4,four,number5,fine,number6,six,number7,seven,number8,eight,number9,nine,number10,ten;struct user MFD1=0,0;/void running();void delet(); void write();void open();void close();void bye();void read();void create();void input();/using namespace std;voi

11、d main() input();running();cout操作己结束endl;/void running() char order;int i;coutendl*endl;cout用户的所有文件如下:endl;for(i=0;i10;i+) coutUFDi.namet;coutendl*endl;cout 请选择操作命令(输入代号):endl;coutc-create d-delete o-open s-close r-read w-write b-bye t.exit(重选用户)endl;coutendl*endl;cout请输入命令:order;switch(order) case

12、c : create();break;case d : delet();break;case o : open();break;case s : close();break;case r : read();break;case w : write();break;case b : bye();break;case t : input();break;default : cout输入命令出错,请重输endlendl;running();/void delet() char name10;int i,flag;do cout请输入文件名:endlname;flag=0;for(i=0;i10;i+

13、) if(strcmp(UFDi.name,name)/如果没有这个文件 flag=1; /break; else flag=0;strcpy(UFDi.name,0);/清空文件UFDi.code=0;UFDi.pwrite=0;UFDi.size=0;cout该文件己被删除endl;break;if(flag=1)cout无此文件,请重新输入endl; while(flag=1);coutendl;running();/void open() char name10;int i,j,flag;if(count=5) cout运行文件队列己满endl;running();else do co

14、ut请输入文件名:name;flag=0;for(i=0;i10;i+) if(strcmp(UFDi.name,name)/如果没有这个文件 flag=1; /break; else flag=0;break;if(flag=1)cout无此文件,请重新输入endl; while(flag=1);for(j=0;j5;j+) if(strcmp(AFDj.name,name)/如果没有这个文件flag=1;else flag=0;break;if(flag=1)for(j=0;j5;j+) if(!strcmp(AFDj.name,0) AFDj=UFDi;cout文件己打开endl;cou

15、nt+;break;else cout该文件己经在打开队列中endl;coutendl;running();/void close() char name10;int j,flag;cout请输入文件名:name;flag=0;for(j=0;j5;j+) if(strcmp(AFDj.name,name)/如果没有这个文件 flag=1; /break; else flag=0;strcpy(AFDj.name,0);/清空文件AFDj.code=0;AFDj.pwrite=0;AFDj.size=0;cout运行队列中的该文件己被关闭endl;break;if(flag=1)cout运行队

16、列中无此打开的文件,请重新操作endl; coutendl;running();/void bye() int i,j;for(i=0;i5;i+) for(j=0;j10;j+) if(!strcmp(AFDi.name,UFDj.name) UFDi=AFDi;break; cout文件目录己保存endl;coutendl;/void read() char name10;int j,flag=0;cout请输入文件名:name;for(j=0;j5;j+) if(!strcmp(AFDj.name,name)/如果AFD有这个文件 flag=1; break; if(flag=1)if(

17、AFDj.code=0|AFDj.code=2) AFDj.pwrite=R;cout文件的状态是正在读endl;else cout无权限写此文件endl;else cout运行队列中无此文件,请先打开文件endl;coutendl;running();/ void write() char name10;int j,flag=0;cout请输入文件名:name;for(j=0;j5;j+) if(!strcmp(AFDj.name,name)/如果AFD有这个文件 flag=1; break; if(flag=1)if(AFDj.code=1|AFDj.code=2) AFDj.pwrite

18、=W;cout文件的状态是正在写endl;else cout无权限写此文件endl;else cout运行队列中无此文件,请先打开文件endl;coutendl;running();/void create() char name10;int i,j=0,flag;for(i=0;i9) cout文件夹己满,请先删除endl;/coutj;running(); else do cout请输入文件名:name; flag=0; for(i=0;i10;i+) if(!strcmp(UFDi.name,name)/如果有重名的文件 cout文件名重复,请重新输入endl; flag=1; brea

19、k; while(flag=1); for(i=0;i10;i+) if(!strcmp(UFDi.name,0)/找到第一个空的文件 strcpy(UFDi.name,name); do cout请输入保护码(选择-2,0-可读,-可写,-可读写):UFDi.code; if(UFDi.code!=0&UFDi.code!=1&UFDi.code!=2) cout输入错误,重新输入保护码endl; while(UFDi.code!=0&UFDi.code!=1&UFDi.code!=2); cout请输入文件长度(选择数字):UFDi.size; cout己建立文件UFDi.nameendl

20、; break; running();/void input() char name;int i;coutendl*endl;cout 请选择以下用户名(输入数字):endl;cout1.one 2.two 3.three 4.four 5.fine 6.six 7.seven 8.eigh 9.nine 0.ten endl;cout*endlendl;coutname;switch(name) case 1: for(i=0;i10;i+)UFDi=onei;MFD0=use1;running();break;case 2: for(i=0;i10;i+)UFDi=twoi;MFD0=us

21、e1;running();break;case 3: for(i=0;i10;i+)UFDi=threei;MFD0=use2;running();break;case 4: for(i=0;i10;i+)UFDi=fouri;MFD0=use3;running();break;case 5: for(i=0;i10;i+)UFDi=finei;MFD0=use4;running();break;case 6: for(i=0;i10;i+)UFDi=sixi;MFD0=use5;running();break;case 7: for(i=0;i10;i+)UFDi=seveni;MFD0=u

22、se6;running();break;case 8: for(i=0;i10;i+)UFDi=eighti;MFD0=use7;running();break;case 9: for(i=0;i10;i+)UFDi=ninei;MFD0=use8;running();break;case 0: for(i=0;i10;i+)UFDi=teni;MFD0=use9;running();break;default : cout输入用户名出错endl;input(); 五、编译过程截图(下面是一个例子,换上你自己的图)六、测试用例(下面是一个例子,换上你自己的)文字叙述一下测试过程的实例。如先创建用户*、再产

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1