1、 操作系统课程设计报告 第 1 页 共 66 页 设计时间设计时间: 20112011- -1 1- -5 5 至至 20112011- -1 1- -7 7 一一.设计目的设计目的: 通过操作系统内其中一个子系统的设计和实现,掌握 Linux 文件系统的基本原理、结 构和实现方法,掌握 Linux 文件系统中文件的建立、打开、读/写、执行、属性等系统调用 的使用,学会设计简单的文件系统并实现一组操作,以及学习文件系统的系统调用命令, 提高对文件系统实现功能的理解和掌握。同时,掌握操作系统设计的方法与技巧,增强系 统软件设计的实际工作能力。 二二.设计设计内容:内容: 为 LINUX 设计一个
2、简单的二级文件系统。本文件系统采用类似 DOS 系统的文件管理方 式,每次调用该文件系统时,首先申请一定的内存空间,然后对该内存空间进行分配。将 申请到的空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示链 接(FAT 表)的方式。每次调用该文件系统时自动为其分配空间,并将上次操作的结果从 硬盘上调入内存;当结束调用时则将操作的结果重新存入硬盘,以便下次调用。 (每次使用 都会自动搜索文件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则 读取已存在的文件系统。 ) 三三设计过程设计过程 1、 实现功能实现功能 该系统具备下列功能: login 用户登录 logo
3、ut 注销 mkdir/md 创建目录 rmdir/rd 删除目录 cd/cd 修改目录 creat 创建文件 open 打开文件 dir 显示当前目录和文件 write 读文件 delete 删除文件 close 关闭文件 2、 添加功能添加功能 (1) 制作了一个“操作命令符”列表框,说明接下来如何操作,这样有利于更好地阅读、 操作和运行程序,使不懂得程序代码的人也可以运行该程序,更好地理解该程序实 现的功能。 (2) 在命令解释层函数 cmdexp()里加了一些选择和操作功能,增加程序实现的功能,如 原来程序只有显示当前目录和文件、创建目录和修改目录的功能,把它拓展到系统 所要求的全部功
4、能,并在原有的程序的基础上进行相应的修改,使程序更加完善。 3、 设计思路设计思路 (1) 要将文件存储在磁盘上,必须为之分配相应的存储空间,并对文件存储空间进行管 操作系统课程设计报告 第 2 页 共 66 页 理,为了简化对文件的访问和共享,还应设置相应的用户文件描述表及文件表。 文件卷的组织 UNIX 中,把每个磁盘(带)看作是一个文件卷,每个文件卷上可存放一个具有独立目 录结构的文件系统。一个文件卷包含许多物理块,并按块号排列如下图: 0# 1# 2# 3# K# K+1# N# 其中,0#块用于系统引导或空闲,1#为超级块(superblock),存放文件卷的资源管理 信息,如整个文件卷的盘块数、磁盘索引结点的盘块数、空闲盘块号栈及指针等。2#K# 存放磁盘索引结点。每个索引结点 64B,第 K+1#N#存放文件数据。 空闲盘块的组织 UNIX 采用成组链接法组织空闲盘块。它将若干个空闲盘块划归一个组,将每组中所有 盘块号存放在其前一组的第一个空闲盘块中,而第一组中所有空闲盘