版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、实验目的本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。二、实验要求在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。具体见附表三、实验环境 Windows 、VC三、实验思想1、整体思路实验可分为三个大模块:文件组织结构、目录结构、磁盘空间管理。编写时,先定义重要的数据结构,整理好各个模块的思路,列出程序清单。接着编写一些对系统进行基本操作的函数,然后利用这些函数实现各种功能。2、盘块大概分布 (分了128块,每块64字节)盘块0123456.127用途FAT表FAT表根目录目录数据
2、数据数据.数据盘块与盘块之间的链接,是利用FAT表项,(使用数组结构),并用它记录了所有盘块的使用信息。优点:可以利用FAT信息,迅速查找、打开各个目录,进行创建、修改文件。3、目录组成为了简单,构思目录时,每个目录只有8字节,每盘存放最多8个目录。其中,目录名、文件名最多只能为3字节,如果是文件的话,类型名也最多为2字节。区分目录名和文件名的方法是:设计一个属性项(1个字节),为8时表示纯目录,为4时表示文件目录。具体分布如下图:用途目录名或文件名文件类型属性文件起始盘块文件长度大小3(字节)2111优点:属性可以区分纯目录、文件目录;文件起始盘块可以记录文件的存放位置;文件长度,,在读文件
3、时控制指针,是否到了文件末尾。缺点:为了简单,对文件名、目录名、类型名都作了限制。最大分别为:3,3,2字节。说明:调试时,目录名、文件名、类型名一定不能超过限制,否则出现非预期的结果4、FAT 、磁盘管理 实验中,将磁盘分为128块,每块大小64字节。为了方便对空间管理,利用教材提到的方法,把每块的块号(指针)提取出来,形成FAT表:盘块01234567。下一盘块-1-149078-1若某文件的一个盘块号为i ,则这个文件的下一个盘块为表中的第i项,其中0表示此盘块空闲,-1表示结束。另一个重要的表是已打开文件表,用来记录打开或建立的内容,表如下:文件路径名文件属性起始盘文件长度读指针 写指
4、针块号块内地址块号块内地址5、重要数据结构用户结构:typedef struct /用户定义 Int uid;char name20;char password20;user;目录结构:typedef struct /定义目录结构char name3;/文件或目录名 为了简单只是取3字节char type2;/文件类型名char attribute; /属性char address; /文件或目录的起始盘块号char length; /文件长度 ,为了简单实验是用盘块为单位content; /定义为目录结构打开文件的数据结构:typedef struct int dnum;/磁盘块的块号int
5、 bnum;/块内的第几个字节pointer;/读写指针结构#define n 5 /定义打开文件的最大个数;打开文件表项结构 :typedef struct char name20;/模拟绝对路径char attribute;/文件属性 1个字节int number;/文件的起始盘的块号int length ;/文件长度,字节为单位int flag;/操作类型 “0”以读方式打开 “1”以写方式打开pointer read,write;/读写指针 OFILE;/已经打开文件表项的定义struct OFILE filen;/已经打开文件表int length;/表中文件的数量;openfile
6、;/表的定义这里定义了一个本次实验中最为重要的结构:打开文件项结构,它记录了所有打开文件的信息,各种操作,如newfile、read_file、wirte_file 等都是通过该文件项表来记录读写指针的,同时它还可以实现设计三中的对用户权限进行管理功能。6、编写基本函数时按照上面的思想,会变得比较简单。7、主要算法 为了简单,实验时主要的算法,都是建立在数组的基础上,所以比较简单。例如:search(),查找目录时,使用到了树的结构,利用递归,遍历目录树。其他基本是使用链表的方法。8、由于初始设计时没有考虑到界面,有些功能参数,没有模仿LINUX:copy 、md、dir说明如下:dir ,不
7、带参数时表示显示当前目录,带时显示给出目录;copy,要按提示选择内部或外部复制;md,按提示选择时在当前目录创建或绝对路径创建,选择当前目录时,不能带/四、重要函数流程图和思路(包括优缺点)1、allocate()Newfile、md等需要空间,模拟系统就要调用allocate()按块来一块一块的分配,当一块写满了,再调用allocate()进行分配,其流程图大概为:开始找文件分配表第x项, I=x第i项是否为0?第i项是否为最后一项?I+磁盘满,失败分配第i项结束 YN NY2、search(char *name,int flag,int *dnum,int *bnum)查找路径名为nam
8、e的文件或目录,返回该目录的起始盘的块号,该函数是各种操作时用于检查路径是否存在,是否重复,还可以通过dnum,bnum返回查找路径的盘块和盘块内的地址,从而可以打开其所在的目录,进行读写操作。流程图如下:查找绝对路径名nameLast=1?第j项是目录并为pnaJ项是该盘一块J=0是绝对路径的最后一部分并是文件名读出第i块,放到buffer2中,若pna为最后一部分,last=1(结束符)I =根目录起始块号,last=0;Pna=从name分离的/后的目录名;是文件就分离类型名typeJ+j失败J项是盘块一项?J+I=该目录起始块号结束成功文件名为pna,类型为typeN nyy3、建立文
9、件首先,根据文件路径名查找,如果父目录不存在,建立文件失败;如果存在,查看是否重名,如果有,给出提示,建立失败;否则,为文件建立文件目录,分配盘块,填写目录和表项。流程图:成功是否有目录空间?找到?查找pathname将name分解为Pathname 、dname、type建立失败已打开文件表满?路径名 name 4、main()流程图:登陆信息正确? Y初始化等待命令catmddirnewfileinfo .结束 Exit ? 5、同理,其他的函数只要理清思路,画出流程图,写起来就比较简单了。五、各功能调试说明和运行结果说明:注意测试时文件名、目录名最大为3字节,类型名最多2字节(设计时规定
10、),否则出错;同时,刚登陆时文件目录为空。1、登陆默认帐号:2006 pwd :123456 或者 2007 123456 界面如下:帐号信息错误时重新登陆2、info 功能:显示整个系统信息,只显示FAT表和目录内容结果3、 md在指定路径或当前路径下创建指定目录。重名时给出错信息。输入路径时,系统会提示是当前目录下还是在绝对路径下建立目录两种情况分别运行如下:说明:当在当前目录建立目录时,不用加 /。第二次建立“jia”时提示“目录已经存在”是因为第一次md /jia 时已经建立了该目录。为了检查结果可以接着运行dir说明刚才创建成功!4、 rd删除指定目录测试时删除刚才创建的目录再运行
11、dir 时目录为空。5、 dir带参数时为显示给出的绝对路径不带参数显示为当前路径。测试如上6、 newfile建立新文件,同时可以写文件运行:测试时,写入 I am a student 检查时运行cat /jia.pp 显示刚创建的文件内容还可以运行 dir 来检查目录7、 del删除指定路径的文件删除刚才建立的文件再运行cat /jia.pp时,文件已经不存在,说明删除成功!8、 Copy拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝先运行inside copy首先建立新文件 /jia.kk 然后复制到/liu.kk 再运
12、行cat /liu.kk 检查是否复制成功运行 outside copy其中 测试外部文件已经放在当前路径test.txt 中说明:实验时为了简单,只考虑目标文件为新文件的情况,其他情况并未考虑。9、cd 改变当前目录10、 Check11、 退出设计二1、 基本思路设计二是在设计一的基础上,设计shell 主进程,接到命令时,创建后台进程,处理命令。 为了看到测试结果,创建后台进程时会出现其窗口,这时,shell 进程可以继续 接受命令,然后再创建新的进程。2、 设计时没有考虑子进程向shell 进程回传数据,只是一个简单的shell。3、 流程图主进程创建后台进程是否有新命令 N后台进程运
13、行Y4、 本设计时主要时利用了内存映射文件来实现shell 进程 与 后台模拟文件系统进程之间的通信,其中映射由shell 进程来建立。主要函数:CreateFileMapping()、建立映射 OpenFileMapping() 打开映射,把共享内存映射到自己进程地址中来 MapViewOfFile() 映射对象的一个视图 UnmapViewOfFile() 解除映射5、 运行结果:此时shell 还可以继续接受新的命令6、 缺点:未考虑数据的回传。设计三1、 思路在模拟文件系统中建立一个临界区,然后对其操作即可。为了体现“共享读,互斥写”要求,主进程连续创建了三个子进程 对模拟文件系统进行访问,当一个进程对共享区访问时,其他进程等待,按提示结束该进程后,另外一个进程进入共享区。2、 所有到的主要函数CRITICAL_SECTION g; / 建立临界区对象I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60335-2-113:2025 EXV EN Household and similar electrical appliances - Safety - Part 2-113: Particular requirements for beauty care appliances incorporating lasers and in
- GB/T 46320-2025影像材料反射彩色摄影照片低湿度条件下稳定性的试验方法
- 洗衣机制造工成果考核试卷含答案
- 中国柴油机模型项目投资可行性研究报告
- 布制家居日用品行业深度研究报告
- 中国凸轮组件项目投资可行性研究报告
- 中国网络用插头项目投资可行性研究报告
- X-射线实时检测系统行业深度研究报告
- 中国铜质船用大电流插头项目投资可行性研究报告
- 家用垃圾桶行业深度研究报告
- 延安红色教育培训:感悟与收获的分享
- 桥梁模型设计大赛
- 药品报损审批表+销毁表
- 中国海军课件
- 培训机构主管竞聘
- 在线学习课堂《项目管理概论》单元考核测试答案
- DB32∕T 5048-2025 全域土地综合整治项目验收规范
- 员工食堂安全培训课件
- 水务行政执法培训课件
- 四川绵竹高发投资集团有限公司招聘笔试题库2025
- 阀门代加工协议书
评论
0/150
提交评论