操作系统课程设计模板.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:31 大小:268KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统课程设计模板.doc

操作系统课程设计模板.doc

预览

免费试读已结束,剩余 21 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统课程设计报告题目:文件系统模拟设计学生姓名:丁宝殿学号:200917030124专业班级:网工09101同组姓名:周孚杰王泽湘邓家强张弛指导教师:熊齐设计时间:02.13-02.26指导老师意见:评定成绩:签名:日期:一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。二、设计内容(1)概述为LINUX设计一个简单的二级文件系统。要求做到以下几点:1、可以实现下列几条命令(至少4条)。Login用户登录Dir列文件目录Create创建文件Delete删除文件Open打开文件Close关闭文件Read读文件Write写文件2、列目录时要列出文件名、物理地址、保护码和文件长度。3、源文件可以进行读写保护。(2)设计原理和系统总体功能框架图设计原理:首先本文件系统采用两级目录,其中第一级对应于用户账户,第二级对应于用户账户下的文件。另外,为了简单本文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。另外该文件系统依据以下数据结构及主要函数而设计的。(1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。(2)用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。设计思想:本系统是模拟实现多用户多目录的文件系统(8个用户),在系统出现登录后,输入用户与口令,在用户登录系统后,可建立文件卷,将用户输入的文件保存在指定的文件中。系统的命令与其命令的具体实现,此模拟系统共提供了上述命令,并根据命令的含义与要求,用C++编程来完成所有具体操作。该系统可以模拟完成用户的登陆和验证,列出文件和目录,新建目录,改变目录,创立和编写文件,删除文件和退出系统等功能。【1】主要的一些数据结构1)i节点structinode{structinode*i_forw;structinode*i_back;chari_flag;unsignedinti_ino;/*磁盘i节点标号*/unsignedinti_count;/*引用计数*/unsignedshortdi_number;/*关联文件数,当为0时,则删除该文件*/unsignedshortdi_mode;/*存取权限*/unsignedshortdi_uid;/*磁盘i节点用户id*/unsignedshortdi_gid;/*磁盘i节点组id*/unsignedintdi_addr[NADDR];/*物理块号*/2)磁盘i节点structdinode{unsignedshortdi_number;/*关联文件数*/unsignedshortdi_mode;/*存取权限*/unsignedshortdi_uidunsignedshortdi_gid;unsignedlongdi_size;/*文件大小*/unsignedintdi_addr[NADDR];/*物理块号*/}3)目录项结构structdirect{chard_name[DIRSIZ];/*目录名*/unsignedintd_ino;/*目录号*/}4)超级块structfilsys{unsignedshorts_isize;/*i节点块块数*/unsignedlongs_fsize;/*数据块块数*/unsignedints_nfree;/*空闲块块数*/unsignedshorts_pfree;/*空闲块指针*/unsignedints_free[NICFREE];/*空闲块堆栈*/unsignedints_ninode;/*空闲i节点数*/unsignedshorts_pinode;/*空闲i节点指针*/unsignedints_inode[NICINOD];/*空闲i节点数组*/unsignedints_rinode;/*铭记i节点*/chars_fmod;/*超级块修改标记*/}5)用户密码structpwd{unsignedshortp_uid;unsignedshortp_gid;charpassword[PWOSIZ];};6)目录structdir{structdirectdirect[DIRNUM];intsize;};7)查找内存i节点的hash表structhinode{structinode*i_forw;};