操作系统课程设计-二级文件系统.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 操作系统课程设计-二级文件系统

1、实验内容 为linux系统设计一个简单的二级文件系统。实现了一下命令:login 用户登陆 dir 列文件目录 create 创建文件delete 删除文open 打开文件close 关闭文件read 读文件write 写文件。同时实现了文件保护功能,文件种类分三种:保护、只读、读写。保护文件不能读写、打开,只读只能读,不能写,不能删除。读写可以读取、写入、删除。2、设计思路:首先创建一个512K的文件,文件的前2K用来存放整个磁盘文件的组织情况,接下来的1K用来存放用户信息,第4K到第53K用来存放用户的文件信息,其余的459K用来给用户创建文件使用。如图:2K:存放磁盘信息。前48个字节为:000000002047002048003071003072054271054272524287,用来表示磁盘分配,每6个一组,单位是byte。剩下的用来存放459K的使用情况,格式为块数3位+使用情况(0/1),共459*4个,如第0块格式为:0000。在48+459*4之后的空间中的150字节,表示用户块的使用情况,格式为块数2位+使用情况(0/1),如第一块为010或011。1K:存放用户信息,共50个。用户信息组织如下:用户名(6)+密码(12)+分配的文件信息块(2),共20位。50K:存放文件信息:文件组织情况如下:文件名(9)+长度(4)+模式(1)+占用地址(2*3:文件最多占两块,每块地址为3位)共20位,如果该块已经被分配,那么该块最后一位置1。459K:1K为一个文件块,共459K。3、具体实现:在程序开始运行时,先读取文件的前48个字节的信息,获取个个分区的起止位置,然后根据获得的位置信息读取存放用户信息的那1K,并按着格式把用户信息组成对象,放入存储的用户信息的Set实例userSet中。同时读取记录给用户存放文件信息的块的150个字节,读取这个是为新用户注册分配空间做准备。然后进入用户登录程序,当用户登录成功后,获得给该用户分配的存放文件信息块的索引,将块中的相应的信息存入filesArr数组中,并组成文件对象,放入到fileInitSet中。Login:用户登录,用户登录时,首先检查在userSet中有没有该用户名,如果有就比对密码,如果比对成功,就登录成功。如果比对失败,就提示密码错误。如果用户名不存在,就进入创建用户的程序,比对两次输入密码是否相同,如果两次密码相同,为用户分配空间,创建用户,把用户信息加入用户对应的集合中。 Create:文件创建,创建文件时首先输入文件名,文件名输入完之后程序和已有文件比对,如果存在,提示,然后退出文件创建程序。如果不存在,则输入其他的信息,所有信息输入完之后创建文件。首先比对文件长度,如果文件长度小于1024,获取1个文件空间,并把空间的标志位置1,前三位用000补成6位,然后创建文件对象,加入到文件集合中,并把文件信息直接写入到文件对应的位置中,如果大于1024,则获取两个空间,前一个空间地址和后一个空间地址组成6位,其余的和小于1024的相同。 Delete:删除文件,删除文件时先要检查该文件是不是被打开,如果为打开状态,则提示要先关闭文件。否则把符合条件的文件在文件集合中删除,并在对应的用户的文件记录数组中中清除该文件的信息,最后在对应的位置写入1024或2048个空格。Dir:文件列表,这个功能就是把文件集合中的所有的元素遍历并打印一遍。Open/Close:打开、关闭文件,打开文件就是把符合条件的文件(只读、读写类型的文件)的相应信息存到一个集合中,即程序中的statusSet集合,关闭文件就是把对应的文件在statusSet集合中移除。Read/Write:读、写文件,当输入要读的文件名时,先要和已经打开的文件进行比对,如果存在就通过文件内容的物理地址读取相关文件的内容,如果不存在提示要先打开。写文件的逻辑和读文件基本相同,但是多了一个检查文件类型的步骤,即只用为读写类型的文件才可以写。写的时候会覆盖原文件内容。同时还要判读原文件内容和新内容,如果原文件长度小于1024,新文件内容大于1024,那么就得分配新的空间,修改文件地址。反之则要释放空间。Show:显示已经打开的文件,执行这个命令时系统会把statusSet集合中所有的对象遍历并打印一遍。Help:帮助,打印系统能够执行的命令及其功能。Save:保存文件,执行命令时系统会把userSet和fileInitSet等信息转换为字符数组,写回到文件中。Exit:退出系统,退出系统时调用Save方法,执行完之后退出。4、源码://OSFile.javapublic class OSFile {private String fpaddr; /* 文件物理地址 */private String flen

文档评论(0)

iwh682 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档