操作系统实验报告3.doc

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

操作系统实验报告 学 生 姓 名 学 号 班 级 实验名称 文件管理 实验序号 3 实验日期 2014.12.25 实验人 一、实验目的和要求 通过一个简单多用户文件系统设计,加深理解文件系统的内部功能及实现。 二、相关背景知识 Linux是一个性能稳定、功能强大、效率高的操作系统。它在功能特性方面与Unix系统相似,同时又具有多任务、多用户、多平台等若干特性。Linux的源代码是开放的,阅读Linux源代码,无疑是深入学习Linux的最好方法。   文件系统是Linux操作系统的重要组成部分,Linux文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。 三、实验内容 为Unix/Linux 系统设计一个简单的二级文件系统。要求做到以下几点: 可以实现下列几条命令: login 用户登录 logout 拥护注销 Create 新建文件 Delete 删除文件 Open 打开文件 Close 关闭文件 Read 读文件 Write 写文件 Dir 列目录 列目录时要列出文件名,物理地址,保护码和文件长度。 源文件可以进行读写保护。 四、关键数据结构与函数的说明 Login 用户登录 Dir 列文件目录 Create 创建文件 Delete 删除文件 Open 打开文件 Close 关闭文件 Read 读文件 Write 写文件 五、编译与执行过程截图 六、实验结果与分析 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 七、调试时遇到的问题及解决方法 二级文件目录结构是为每个用户设置一张目录表,称为用户文件目录。用户文件目录为本用户的每一个文件设置一个目录项。再用一张总的目录表来登记各个用户的目录存放地址,这张总的目录表成为主文件目录。当用户当用户需要访问某个文件时,系统根据每个用户名从主文件目录中找到该用户的文件目录的存放地址,再按指定的文件名查找这张用户文件目录表,从用户文件目录表中找出对应扥目录项就可以找到文件存放的物理位置 八、调试后的程序源代码 #includestdio.h #includestring.h #includestdlib.h #define DIR_LENGTH 1024 /*路径最长可达100字节*/ #define MAX_WRITE 1024*128 /*写入文字可达128k字节*/ #define MEM_D_SIZE 1024*1024 /*1M磁盘空间*/ #define DISKSIZE 1024 /*磁盘块的大小 1K*/ #define MSD 5 /*最大子目录数 5 */ #define DISK_NUM MEM_D_SIZE/DISKSIZE /*磁盘块数目 1024=1M/1K*/ #define FATSIZE DISK_NUM*sizeof(struct fatitem) /*FAT表大小 */ #define MOFN 5 /*最大文件打开数 5 (即除根以外最大深度为5)*/ #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 /*根目录起始盘快号 9*/ #define ROOT_DISK_SIZE sizeof(struct direct)/*根目录大小 196*/ /*---------------FAT表项结构-----------------------*/ struct fatitem /* size 8*/ { int item; /*存放文件下一个磁盘的指针*/ char em_disk; /*磁盘块是否空闲标志位 0 空闲*/ }; /*-------------------目录项结构------------

文档评论(0)

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

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

1亿VIP精品文档

相关文档