资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
操作系统课程设计报告设计题目:多用户、多级目录结构文件系统的设计与实现班 级:计算机1202班组长学号:20123843设计时间:2015年7月1摘要文件是具有文件名的一组关联信息的集合,通常文件由若干个记录组成。文件系统是操作系统与管理文件有关的软件和数据集合。从用户的角度看,文件系统实现 按名存取。从系统的角度看,文件系统是对文件存储器的存储空间进行 组织、分配负责文件的存储并对存入的文件实施保护、检索的一组软件集合。为 使用户能灵活方便地使用和控制文件,文件系统提供了一组进行文件操作的系统 调用:建立文件、删除文件、打开文件、关闭文件、读文件和写文件本文通过分析上课所述的有关文件系统内容,学习老师提供的实现设计,按 照任务书的说明,在组员的共同努力下,自主设计数据结构与相关算法,模拟了 一个简易文件系统。能够实现多用户、多级目录,并用成组链接法实现空闲磁盘 块分配与回收。该文件系统提供用户登录、目录管理、文件管理等功能,可满足 用户日常使用。通过这次课程设计,我们加深了对操作系统中文件系统的理解, 了解了文件系统中文件的物理存储结构。关键词:操作系统,文件系统。摘要3.1 概述5.1.1 概要设计5.1.2 基本原理5.2课程设计任务及要求5.1.1 设计任务5.1.2 设计要求6.3 .算法及数据结构6.3.1 算法的总体思想(流程)63.2 系统初始化和安装模块.6.3.2.1 功能7.3.2.2 数据结构7.3.3 磁盘管理模块8.3.3.1 功能8.3.3.2 数据结构8.3.3.3 算法8.3.4 用户模块9.3.4.1 功能9.3.4.2 数据结构9.3.5 目录管理模块9.3.5.1 功能9.3.5.2 数据结构9.3.6 文件管理模块 1.03.6.1 功能1.03.6.2 数据结构.104 .程序设计与实现1.24.1 程序流程图1.24.2 程序说明1.84.3 实验结果1.95 .结论236参考文献237.收获、体会和建议241概述1.1 概要设计本文基于操作系统文件管理,设计实现一个多用户、多级目录结构的文件 系统,主要实现了多用户(user0,useU,user2)、多级目录、系统初始化(format)、 用户登录(login)、显示命令帮助(help)、列出文件目录(dir)、创建目录(cdir)、 改变目录(cd)、文件的创建(create、文件的读(read)、文件的写(edit)、 文件的删除(del)、文件的重命名(rename、注销登录(logout)、退出(quit) 等相关功能。1.2 基本原理本系统采用磁盘存储方式,空闲磁盘块采用成组链接法分配与回收。系统主要数据结构如下:文件目录项1节点于1*4 *4 ,* 停点支&集。文样长金丈母麻占月及in*. , . *.占用挣去方看电本 V4 .* *, 坛于卷聚2课程设计任务及要求2.1 设计任务模拟UNIX (或LINUX ,或FAT)系统的文件管理功能。包括多用户:usr1,,usr8 (1-8个用户)多级目录:可有多级子目录具有login (用户登录)系统初始化(建文件卷、提供登录模块)文件的创建:create文件的打开:open文件的读:read文件的写:write模拟UNIX (或LINUX ,或FAT)系统的文件管理功能。包括:文件关闭:close删除文件:delete创建目录:mkdir改变目录:chdir列出文件目录:dir退出:logout格式化:format以上是基本内容,可以根据实际文件系统提供的命令和系统调用,自己增 加和实现附加的功能。2.2 设计要求1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计 合理;3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系 统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处, 并回答指导教师的提问;3.算法及数据结构3.1 算法的总体思想(流程)文件系统由每块1024字节的若干磁盘块组成。磁盘块由文件目录、磁盘 i 节点和超级块管理。采用成组链接法分配和回收 block块。3.2 系统初始化和安装模块3.2.1 功能该模块实现的功能有系统初始化和载入。系统初始化是指将已定义好的磁盘 结构写入磁盘,包括用户信息、初始用户目录、超级块信息以及磁盘i位图和block 块位图初始状态。系统安装是指将上次保存的文件系统重新读取出来。3.2.2 数据结构该模块主要的数据结构包括磁盘块结构、i结点结构、超级块结构和目录项结构。/*磁盘块结构*/struct block/一个块占 1KBint n;/存放空闲盘快的个数int free50;/存放空闲盘快的地址int a;/盘快是否被占用标志char content1000;快上每个字节存放的符号memory20449;/*超级块结构*/struct block_superint n;/空闲的盘快的个数int free50;/存放进入栈中的空闲块super_block;/*i结点结构*/struct node /i 结点信息int file_style;/i结点文件类型int file_length;/i结点文件长度int file_address100; 文件占用的物理块号。int limit;打开读写权限,0表示能打开读写,1表示能打开读,2表示能打开写, 3表示只能打开int file_UserId; i_node640;/*目录项结构*/struct dir /目录项信息char file_name10;文件名int i_num;/文件的结点号char dir_name10;目录名或者说文件所在目录root640;3.3 磁盘管理模块3.3.1 功能该模块包括i节点和block块的分配。本系统采用成组链接法对block块进行分配和回收。3.3.2 数据结构该模块的主要数据结构用到磁盘块结构和超级快结构。/*磁盘块结构*/struct block/一个块占 1KBint n;/存放空闲盘快的个数int free50;/存放空闲盘快的地址int a;/盘快是否被占用标志char content1000;快上每个字节存放的符号memory20449;/*超级块结构*/struct block_superint n;/空闲的盘快的个数int free50;/存放进入栈中的空闲块super_block;3.3.3 算法该模块采用成组链接法管理block块。将空闲块分成若干组,每50个空闲块为一组,每组的第一空闲块登记了下一组空闲块的物理盘块号和空闲块总数。如果一个组的第二个空闲块号等于0,则有特殊的含义,意味着该组是最后一组,即无下一个空闲块。将第一组放入超级快中。分配空闲块的时候,从前往后分配,先从第一组开始分配,第一组空闲的50 块分完了,才进入第二组。释放空闲块的时候正好相反,从后往前分配,先将释放的空闲块放到第一组, 第一组满了,在第一组前再开辟一组,之前的第一组变成第二组。3.4 用户模块3.4.1 功能该模块包括用户登录和注销。用户通过正确的用户名和密码,即可登录系统。 用户可以创建文件或目录,但是只能管理自己创建的文件或目录。3.4.2 数据结构本系统中用户信息包括用户id、用户名、密码。具体定义如下所示。string UserName8 = user0, useU, user2, user3, user4, user5,user6, user7;stringPassWord8=12345,12345,12345,12345,12345,12345,12345,12345;UserName数组下标即用户ID。3.5 目录管理模块3.5.1 功能该模块包括列出目录下文件、创建目录、打开目录、删除目录等功能。用 户可以创建不重名的目录,如果发现重名目录,则系统不允许创建。列出文件目 录命令将当前所在目录下的所有子目录及文件。打开目录命令能切换当前目录。 删除目录时首先会判断所要删除的目录下是否有文件,如果有,则不允许删除, 否则可将目录删除。3.5.2 数据结构/*目录项结构*/struct dir /目录项信息char file_name10; 文件名int i_num;/文件的结点号char dir_name10;目录名或者说文件所在目录root640;/*i结点结构*/struct node /i 结点信息int file_style;/i结点文件类型int file_length;/i结点文件长度int file_address100; 文件占用的物理块号。int limit;打开读写权限,0表示能打开读写,1表示能打开读,2表示能打开写,3表示只能打开int file_UserId; i_node640;I节点中的文件类型为0时代表该文件是目录文件,可以进行相关目录操作。3.6 文件管理模块3.6.1 功能该模块包括文件的创建、文件的打开与关闭、文件的读、文件的写、文件的 删除等功能。用户可以创建不重名的文件,如果发现重名文件,则系统不允许创 建。文件的读命令将文件内容显示在屏幕上。文件的写命令能添加文件内容。文件的删除命令将文件删除。3.6.2 数据结构该模块主要的数据结构包括磁盘块结构、i结点结构、超级块结构和目录项 结构。/*磁盘块结构*/struct block/一个块占 1KBint n;/存放空闲盘快的个数int free50;/存放空闲盘快的地址int a;/盘快是否被占用标志char content1000;快上每个字节存放的符号memory20449;/*超级块结构*/ struct block_superint n;/空闲的盘快的个数int free50;/存放进入栈中的空闲块super_block;/*i结点结构*/struct node /i 结点信息int file_style;/i结点文件类型int file_length;/i结点文件长度int file_address100; 文件
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号