操作系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
设计题目:多用户、多级目录结构文件系统的设计与
实现
班级:
组长学号:
组长姓名:
指导教师:
设计时间:2015年7月
设计分工
组长学号及姓名:
分工:构建系统框架,实现磁盘i节点调入内存,以及内存i节点的申请分配与回收,新建文件和目录,文件的读写
组员1学号及姓名:
分工:实现成组链接法分配与回收,实现用户登陆和注销,实现格式化初始化函数,参与系统界面的设计
组员2学号及姓名:
分工:
组员3学号及姓名:
分工:
组员4学号及姓名:
分工:
摘要
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
关键词:操作系统,文件系统
摘要 (3)
1概述 (5)
2课程设计任务与要求 (7)
2.1设计任务 (7)
2.2设计要求 (7)
3算法及数据结构 (8)
3.1算法的总体流程 (8)
3.2超级块 (10)
3.2.1功能 (10)
3.2.2数据结构 (10)
3.2.3算法 (11)
3.3磁盘i节点与内存i节点 (12)
3.3.1功能 (12)
3.3.2数据结构 (13)
3.3.3算法 (14)
3.4文件夹操作 (15)
3.4.1功能 (15)
3.4.2数据结构 (15)
3.4.3算法 (16)
3.5文件的操作 (17)
3.5.1功能 (17)
3.5.2数据结构 (17)
3.5.3算法 (18)
4程序设计与实现 (19)
4.1程序流程图 (19)
4.2程序说明 (20)
4.3实验结果 (26)
5结论 (27)
6参考文献 (28)
7收获、体会和建议 (29)
1概述
UNIX 采用树型目录结构,每个目录表称为一个目录文件。
一个目录文件是由目录项组成的。每个目录项包含16B ,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i 节点号,是该文件的内部标识;后14B 为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i 节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B 为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX 中的文件系统磁盘存储区分配图如下:
本次课程设计是要实现一个简单的模拟UNIX 文件系统。我们在磁盘中申请一个二进制文件模拟UNIX 内存,依次初始化建立位示图区,I 节点区,数据块区。并给已打开的文件建立文件打开表。
本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号i 节点区 文件存储区
引导区 管理区
存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。
2课程设计任务与要求
2.1设计任务
多用户、多级目录结构文件系统的设计与实现。
2.2设计要求
1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;
2、设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理;
3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;
4、确定测试方案,选择测试用例,对系统进行测试;
5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;
6、提交课程设计报告。
3算法及数据结构3.1算法的总体流程
3.2超级块
3.2.1功能
超级块位于块组的最前面,描述文件系统整体信息的数据结构,主要描述文件系统的目录和文件的静态分布情况,以及描述文件系统的各种组成结构的尺寸、数量等。
3.2.2数据结构
//超级块
#define NICFREE 50//成组链接法中的每组50块
#define NICINOD 50//超级块中空闲节点的最大块
typedef struct{
unsigned short s_isize;//索引节点块块数
unsigned long s_fsize;//数据块块数
unsigned int s_nfree;//空闲块块数
unsigned short s_pfree;//栈深
unsigned int s_free[NICFREE];//空闲块堆栈
unsigned int s_ninode;//空闲索引节点数
unsigned short s_pinode;//空闲索引节点指针
unsigned int s_inode[NICINOD];//空闲索引节点数组
unsigned int s_rinode;//铭记索引节点
char s_fmod;//超级块修改标志
}Filsys;
#endif