操作系统课程设计-Linux二级文件系统设计

上传人:aa****6 文档编号:29219680 上传时间:2018-01-22 格式:DOCX 页数:25 大小:39.97KB
返回 下载 相关 举报
操作系统课程设计-Linux二级文件系统设计_第1页
第1页 / 共25页
操作系统课程设计-Linux二级文件系统设计_第2页
第2页 / 共25页
操作系统课程设计-Linux二级文件系统设计_第3页
第3页 / 共25页
操作系统课程设计-Linux二级文件系统设计_第4页
第4页 / 共25页
操作系统课程设计-Linux二级文件系统设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《操作系统课程设计-Linux二级文件系统设计》由会员分享,可在线阅读,更多相关《操作系统课程设计-Linux二级文件系统设计(25页珍藏版)》请在金锄头文库上搜索。

1、专 业:软件工程操作系统课程设计报告操作系统课程设计报告1学 号:姓 名:马提交日期:2017/1/10【设计目的】1、 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现2、 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统3、通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】为 Linux系统设计一个简单的二级文件系统。要求做到以下几点:1.可以实现下列几条命令:login 用户登录dir 列目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件writ

2、e 写文件操作系统课程设计报告2cd 进出目录2列目录时要列出文件名,物理地址,保护码和文件长度3源文件可以进行读写保护【实验环境】C+DevCpp【设计思路】本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2并以编号作为物理地址,在目录中进行登记。结构体:typedef struct /*

3、the structure of OSFILE*/int fpaddr; /*file physical address*/int flength; /*file length*/int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/char fnameMAXNAME; /*file name*/ OSFILE; /存放重要信息 typedef struct /*the structure of OSUFD*/char ufdnameMAXNAME; /*ufd name*/OSFILE uf

4、dfileMAXCHILD; /*ufd own file*/操作系统课程设计报告3OSUFD; /用户下面的文件 typedef struct /*the structure of OSUFDLOGIN*/char ufdnameMAXNAME; /*ufd name*/char ufdpword8; /*ufd password*/ OSUFD_LOGIN;typedef struct /*file open mode*/int ifopen; /*ifopen:0-close,1-open*/int openmode; /*0-read only,1-write only,2-read

5、and write,3-initial*/OSUFD_OPENMODE;主要的函数说明:void LoginF(); /*LOGIN FileSystem 用户登录*/void DirF(); /*Dir FileSystem 列目录*/void CdF(); /*Change Dir 改变目录 */void CreateF(); /*Create File 创建文件*/void DeleteF(); /*Delete File 删除文件*/void ModifyFM(); /*Modify FileMode 修改*/void OpenF(); /*Open File 打开文件 */void

6、CloseF(); /*Close File 关闭文件*/void ReadF(); /*Read File 读文件 */void WriteF(); /*Write File 写文件*/操作系统课程设计报告4void QuitF(); /*Quit FileSystem 离开文件系统*/void help();其他重要函数:void clrscr() /清屏int ExistD(char *dirname) /*Whether DirName Exist,Exist-i,Not Exist-0*/ int ExistF(char *filename) /*Whether FileName E

7、xist,Exist-i,Not Exist-0*/int FindPANo() /*find out physical address num*/void SetPANo(int RorW) /*Set physical address num,0-read,1-write*/void InputPW(char *password) /*input password,use * replace*/ char *ltrim(char *str) /*remove the heading blanks.去除左空白*/char *rtrim(char *str) /*remove the trai

8、ling blanks.去除右空白 */int WriteF1() /*write file 相当于置换文件*/程序流程说明:操作系统课程设计报告5整体流程:开始Login(Name/Pw/Cpw)创建文件打开文件写文件读文件删除文件关闭文件更改目录修改文件属性清屏退出系统添加覆盖操作系统课程设计报告6各部分功能流程:Open:结束操作系统课程设计报告7N NY操作系统课程设计报告8Delete:YN开始Delete主目录是否为空?确认删除文件在用户目录下!操作系统课程设计报告9获取物理块号文件向前移动NYYN用户是否在用户目录下? 只能修改用户目录下的文件!接收删除文件名获取文件文件被打开或

9、被保护?打开或被保护状态不可删除删除文件,文件数减一删除文件成功!操作系统课程设计报告10确认该文件被打开Write:NYN结束开始Write用户是否在目录下?文件不存在!获取文件文件权限为只写或读写文件为只读和保护,不允许写!操作系统课程设计报告11覆盖0追加,1覆盖?Y10Close:获取路径追加文件写入成功!结束开始操作系统课程设计报告12NYYNClose用户是否在目录下?请确认要关闭的文件是在用户目录下!罗列已经打开的文件获取文件名获取物理地址文件是否处于关闭状态?该文件已被关闭关闭文件操作系统课程设计报告13【源程序清单】Open:void OpenF() /*Open File*

10、/printf(nnC:%s,strupr(dirname); /显示当前路径 int fcoun, i; /定义两个整形变量char fnameMAXNAME, fmode25; /定义两个字符串变量int fmod; /文件模式printf(nPlease input FileName:);文件成功关闭结束操作系统课程设计报告14gets(fname); /接收打开文件的文件名ltrim(rtrim(fname); /去除左右空白 if(ExistF(fname)ufdfilea.fname)=0) /找到文件fcoun=a;break;ifopenifcoun.ifopen=1; /将文

11、件状态置为打开状态printf(Please input OpenMode(0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect):); /打开文件模式gets(fmode); /获取模式 fmod=atoi(fmode); /将字符串转换为整型 ifopenifcoun.openmode=fmod; /将文件的模式置为 OpenModeprintf(nOpen Successed);wgetchar=1;操作系统课程设计报告15Delete:void DeleteF() /*Delete File*/printf(nnC:%s,stru

12、pr(dirname); /显示路径 char fnameMAXNAME, str50, str150; /定义三个字符串变量int i, k, j;int fpaddrno1; /记录文件物理地址块号if(strcmp(strupr(ltrim(rtrim(dirname), )=0) /判断主目录是否为空 printf(nError.请确认您要删除的是否在用户目录下!n);wgetchar=1;if(strcmp(strupr(dirname), strupr(username)!=0) /判断用户是否在用户目录下 printf(nError.您只能删除修改自己用户目录下的文件哦!n);w

13、getchar=1; else printf(nPlease input FileName:);gets(fname); /接收删除的文件名ltrim(rtrim(fname); /去除文件名的左右空白 i=ExistF(fname); /用户文件位置if(i=0)k=ExistD(username); /获取用户所在存储位置if(ifopenki.ifopen=1) /文件状态处于打开状态,不许删操作系统课程设计报告16除printf(n Error.%s 处于打开状态!请先关闭哟! n, fname);wgetchar=1; else if(ufdk-ufdfilei.fmode=3) /保护文件,不可删除printf(nError.%s处于被保护状态!请先关闭哟! n, fname);wgetchar=1; else fpaddrno1=ufdk-ufdfilei.fpaddr; /获取文件的物理地址块号fpaddrnofpaddrno1=0; /回收物理地址块号for(j=i; jufdfilej=ufdk-ufdfilej+1; /将 j+1 位置为 jstrcpy(str , c:osfilefile);itoa(fpaddrno1, str1, 10); /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号