1、操作系统课程设计报告设计题目:多用户、多级目录结构文件系统的设计与实现班 级:计算机1202班组长学号:20123843设计时间:2015年7月1摘要文件是具有文件名的一组关联信息的集合,通常文件由若干个记录组成。文件系统是操作系统与管理文件有关的软件和数据集合。从用户的角度看,文件系统实现 按名存取。从系统的角度看,文件系统是对文件存储器的存储空间进行 组织、分配负责文件的存储并对存入的文件实施保护、检索的一组软件集合。为 使用户能灵活方便地使用和控制文件,文件系统提供了一组进行文件操作的系统 调用:建立文件、删除文件、打开文件、关闭文件、读文件和写文件本文通过分析上课所述的有关文件系统内容,学习老师提供的实现设计,按 照任务书的说明,在组员的共同努力下,自主设计数据结构与相关算法,模拟了 一个简易文件系统。能够实现多用户、多级目录,并用成组链接法实现空闲磁盘 块分配与回收。该文件系统提供用户登录、目录管理、文件管理等功能,可满足 用户日常使用。通过这次课程设计,我们加深了对操作系统中文件系统的理解, 了解了文件系统中文件的物理存储结构。关键词:操作系统,文件系统。摘要3.1 概述5
2、.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)、文件的创建(c
3、reate、文件的读(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以上是基本内容,可以根据实际文件系统提供的命令和系统调用,自己增 加和实现附
4、加的功能。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
5、;/存放空闲盘快的个数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块
6、进行分配和回收。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
7、功能该模块包括用户登录和注销。用户通过正确的用户名和密码,即可登录系统。 用户可以创建文件或目录,但是只能管理自己创建的文件或目录。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;/文件的
8、结点号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; 文件
《东北大学操作系统课设成组链接法文件系统报告要点》由会员hs****ma分享,可在线阅读,更多相关《东北大学操作系统课设成组链接法文件系统报告要点》请在金锄头文库上搜索。