文件系统课程设计报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
设计时间:2011-1-5至2011-1-7 专业年级:08计科4班: 一.设计目的: 通过操作系统其中一个子系统的设计和实现,掌握Linux文件系统的基本原理、结构 和实现方法,掌握Linux文件系统中文件的建立、打开、读/写、执行、属性等系统调用 的使用,学会设计简单的文件系统并实现一组操作,以与学习文件系统的系统调用命令 ,提高对文件系统实现功能的理解和掌握。同时,掌握操作系统设计的方法与技巧,增 强系统软件设计的实际工作能力。 二.设计容: 为LINUX 设计一个简单的二级文件系统。本文件系统采用类似DOS系统的文件管理方式,每次调用 该文件系统时,首先申请一定的存空间,然后对该存空间进行分配。将申请到的空间划 分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示(FAT表)的方式 。每次调用该文件系统时自动为其分配空间,并将上次操作的结果从硬盘上调入存;当 结束调用时则将操作的结果重新存入硬盘,以便下次调用。(每次使用都会自动搜索文 件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则读取已存在的 文件系统。) 三.设计过程 1. 实现功能 该系统具备下列功能: login 用户登录 logout 注销 mkdir/md 创建目录rmdir/rd 删除目录 cd/cd .. 修改目录creat 创建文件 open 打开文件dir 显示当前目录和文件 write 读文件 delete 删除文件 close 关闭文件 2. 添加功能 1. 制作了一个"操作命令符"列表框,说明接下来如何操作,这样有利于更好地阅读、操 作和运行程序,使不懂得程序代码的人也可以运行该程序,更好地理解该程序实现 的功能。 2. 在命令解释层函数cmdexp()里加了一些选择和操作功能,增加程序实现的功能,如原 来程序只有显示当前目录和文件、创建目录和修改目录的功能,把它拓展到系统所 要求的全部功能,并在原有的程序的基础上进行相应的修改,使程序更加完善。 3. 设计思路 (1) 要将文件存储在磁盘上,必须为之分配相应的存储空间,并对文件存储空间进行管理, 为了简化对文件的访问和共享,还应设置相应的用户文件描述表与文件表。 文件卷的组织 UNIX中,把每个磁盘(带)看作是一个文件卷,每个文件卷上可存放一个具有独立目 录结构的文件系统。一个文件卷包含许多物理块,并按块号排列如下图: "0# 1# 2# 3# ……K# K+1# ……N# " 其中,0#块用于系统引导或空闲,1#为超级块(superblock),存放文件卷的资源管理 信息,如整个文件卷的盘块数、磁盘索引结点的盘块数、空闲盘块号栈与指针等。2#~K #存放磁盘索引结点。每个索引结点64B,第K+1#~N#存放文件数据。 空闲盘块的组织 UNIX采用成组法组织空闲盘块。它将若干个空闲盘块划归一个组,将每组中所有盘块号 存放在其前一组的第一个空闲盘块中,而第一组中所有空闲盘块号放入超级块的空闲盘 块号栈中。 例: 超级块表 "109 "106 "103 "100 "95 " " "211 "208 "205 "202 " " "310 "307 "304 "301 " " 空闲盘块的分配与回收 核要从文件系统中分配一盘块时,先检查超级块空闲盘块号栈是否已上锁。是则调用 sleep睡眠,否则将超级块中空闲盘块栈栈顶盘块号分配出去。 回收时,若空闲盘块号栈未满,直接将回收盘块编号记入空闲盘块号栈中。若回收时 栈已满,须先将栈中的所有空闲盘块号复制到新回收的盘块中,再将新回收盘块的编号 作为新栈的栈底块号进栈。 (2) UNIX中,为了加速对文件目录的查找,将文件名和文件说明分开,由文件说明形成一个 称为索引结点的数据结构,而相应的文件目录项则只由文件符号名和指向索引结点的指 针构成。对目录的管理应包括的功能有: 对索引结点的管理:每个文件都有一唯一的磁盘索引结点(di_node)。文件被打开后 ,还有一个存索引结点(i_node)。创建一新文件时,就为之建立一个磁盘索引结点,以 将文件的有关信息记入其中,并将用户提供的文件名和磁盘索引结点号一并组成一个新 目录项,记入其父目录文件中。文件被撤消时,系统要回收该文件的磁盘索引结点,从 其父目录中删除该目录项。随着文件的打开与关闭,系统还要为之分配和回收存索引结 点。 磁盘索引结点中,包含有关文件的下述一系列信息:文件模式di_mode、文件所有者 用户标识符di_uid、同组用户标识符di_gid、文件长度di_size、文件的联接计数di_nl ink、文件的物理地址di_addr、文件的访问时间di_atime、文件的修改时间di_mtime和 文件的建立时间di_citime。 存索引结点:文件被打开后,系统为它在存索引 【文件系统设计报告】 在操作系统领域,文件系统是至关重要的组成部分,它负责管理和组织存储设备上的数据,使得用户能够高效地创建、访问和管理文件。本报告主要介绍了一个基于Linux的简单二级文件系统的设计,旨在让学生掌握文件系统的基本原理、结构和实现方法。 **设计目的** 设计这个文件系统的主要目标是让学生深入理解Linux文件系统的工作机制,包括文件的建立、打开、读/写、执行以及属性设置等系统调用的使用。此外,它还要求学生能设计并实现一个简单的文件系统,增强实际的系统软件设计能力。 **设计内容** 该文件系统模仿了DOS的文件管理方式,运行时首先申请内存空间,然后进行分配。空间分为目录区和文件区,采用位示图进行空间管理,利用FAT表(文件分配表)来分配盘块。每次启动系统会自动检查文件系统状态,首次使用时进行格式化,之后则读取已存在的文件系统。 **实现功能** 系统支持以下操作: 1. 用户登录与注销 2. 创建和删除目录 3. 改变当前目录 4. 创建文件 5. 打开、读取和写入文件 6. 删除文件 7. 关闭文件 **增强功能** 1. 添加了操作提示列表,使得非程序员也能理解并运行程序。 2. 扩展了命令解释层,增加了更多功能,如完整的系统调用集。 **设计思路** 1. **文件卷组织**:每个磁盘被视为一个文件卷,包含多个物理块。0#块用于引导,1#块为超级块,存储文件卷信息。2#~K#块存放索引结点,K+1#~N#块存放文件数据。 2. **空闲盘块管理**:采用成组法,空闲盘块信息存储在前一组的第一个空闲盘块中,超级块维护空闲盘块号栈。分配时检查栈状态,回收时处理栈满情况。 3. **索引结点管理**:文件名和文件说明分离,每个文件有一个磁盘索引结点(di_node)和内存索引结点(i_node)。创建文件时建立磁盘索引结点,打开文件时分配内存索引结点。文件被删除时回收索引结点,目录项随之更新。 **总结** 通过这个课程设计,学生不仅能够理解文件系统的核心概念,如文件的存储、目录管理、空间分配等,还能实际操作实现这些功能,从而深化对操作系统的理解。这个设计提供了实践操作系统设计的机会,对于提高学生的实际编程和系统设计技能具有重要作用。
剩余65页未读,继续阅读
- 粉丝: 105
- 资源: 9352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助