版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE第2页共7页软件学院计算机课程实验报告册课程名称计算机操作系统实验学期2011年至2012年第2学期学生所在院(系)软件学院年级11级专业班级软件工程1班学生姓名朱水云学号1115114034指导教师陈自刚实验最终成绩软件学院实验室制2012年4月实验报告(4)分数:实验教师:陈自刚实验名称:分数:实验教师:陈自刚实验时间:2012年5月8日实验性质一、实验目的及要求:通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。二、实验内容与分析设计:为linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令(至少4条);login 用户登陆dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件(2)列目录时要列出文件名、物理地址、保护码和文件长度;(3)源文件可以进行读写保护。三、实验步骤与调试过程:<任务>为Linux系统设计一个简单的二级文件系统。要求做到以下几点:1.可以实现下列几条命令: login用户登录 dir列目录 create创建文件 delete删除文件 open打开文件 close关闭文件 read读文件 write写文件2.列目录时要列出文件名,物理地址,保护码和文件长度3.源文件可以进行读写保护<程序设计>(1)设计思想本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。对这些内容感兴趣的读者,可以在本系统的程序基础上进行扩充。(2)主要数据结构I节点structinode{structinode*i_forw;structinode*i_back;charI_flag;unsignedinti_into;/*磁盘i节点标号*/unsignedinti_count;/*引用计数*/unsignedshortdi_number;/*关联文件书,当为0时,则删除该文件*/unsignedshortdi_mode;/*存取权限*/unsignedshortdi_uid;/*磁盘i节点用户*/unsignedshortdi_gid;/*磁盘i节点组*/Unsignedintdi_addr[NADDR];/*物理块号*/b)磁盘i结点Structdinode{unsignedshortdi_number;/*关联文件数*/unsignedshortdi_mode;/*存取权限*/unsignedshortdi_uid;unsignedshortdi_gid;unsignedlongdi_size;/*文件大小*/unsignedintdi_addr[NADDR];/*物理块号*/c)目录项结构Structdirect{chard_name[DIRSIZ];/*目录名*/unsignedintd_ino;/*目录号*/}d)超级块Structfilsys{unsignedshorts_isize;/*i节点块块数*/unsignedlongs_fsize;/*数据块块数*/unsignedints_nfree;/*空闲块块数*/unsignedshorts_pfree;/*空闲块指针*/unsignedints_free[NICFREE];/*空闲块堆栈*/unsignedints_ninode;/*空闲i节点数*/unsignedshorts_pinode;/*空闲i节点指针*/unsignedints_inode[NICINOD];/*空闲i节点数组*/unsignedints_rinode;/*铭记i节点*/chars_fmod;/*超级块修改标志*/};e)用户密码Structpwd{unsignedshortP_uid;unsignedshortP_gid;charpassward[PWOSIZ];}f)目录Structdir{strutdirectdirect[DIRNUM];intsize;}g).查找i内存节点的hash表Structhinode{strutinode*iforw;}h).系统打开表Structfile{charf_flag;/*文件操作标志*/unsignedintf_count;/*引用计数*/structinode*f_inode;/*指向内存节点*/unsignedlongf_off;/*读/写指针*/}i)用户打开表Structuser{unsignedshortu_default_mode;unsignedshortu_uid;/*用户标志*/unsignedshortu_gid;/*用户组标志*/unsignedshortu_ofile[NOFILE];/*用户打开表*/}3.主要函数 (1)i节点内容获取函数iget()(详细描述略)。 (2)节点内容释放函数iput()(详细描述略)。 (3)目录创建函数mkdir()(详细描述略)。 (4)目录搜索函数namei()(详细描述略)。(5)磁盘块分配函数balloc()(详细描述略)。(6)磁盘块释放函数bfree()(详细描述略)。(7)分配i节点区函数ialloc()(详细描述略)。 (8)解释结点区函数ifree()(详细描述略)。 (9)搜索当前目录下文件的函数iname()(详细描述略)。 (10)访问控制函数access()(详细描述略)。 (11)显示目录和文件函数_dir()(详细描述略)。 (12)改变当前目录用函数chdir()(详细描述略)。 (13)打开文件函数open()(详细描述略)。 (14)创建文件函数create()(详细描述略)。 (15)读文件用函数read()(详细描述略)。 (16)读文件用函数write()(详细描述略)。 (17)用户登陆函数login()(详细描述略)。 (18)用户退出函数logout()(详细描述略)。 (19)文件系统格式化函数format()(详细描述略)。 (20)进入文件系统函数install()(详细描述略)。 (21)关闭文件函数close()(详细描述略)。 (22)退出文件系统函数halt()(详细描述略)。 (23)文件删除函数delecte()(详细描述略)。4四、实验结果:<结果一:〉 本实验成功地创建了登陆用户dengyurui,并在下面创建了相应的二级目录,成功的完成了对文件夹的创建操作和对文件的创建、删除、打开和关闭等基本操作。在完成文件的上面的创建、删除、打开和关闭等操作上,又完成了对文件的读写操作,即把系统的日期每隔十秒写入文件中去。五、疑难与小结:(1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。(2)用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。六、主要算法和程序清单1.主程序说明beginStep1对磁盘进行格式化Step2调用install(),进入文件系统Step3调用_dir(),显示当前目录Step4调用login(),用户注册Step5调用mkdir()和chdir()创建目录Step6调用create(),创建文件0Step7分配缓冲区Step8写文件0Step9关闭文件0和释放缓冲Step10调用mkdir()和chdir()创建子目录Step11调用create(),创建文件1Step12分配缓冲区Step13写文件1Step14关闭文件1和释放缓冲Step15调用chdir将当前目录移到上一级Step16调用create(),创建文件2Step17分配缓冲区Step18调用write(),写文件2Step19关闭文件1和释放缓冲Step20调用delecte(),删除文件0Step21调用create(),创建文件1Step22为文件3分配缓冲区Step23调用write(),写文件2Step24关闭文件3并释放缓冲区 Step25调用open(),打开文件2 Step26为文件2分配缓冲 Step27写文件3后关闭文件3 Step28释放缓冲 Step29用户退出(logout) Step30关闭(halt)End由上述的描述过乘可知,该文件系统实际是为用户提供一个解释执行相关命令的环境。主程序中的大部分语句都被用来执行相应的命令。下面我们给出每个过程的相关C语言程序。读者也可以使用这些子过程,编写一个用Shell控制的文件系统界面2.编写管理文件makefile本文件系统程序用编写makefile管理工具进行管理。其内容如下:***********************************************************************//*******************************************makefile*******************************************/filsys:main.oiallfre.oballfre.oname.oaccess.olog.oclose.ocreat.odelete.odir.oopen.ordwt.oformat.oinstall.ohalt.occ-ofilsysmain.oiallfre.oballfre.oname.oaccess.olog.oclose.ocreat.odelete.odir.oopen.oformat.oinstall.ohalt.omain.o:main.cfilesys.hcc-cmain.cigetput.o:igetput.cfilesys.hcc-cigetput.ciallfre.o:iallfre.cfilesys.hcc-ciallfre.cballfre.o:ballfre.cfilesys.hcc-came.o:name.cfilesys.hcc-cname.caccess.o:access.cfilesys.hcc-caccess.clog.o:log.cfilesys.hcc-clog.cclose.o:close.cfilesys.hcc-cclose.ccreat.c:creat.cfilesys.hcc-ccreat.cdelete.o:delete.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门演艺职业学院单招职业技能测试题库附答案详解(预热题)
- 2026年呼和浩特职业学院单招职业倾向性考试题库含答案详解(达标题)
- 2026年哈尔滨铁道职业技术学院单招职业技能考试题库附参考答案详解(黄金题型)
- 中毒急诊的感染控制措施
- 小型化基站应用解决方案培训
- 休克患者应激性溃疡的预防与护理
- 肩关节痛的检查 课件
- 人工气道患者呼吸支持设备技术创新
- 人工气道无创通气护理
- 毕业生半年实习总结
- 重难点08 新定义与代数 + 几何阅读理解问题(5大类17种题型)(复习讲义)(解析版)-【数学】2026年中考一轮复习讲练测
- 2026年春五年级组组长工作计划
- 2026年南京信息职业技术学院单招职业倾向性测试题库有答案详解
- 2026年包头轻工职业技术学院单招职业适应性考试题库附参考答案详解(a卷)
- 2026届新高考语文三轮热点复习:作文分层追问展思路
- 2025至2030中国PTT纤维市场培育策略与消费者接受度研究报告
- 2025~2026学年人教版八年级上册数学期末考试模拟卷
- 2025-2026学年教科版(新教材)小学科学一年级下册教学计划及进度表
- 2026年内蒙古电子信息职业技术学院单招职业技能考试题库带答案解析
- 产品功能定义与拆解手册
- 《勤俭传家好》-2025-2026学年统编版(新教材)小学道德与法治二年级下册
评论
0/150
提交评论