《2022年2022年计算机操作系统课程设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机操作系统课程设计报告 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程设计课程设计目的本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O 操作、存储管理、文件系统等操作系统概念。课程设计要求(1)对进行认真分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据。(2)以完整的作业包的形式提交原始代码、设计文档和可运行程序。提交的光盘应当包括:设计题目,程序清单,运行结果分析,所选取的算法及其优缺点,以及通过上机取得了哪些经验。程序清单要求格式规范,注意加注释(包含关键字、方法、变量等),在每个模块前加注释,注释不得少于20%。课程设计要求同时上交打印文档,设计报告包括设计题目,算法分析,关键代码及其数据结构
2、说明,运行结果分析以及上机实践的经验总结。设计一:设计任务:模拟Linux 文件系统在任一 OS 下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟 Linux 文件系统。1.在现有机器硬盘上开辟100M 的硬盘空间,作为设定的硬盘空间。2.编写一管理程序simdisk 对此空间进行管理,以模拟Linux 文件系统,要求:(1)盘块大小 1k(2)空闲盘块的管理:Linux 位图法(3)结构:超级块,i 结点区,根目录区3.该 simdisk管理程序的功能要求如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 14 页 -(1)info:显示整个系统信息(参考 Li
3、nux 文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。(2)cd:改变目录:改变当前工作目录,目录不存在时给出出错信息。(3)dir:显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的 dir 命令,显示所有子目录)。(4)md:创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。(5)rd:删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。(6)newfile:建立文件。(7)cat:打开文件。(8)copy:拷贝文件,除
4、支持模拟Linux 文件系统内部的文件拷贝外,还支持 host 文件系统与模拟Linux 文件系统间的文件拷贝,host 文件系统的文件命名为,如:将 windows 下 D:盘的文件 datasampletest.txt文件拷贝到模拟 Linux 文件系统中的/test/data目录,windows 下 D:盘的当前目录为 D:data,则使用命令:simdisk copy D:datasampletest.txt/test/data 或者:simdisk copy D:sampletest.txt/test/data(9)del:删除文件:删除指定文件,不存在时给出出错信息。(10)che
5、ck:检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。4.程序的总体流程为:(1)初始化文件目录;(2)输出提示符,等待接受命令,分析键入的命令;(3)对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入 EXIT 退出为止。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 14 页 -设计二:设计任务:模拟文件系统的前端操作shell实现一个简单的 shell(命令行解释器)。将设计一的管理程序simdisk 作为后台进程运行,利用本设计任务的shell操作 simdisk。本设计任务在于学会如何实现在前
6、端的shell进程和后端的 simdisk进程之间利用共享内存进行进程间通信(IPC)。设计三:设计任务:模拟文件系统的操作管理实现多个进程同时对模拟文件系统进行操作。设计管理程序simdisk 的用户访问权限管理。访问模拟文件系统的每个进程都属于某个用户,管理程序 simdisk根据其访问权限决定其对模拟文件系统的操作。对模拟文件系统的操作要求做到:共享读,互斥写。本设计任务在于学会如何实现信息的安全管理和进程同步。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 14 页 -设计题目完成了设计一和设计二的大部分功能,模拟 Linux 文件系统的操作,并运行用户界面,用户可以对系
7、统进行初始化,并且执行相关的操作。课设原理Liunx 采用树型目录结构,每个目录表称为一个目录文件。一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含 32 个目录项。在目录项中,第1、2 字节为相应文件的外存 i 节点号,是该文件的内部标识;后14B 为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i 节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。Linux 的存储介质以 512B为单位划分为块,从 0 开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。Linux 中的文件
8、系统磁盘存储区分配图如下:整体设计1在现有机器硬盘上开辟100M 的硬盘空间,作为设定的硬盘空间。2编写一管理程序对此空间进行管理,以模拟Linux 文件系统(1)盘块大小 1k(2)i 结点文件类型正规文件目录文件(共 1byte)块设备 管道文件物理地址(索引表)共有 13 个表项,每表项 2byte 文件长度4byte 联结计数1byte(3)0 号块 超级块 栈长度 50 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 14 页 -空闲盘块的管理:位示图法(Linux)(4)每建一个目录,分配4 个物理块文件名 14byte(5)目录项信息i 结点号 2byte(6)结构
9、:0#:超级块1#20#号为 i 结点区20#30#号为根目录区(7)功能:1、初始化2、建立文件(需给出文件名,文件长度)3、建立子目录4、打开文件(显示文件所占的盘块)5、删除文件6、删除目录7、显示目录(即显示目录下的信息,包括文件、子目录等)8、显示整个系统信息设计思想:按照要求将 100M 的硬盘空间分成盘块大小为1k 的 102400个盘块。将 0 号块作为超级块,将1 号20 号作为 i 结点区,将 20 号30 号作为根目录区,其它用来存放文件。超级块中空闲盘块的管理使用成组链接的方法,每次运行要进行初始化,用数据结构实现文件的建立,目录的建立和删除,文件的打开和删除、显示目录
10、和整个系统信息等功能。位图区i 节点区数据区算法分析各模块算法流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 14 页 -是是否否遍历 i 节点区要创建的目录是否存在是否有空的i 节点遍历 i 节点区分配一个目录i 节点开始结束创建目录mkdir()是是否否遍历 i 节点区i 节点的父节点是否为当前目录i 节点区是否遍历完输出文件名或目录名开始结束显示目录 dir()是是否否遍历 i 节点区argv1=”.”目录是否存在找到的目录i 节点号送当前目录inum_cur 当前目录的父i节点号送当前目录 inum_cur 开始结束改变当前目录cd()读入位示图信息到内存读入 i
11、节点信息到内存当前目录为根目录初始化打开文件表结束开始初始化函数format()名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 14 页 -是否是否是否遍历 i 节点区要打开的文件是否存在提示输入打开模式将打开文件信息写入打开文件信息表file_array 遍历打开文件表 file_array 文件是否已经打开提示输入开始位置和读字节数调用读块操作,读出块内字符模式是否为可读开始结束开始结束打开文件 open()读文件 read()是是否否遍历 i 节点区要创建的文件是否存在是否有空的i 节点遍历 i 节点区分配一个文件i 节点开始结束创建文件creat()名师资料总结-精品资料
12、欢迎下载-名师精心整理-第 7 页,共 14 页 -关键代码及其数据结构说明是否遍历 i 节点区要删除的文件是否存在释放文件对应的i 节点区inode_arrayi.inum=-1 释放两个磁盘块文件是否大于的一块释放一个磁盘块是否开始结束删除文件del()是否是否遍历打开文件表 file_array 文件是否已经打开提示输入写入字节数调用写块操作,写入块内字符模式是否为可写是否遍历打开文件表 file_array 文件是否已经打开将打开文件表项标志位置-1 file_arrayi.inum=-1 开始结束写文件 write()开始结束关闭文件close()名师资料总结-精品资料欢迎下载-名师
13、精心整理-第 8 页,共 14 页 -定义的数据结构:空闲盘块:struct block int n;/空闲的盘快的个数int free50;/存放空闲盘快的地址int a;/模拟盘快是否被占用 超级块:struct block_super int n;/空闲的盘快的个数int free50;/存放进入栈中的空闲块int stack50;/存放下一组空闲盘快的地址 i 结点信息struct node/i 结点信息 int file_style;/i 结点文件类型int file_length;/i 结点文件长度int file_address100;/i 结点文件的物理地址 目录信息:stru
14、ct dir/目录项信息名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 14 页 -char file_name10;/文件名int i_num;/文件的结点号char dir_name10;/文件所在的目录 主要功能函数:void format();/格式化void write_file(FILE*fp);/将信息读入系统文件中void read_file(FILE*fp);/读出系统文件的信息void callback(int length);/回收磁盘空间void allot(int length);/分配空间void create_file(char filename,i
15、nt length);/创建文件void create_dir(char filename);/创建目录void del_file(char filename);/删除文件void del_dir(char filename);/删除目录需要判断目录下时候为空,不为空就不删除void display_curdir();/显示当前目录下的文件列表void display_dir(char filename);/进入指定的目录void open_file(char filename);/打开文件void back_dir();/返回上一级目录void display_sys();/显示系统信息(磁
16、盘使用情况)void help();/显示帮助信息运行结果分析以及上机实践的经验总结名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 14 页 -运行结果分析:程序运行后显示菜单如图1.图 1 测试初始化功能:选择“y”初始化虚拟空间,之后可以开始执行命令。图 2 创建一个目录“user”,在目录下建立一个“zkw”文件,定义长度为 10。程序显示如下信息。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 14 页 -图 3 查看当前目录下的文件。图 4 目录删除测试,当目录中有文件存在时,给出错误信息,当目录为空时,可成功删除该目录。图 5 名师资料总结-精品资料
17、欢迎下载-名师精心整理-第 12 页,共 14 页 -图 6 程序打开后默认显示帮助信息,如果需要重新显示,则输入“help”命令。图 7 输入不存在的命令时,会给出错误信息。图 8 输入“info”命令,可以显示系统的空间使用情况。图 9 可以选择重新初始化系统,输入“format”命令,当退出系统时,系统会自动保存当前状态。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 14 页 -图 10 以上是系统的功能测试和测试的截图。有一些实验要求的功能没有能实现,copy 文件,和 check文件系统。课程设计总结:1、本次课程设计是一次将书本知识应用到实践考验。经过此次设计,将课本和课堂所学的一些知识运用到程序中还是需要一定的努力,自学一些相关的知识。2、对于本次课程设计,自己从中取得了许多知识,提高了自己解决问题的能力,应该耐心的去解决程序中的问题和不足。3、遇到问题时,应该认真去查阅资料,学习不懂的知识。4、通过课程设计,对自己学习C+有用的软件及对操作系统中文件管理系统的了解,更深一步掌握了操作系统的一些概念。附录:源程序的代码head.h文件 simdisk.cpp 文件可执行文件 simdisk.exe 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 14 页 -
限制150内