操作系统课程设计文件系统方案

合集下载

操作系统课程设计linux下的二级文件系统方案

操作系统课程设计linux下的二级文件系统方案

学生课程设计报告实验课名称:操作系统实验项目名称:文件系统设计专业名称:计算机科学与技术班级:-----------学号:-----------学生姓名:-----------教师姓名:-----------2014 年 6 月 30 日一、课程设计的目的..........................二、课程设计的内容及要求................... 内容.......................................... 要求..........................................三、实现原理.................................四、关键算法实现流程图 ..................... 流程图........................................ 关键算法......................................五、软件运行环境及限制 ..................... 六.结果输出及分析.......................... 七.心得体会.................................一.课程设计的目的本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。

二.课程设计的内容及要求1.实验内容通过一个简单的二级文件系统设计,加深对文件系统的内部功能以及内部实现的理解。

要求模拟采用二级目录结构的磁盘文件系统的文件操作,能实现以下几条命令,用输入命令来模拟用户程序中调用的文件操作:Login 用户登录Dir 列文件目录(列出文件名、物理地址、保护码和文件长度)Create 创建文件Delete 删除文件Open 打开文件Close 关闭文件Read 读文件Write 写文件源文件可以进行读写保护2.实验要求文件系统管理中用到的数据结构有:①首先应确定文件系统的数据结构:主目录、子目录及活动文件等。

j操作系统文件课程设计

j操作系统文件课程设计

j操作系统文件课程设计一、课程目标知识目标:1. 理解操作系统的基本概念,掌握文件系统的组成和功能。

2. 学会使用操作系统提供的文件管理命令,对文件进行基本操作。

3. 掌握文件权限和文件属性的相关知识,了解文件安全性。

技能目标:1. 能够独立使用命令行对文件进行创建、删除、复制和移动等操作。

2. 学会运用文件权限设置,保障文件安全。

3. 能够对文件系统进行简单的问题排查和故障处理。

情感态度价值观目标:1. 培养学生的团队协作精神,学会在小组讨论中分享和倾听。

2. 增强学生的信息安全和隐私保护意识,养成良好的文件管理习惯。

3. 激发学生对计算机操作系统的兴趣,提高学习积极性。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握操作系统文件管理知识的基础上,提高实际操作能力和问题解决能力。

通过课程学习,让学生能够更好地应对日常生活中的文件管理需求,同时培养良好的信息素养和团队协作精神。

后续教学设计和评估将围绕这些具体的学习成果展开。

二、教学内容1. 操作系统基本概念:介绍操作系统的定义、功能和分类,以课本第二章第一节为基础,让学生了解操作系统的基本知识。

2. 文件系统组成与功能:讲解文件系统的层次结构、存储设备和文件存储格式,对应课本第二章第二节内容。

3. 文件管理命令:教授常用的文件管理命令,如创建、删除、复制、移动、查看文件等,以课本第三章为基础,分课时逐一讲解。

4. 文件权限与属性:介绍文件权限的设置、修改和查看,以及文件属性的概念,结合课本第四章内容进行教学。

5. 文件安全与隐私保护:讲解文件权限在实际应用中的作用,如何保护文件安全,防止数据泄露,以课本第四章第三节为参考。

6. 文件系统问题排查与故障处理:教授如何识别和解决文件系统常见问题,如文件丢失、磁盘空间不足等,对应课本第五章内容。

教学内容安排和进度:第一课时:操作系统基本概念第二课时:文件系统组成与功能第三课时:文件管理命令(一)第四课时:文件管理命令(二)第五课时:文件权限与属性第六课时:文件安全与隐私保护第七课时:文件系统问题排查与故障处理教学内容确保科学性和系统性,以课本为基础,结合实际教学需求进行组织,旨在帮助学生扎实掌握操作系统文件管理的相关知识。

操作系统课程设计-文件系统

操作系统课程设计-文件系统

操作系统课程设计-文件系统一、引言文件系统是操作系统中的重要组成部分,负责对计算机中的文件进行管理和组织。

在操作系统课程设计中,文件系统的设计和实现是一个重要的任务。

本文将介绍文件系统的设计原则、功能和实现过程。

二、设计原则1. 可靠性文件系统需要确保数据的可靠性,能够有效地进行错误检测和纠正。

它应该能够处理文件的损坏、删除或丢失等情况,并能够进行数据恢复。

2. 效率文件系统需要具备高效的存取和查找功能,能够在较短的时间内完成对文件的操作。

它应该对文件进行良好的组织和管理,以提高文件的读写速度。

3. 安全性文件系统要能够保护文件的机密性和完整性,确保只有授权用户才能访问文件,并防止数据被恶意篡改或破坏。

4. 可扩展性文件系统应该能够适应不同容量和规模的存储设备,并能够随着存储需求的增长而进行扩展。

三、功能1. 存储管理文件系统需要对存储设备进行管理,包括磁盘空间的分配、回收和整理等操作,确保文件能够高效地存储和读取。

2. 目录管理文件系统需要提供目录管理功能,能够对文件进行组织和分类。

用户可以根据目录结构查找和管理文件,方便文件的查找和访问。

3. 文件操作文件系统需要支持各种文件操作,包括创建、删除、打开、关闭、读取和写入等操作。

它应该提供一组接口供用户和应用程序使用。

4. 错误处理文件系统需要对各种错误情况进行处理,包括磁盘故障、读写错误和用户操作错误等。

它应该能够识别和纠正错误,并提供相应的错误提示和恢复机制。

四、实现过程1. 文件分配文件系统需要确定如何将磁盘空间分配给文件,以实现高效的存储和检索。

常见的文件分配方式包括连续分配、链式分配和索引分配等。

2. 目录结构文件系统需要设计合适的目录结构,以方便用户查找和管理文件。

常见的目录结构包括树状目录结构、索引节点和哈希表等。

3. 文件读写文件系统需要实现高效的文件读写功能,包括将文件从磁盘读入内存和将文件从内存写入磁盘。

它应该提供缓存机制来加速读写操作。

操作系统课程设计文件管理系统

操作系统课程设计文件管理系统

操作系统课程设计文件管理系统1. 引言文件管理是操作系统中的一个重要模块,负责对计算机中的文件进行管理和组织。

在操作系统课程设计中,设计一个文件管理系统是一个很有挑战性的任务,需要考虑到文件的创建、打开、读取、写入、删除等功能,并且要确保文件的安全性和可靠性。

本文将详细介绍文件管理系统的设计与实现。

2. 需求分析为了满足用户对文件管理的需要,我们需要对文件管理系统的需求进行分析。

在这个文件管理系统中,用户应该能够执行以下操作:•文件的创建和命名•文件的打开和关闭•文件的读取和写入•文件的删除和修改•文件的搜索和查找除此之外,还要考虑到对文件权限的管理,可以设置不同用户对文件的不同访问权限,以保障文件的安全性。

3. 概要设计概要设计是对文件管理系统的整体架构和功能进行规划和设计。

文件管理系统可以采用层次结构的设计方式,分为用户界面、文件管理模块和存储管理模块。

3.1 用户界面用户界面是用户与文件管理系统进行交互的接口,可以通过命令行或者图形界面来实现。

在用户界面中,用户可以输入相关指令来执行对文件的操作,如创建文件、打开文件、读取文件等。

3.2 文件管理模块文件管理模块是文件管理系统的核心模块,负责对文件进行创建、打开、读取、写入、删除等操作。

在文件管理模块中,需要维护一个文件目录表来记录文件的基本信息,如文件名、文件大小、文件权限等。

还需要考虑到文件的分配和回收,可以使用位示图等方式进行实现。

3.3 存储管理模块存储管理模块负责对文件进行存储和管理,包括磁盘空间的分配和回收。

在存储管理模块中,可以采用文件分配表或者索引节点进行存储方式的选择。

4. 详细设计在详细设计阶段,需要对概要设计中的每个模块进行详细设计,并确定各个模块之间的接口和数据结构。

4.1 用户界面设计用户界面设计可以采用命令行方式进行实现。

用户可以通过命令输入来执行相应的文件管理操作。

可以设计一系列命令,如create用于创建文件,open用于打开文件,read用于读取文件等。

操作系统文件系统的设计与实现课程设计

操作系统文件系统的设计与实现课程设计

目录第一章设计内容 (1)1.1设计目的 (1)1.2设计要求 (1)1.3程序设计思想 (1)第二章数据结构、算法和算法流程图 (2)2.1数据结构 (2)2.2程序功能图 (2)2.3程序流程图 (3)第三章程序运行结果及分析 (6)3.1程序运行结果 (6)3.2程序分析 (7)第四章心得体会 (8)参考文献 (9)附录程序清单 (10)第一章设计内容1.1 设计目的通过设计一个小型文件系统,进一步掌握文件管理的方法和技术,使学生初步具有研究、设计、编制和调试操作系统模块的能力。

1.2 设计要求(1) 问题描述在任一OS下,建立一个大文件,把它假想成一张盘,在其中实现一个简单的小型文件系统。

(2) 基本要求该文件系统没有子目录机制,文件连续分配,不考虑换“盘”和分区。

做一个简单的操作界面,提供五条简单的命令:dir、mkfile、type、copy、delfile,分别用于显示文件目录、建立文件、显示文件内容、复制和删除一个文件。

1.3 程序设计思想阅读操作系统方面的书籍,了解操作系统的文件系统原理。

结合分析课程设计要求,确定实体以及它们之间的关系。

实体关系有三张表(磁盘空间分配表、文件表、打开文件表)、一个模拟磁盘的数组、命令服务和用户构成。

用户负责输入命令。

命令服务实现命令的解释、命令检查、命令帮助以及调用相关模块执行相应的命令功能。

建立一个系统文件(模拟盘),并对此进行盘块的划分,第一个盘块存放文件目录,第二盘块存放盘块位示图,自第三个盘块开始存放各具体文件的内容,文件目录存放文件的名字,文件的扩展名,开始盘块号,所占用的盘块数目,文件的大小;盘块位示图用来标记盘块是否被占用。

构造这些实体的关系图,数据流图、程序流程图来进行具体的设计。

第二章数据结构、算法和算法流程图2.1 数据结构数据结构说明:本程序所运用的主要有两个数据结构,分别如下:文件目录结构:struct filename { //文件目录项结构体char name[9]; //文件名char ext[4]; //扩展名int i; //文件所占用磁盘块的第一个磁盘块号int Amount; //文件所占用磁盘块的块数long int size; //文件大小};盘块结构:struct empty { //盘块结构体int map[100]; //盘块位示图int filenum; //文件数量};2.2 程序功能图图2.1文件系统提供的文件操作有建立文件(mkfile)、复制文件(copy)、显示文件所有内容(type)、删除文件(delfile)。

操作系统课程设计-文件系统的模拟设计

操作系统课程设计-文件系统的模拟设计

操作系统课程设计报告题目:文件系统的模拟设计一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

二、设计内容(1)概述为Linux系统设计一个简单的二级文件系统。

要求做到以下几点:1.可以实现下列几条命令:login 用户登录dir 列目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件cd 进出目录2.列目录时要列出文件名,物理地址,保护码和文件长度3.源文件可以进行读写保护(2)设计原理和系统总体功能框架图1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

2、文件物理结构可采用显式链接或其他方法。

3、磁盘空闲空间的管理可选择位示图或其他方法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。

4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

5、对文件或目录的操作采用windows系统的API函数来实现。

6、设计一个较实用的用户界面,方便用户使用。

要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、复制文件、移动文件、返回根目录、退出。

功能结构图如图1.0所示:(3)详细设计及少数重要编码的说明这次课程设计中,我负责4个板块,分别是显示列表函数和目录、创建函数文件创建函数、打开文件函数和关闭文件系统函数。

①、显示列表函数和目录流程图如图1.1所示②、文件创建函数算法:查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。

申请inode空间(ialloc函数),申请硬盘block空间(balloc函数),申请失败则结束。

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

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

操作系统课程设计报告专业:计算机信息处理学号:08201328姓名:杨馨雨提交日期:2011-7-14【设计目的】1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。

2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。

3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力【设计内容】1、delete 删除文件2、open 打开文件3、close 关闭文件4、write 写文件【实验环境】Windows7系统Visual studio 2010【相关知识综述】本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。

另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。

主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。

如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。

【设计思路】1 主要数据结构#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/#define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/typedef struct/*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 fname[MAXNAME]; /*file name*/} OSFILE;typedef struct/*the structure of OSUFD定义用户文件目录*/{char ufdname[MAXNAME]; /*ufd name*/OSFILE ufdfile[MAXCHILD]; /*ufd own file*/}OSUFD;typedef struct/*the structure of OSUFD'LOGIN定义登陆*/{char ufdname[MAXNAME]; /*ufd name*/char ufdpword[8]; /*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 and write,3-initial*/}OSUFD_OPENMODE;2 主要函数void LoginF(); /*LOGIN FileSystem*/void DirF(); /*Dir FileSystem*/void CreateF(); /*Create File*/void DeleteF(); /*Delete File*/void ModifyFM(); /*Modify FileMode*/void OpenF(); /*Open File*/void CloseF(); /*Close File*/void ReadF(); /*Read File*/void WriteF(); /*Write File*/void QuitF(); /*Quit FileSystem*/void CdF(); /*Change Dir*/void help();【主要程序段】1 Delete函数void DeleteF() /*Delete File*/{ char fname[MAXNAME],str[50],str1[50];int i,k,j;int fpaddrno1;if (strcmp(strupr(ltrim(rtrim(dirname))),"")==0) /*无法删除主目录的文件*/{printf("\nError.Please convert to ufd dir before delete.\n");wgetchar=1;}if (strcmp(strupr(dirname),strupr(username))!=0) /*无法删除非自己目录的文件*/ {printf("\nError.You can only modify filemode in yourself dir.\n");wgetchar=1;}else{printf("\nPlease input FileName:");gets(fname);//从键盘获取所要删除的文件名ltrim(rtrim(fname));i=ExistF(fname);//获取文件编号if (i>=0){k=ExistD(username);if(ifopen[k][i].ifopen==1)/*文件打开时无法删除*/{printf("\nError.\'%s\' is in open status. Close it before delete.\n",fname);wgetchar=1;}else{if(ufd[k]->ufdfile[i].fmode==3)/*被保护的文件无法删除*/{printf("\nError.\'%s\' is in protect status. Close it before delete.\n",fname);wgetchar=1;}else{fpaddrno1=ufd[k]->ufdfile[i].fpaddr;//获取文件对应的物理文件名fpaddrno[fpaddrno1]=0;//回收盘块for(j=i;j<fcount[k];j++){ufd[k]->ufdfile[j]=ufd[k]->ufdfile[j+1];//从被删除的文件号开始,数组值全部前移一个}strcpy(str,"d:\\osfile\\file\\file");itoa(fpaddrno1,str1,10);//整数转化成字符串strcat(str,str1);strcat(str,".txt");remove(str);//删除物理文件fcount[k]--;//k用户文件数量少1printf("\n \'%s\'is deleted successfully.\n",fname);wgetchar=1;}}}else//所要删除的文件不存在{printf("\nError. \'%s\' dose not exist.\n",fname);wgetchar=1;}}}2 Open函数void OpenF() /*Open File*/{char fname[MAXNAME];int i,k,j;if (strcmp(strupr(dirname),strupr(username))!=0) /*在自己的目录里才能打开*/ {printf("\nError.You can only open in yourself dir.\n");wgetchar=1;}else{k=ExistD(username);for(j=0;j<fcount[k];j++){printf("%15s",ufd[k]->ufdfile[j].fname);}printf("\nPlease input FileName:");gets(fname);//获取所要打开的文件名ltrim(rtrim(fname));i=ExistF(fname);//获取目录编号if (i>=0){if(ifopen[k][i].ifopen==1)//输入的文件是打开的{printf("\nError.\'%s\' is in open status.\n",fname);wgetchar=1;}else{ifopen[k][i].ifopen=1;//修改为打开的if(ufd[k]->ufdfile[i].fmode==0)/*根据文件的模式设置打开模式*/{ ifopen[k][i].openmode=0;}else if(ufd[k]->ufdfile[i].fmode==1){ifopen[k][i].openmode=1;}else if(ufd[k]->ufdfile[i].fmode==2){ifopen[k][i].openmode=2;}else ifopen[k][i].openmode=3;printf("\n\'%s\' is opened successfully\n",fname);wgetchar=1;}}else//文件不存在{printf("\nError. \'%s\' dose not exist.\n",fname);wgetchar=1;}}}3 Close函数void CloseF() /*Close File*/{char fname[MAXNAME];int i,k,j;if (strcmp(strupr(dirname),strupr(username))!=0) /*不在自己的目录里没法进行*/ {printf("\nError.You can only close file in yourself dir.\n");wgetchar=1;}else{k=ExistD(username);for(j=0;j<fcount[k];j++)/*列出已经打开的文件*/{if(ifopen[k][j].ifopen==1)//如果文件是打开的printf("%15s",ufd[k]->ufdfile[j].fname);}printf("\nPlease input FileName:");gets(fname);//从键盘上读入所要关闭的文件ltrim(rtrim(fname));i=ExistF(fname);//获取文件编号if (i>=0){ifopen[k][i].ifopen=0;/*关闭文件*/printf("\n \'%s\' closed successfully\n",fname);wgetchar=1;}else//所要关闭的文件不存在{printf("\nError. \'%s\' dose not exist.\n",fname);wgetchar=1;}}}4 Write函数void WriteF() /*Write File*/{int i,k,n=0;int length;char fname[MAXNAME],values[1000];char str[255],str1[255],c;if (strcmp(strupr(ltrim(rtrim(dirname))),"")==0) //只能写自己目录下的文件{printf("\nError.Please convert to ufd dir before write.\n");wgetchar=1;return;}printf("\nCaution:Open file first\n");printf("Opened File(s) List:\n");k=ExistD(dirname);//获取目录编号for(i=0;i<fcount[k];i++)/*列出可以写的文件*/{if(ifopen[k][i].ifopen==1)//如果文件是打开的{printf("%15s",ufd[k]->ufdfile[i].fname);n++;}if((n%4==0)&&(n!=0)) printf("\n");}printf("\n%d files openned.\n",n);if (n==0) wgetchar=1; //没有打开的文件if(n!=0){printf("\nPlease input FileName:");gets(fname);//从键盘获取所要写的文件ltrim(rtrim(fname));i=ExistF(fname);//获取文件编号if(i>=0){if(ifopen[k][i].ifopen==1)//如果文件是打开的{if((ifopen[k][i].openmode==1) ||(ifopen[k][i].openmode==2))//文件是只写,或者是可读可写的{itoa(ufd[k]->ufdfile[i].fpaddr,str,10);//获取文件对应的物理地址strcpy(str1,"file");strcat(str1,str);strcpy(str,"d:\\osfile\\file\\");strcat(str,str1);strcat(str,".txt");fp_file=fopen(str,"ab");//以二进制只写的形式打开,每次将内容添加到文件末尾接着上一次内容length=WriteF1();ufd[k]->ufdfile[i].flength=ufd[k]->ufdfile[i].flength+length;//计算总长度printf("\n\n%d Length.\n",ufd[k]->ufdfile[i].flength);printf("\n\nYou have write file successfully!!");fclose(fp_file);wgetchar=0;}else if(ifopen[k][i].openmode==0)//文件是只读的{printf("\nError.\'%s\' has been opened with READ ONL Y mode. It isn\'t write.\n",fname);wgetchar=1;}else//文件是保护的{printf("\nError.\'%s\' has been opened with PROTECT mode. It isn\'t write.\n",fname);wgetchar=1;}}else //文件是关闭的{printf("\nError.\'%s\' is in closing status. Please open it before write\n",fname);wgetchar=1;}}else //所指定的文件不存在{printf("\nError. \'%s\' does not exist.\n",fname);wgetchar=1;}}}【程序流程设计】1总的功能结构图:(1)打开命令的程序流程图:(2)关闭命令的程序流程图:(3)写命令的程序流程图:(4)删除命令的程序流程图:【测试结果】1 删除文件2 打开的文件不能删除3 打开文件,其中已经打开的文件不能再次打开3 关闭文件4 写文件,其中只有打开了文件才能写入5 写文件6 只读文件和保护文件不能写入7 其他函数【参考文献】计算机操作系统,西安电子科技大学出版社,方敏主编,2004.8 部分函数含义引用于【源程序清单】#include"stdio.h"#include"string.h"#include"conio.h"#include"stdlib.h"#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/#define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/typedef struct/*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 fname[MAXNAME]; /*file name*/} OSFILE;typedef struct/*the structure of OSUFD定义用户文件目录*/{char ufdname[MAXNAME]; /*ufd name*/OSFILE ufdfile[MAXCHILD]; /*ufd own file*/}OSUFD;typedef struct/*the structure of OSUFD'LOGIN定义登陆*/{char ufdname[MAXNAME]; /*ufd name*/char ufdpword[8]; /*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 and write,3-protect*/}OSUFD_OPENMODE;void LoginF(); /*LOGIN FileSystem*/void DirF(); /*Dir FileSystem*/void CreateF(); /*Create File*/void DeleteF(); /*Delete File*/void ModifyFM(); /*Modify FileMode*/void OpenF(); /*Open File*/void CloseF(); /*Close File*/void ReadF(); /*Read File*/void WriteF(); /*Write File*/void QuitF(); /*Quit FileSystem*/void CdF(); /*Change Dir*/void help();char *rtrim(char *str); /*remove the trailing blanks.*/char *ltrim(char *str); /*remove the heading blanks.*/void InputPW(char *password); /*input password,use '*' replace*/int ExistD(char *dirname); /*Whether DirName Exist,Exist-i,Not Exist-0*/int WriteF1(); /*write file*/int ExistF(char *filename); /*Whether FileName Exist,Exist-i,Not Exist-0*/void SetPANo(int RorW); /*Set physical address num*/int FindPANo(); /*find out physical address num*/int ucount=0; /*the count of mfd's ufds用户数*/int fcount[MAXCHILD]; /*the count of ufd's files子文件数*/int loginsuc=0; /*whether login successfully登陆成功*/char username[MAXNAME]; /*record login user's name22用户名*/char dirname[MAXNAME];/*record current directory使用的用户目录*/int fpaddrno[MAX]; /*record file physical address num物?理地址号,存放自己所创建的所有文件的地址*/int wgetchar; /*whether getchar()*/OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/OSUFD_LOGIN ufd_lp;//用户登录结构体类型的变量OSUFD_OPENMODE ifopen[MAXCHILD][MAXCHILD]; /*record file open/close*/FILE *fp_mfd,*fp_ufd,*fp_file_p,*fp_file;//FILE 是变量类型,实际上是语言定义的标准数据结构,用于文件void clrscr()/*清屏*/{system("cls");}void main(){int i,choice1;char choice[50]; /*choiceoperation:dir,create,delete,open,delete,modify,read,write*/int choiceend=1; /*whether choice end*///fopen标准函数,打开文件msd.txt,打开一个二进制文件,只允许读数据,送返指针,指向FILE 类型对象。

操作系统-文件系统课程设计报告

操作系统-文件系统课程设计报告

《操作系统》课程设计题目名称多用户多级目录共享文件系统的实现_学生学院计算机学院专业班级 10级计算机科学与技术7班学号学生姓名指导教师刘老师20年月日一、可行性分析随着信息化进程,文件管理越来越受到重视,并且逐渐成为国内外业界研究的热点。

在现有的操作系统中,几乎都是通过文件系统来组织和管理计算机中所存储的程序和数据等大量的文件。

在现代OS中,几乎毫毛例外地是通过文件系统来组织和管理在计算机中存储和大量程序和数据的;或者说,文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。

而文件则是指具有文件名的若干相关元素的集合。

元素通常是记录,而记录又是一组有意义的数据项的集合。

通过分析,可知文件系统对大多数文件的操作,器过程大致都是这样两步:第一步是通过检索文件目录来找到指定文件的属性及其在外存上的位置;第二步是对文件实施相应的操作,如读文件或写文件。

为了便于管理和控制文件,根据系统管理员或用户所规定的存取控制属性,将文件分为只读文件、读写文件和只执行文件三类。

而文件系统的模型主要分为三个层次,分别是对象及其属性、对对象的操纵和管理的软件集合、文件系统接口,其最底层的是对象及其属性;中间层对对象进行操纵和管理的软件集合;最高层是文件系统提供给用户的接口。

用户通过文件系统所提供的系统调用实施对文件的操作,如创建文件、删除无文件、读文件、写文件等,为了方便用户使用文件而提供了更多对文件的操作,如打开和关闭文件。

软硬件可行性分析:本模拟系统的实现需要一台PC机作为硬件设备,此外,软件开发环境包括:Win7、VC++6.0,.因此,该模拟系统具备实现条件,综合分析,系统在成本、技术、操作上,都是可行的。

技术可行性分析:在当前的技术条件下,该系统的各个功能模块在理论上而言都是能实现的;根据自己掌握的技术情况,在规定的期限内,系统的开发设计能完成。

二、需求分析1、功能需求分析功能划分:本模拟系统主要针对文件的管理和操作名主要有:创建用户、文件、文件夹,读文件,写文件,执行文件,关闭文件,删除用户、文件夹、文件的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南工业大学
课程设计
资料袋
计算机与通信学院学院(系、部) 2013 ~ 2014 学年第 1 学期课程名称计算机操作系统指导教师左新娥职称讲师
学生姓名专业班级学号
题目文件系统演示
成绩起止日期 2013 年 12 月 9 日~ 2013 年 12 月 15 日
目录清单
课程设计任务书
2013 —2014学年第 1 学期
学院(系、部)计算机与通信学院专业班级课程名称:计算机操作系统学生姓名:
设计题目:指导教师:左新娥
完成期限:自 2013 年 12 月 9 日至 2013 年 12 月 15 日共 1 周
指导教师(签字):年月日
系(教研室)主任(签字):年月日

程设计说明书
课程名称:计算机操作系统
设计题目:文件系统演示
专业:网络工程班级:
学生姓名: 学号:
指导教师:左新娥
2013 年 4 月日
目录
一课程设计简介 (5)
1.1 课程设计的目的 (5)
1.2 课程设计内容 (5)
二课程设计实现过程 (6)
2.1程序功能需求分析 (6)
2.2程序功能模块分析 (6)
2.2.1 format 格式化 (6)
2.2.2 install 安装 (6)
2.2.3 login 登陆 (7)
2.2.4 create 创建文本文件 (7)
2.2.5 cd –进入子目录或者上级目录 (7)
2.2.6 del 删除文件或目录 (8)
2.2.7 help 显示帮助 (8)
2.2.8 exit 退出系统 (8)
2.3程序实现过程 (8)
2.3.1 相关结构体描述 (8)
2.3.2 相关全局变量 (11)
2.3.2 主要功能函数代码 (13)
2.4程序测试截图 (20)
3设计总结 (22)
参考文献 (23)
一课程设计简介
1.1 课程设计的目的
课程设计目的使同学们熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。

通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。

同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。

1.2 课程设计内容
课程设计内容设计一个简单的多用户文件系统。


①在系统中用一个文件来模拟一个磁盘;
②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。

③实现这个文件系统。

④能实际演示这个文件系统。

基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。

二课程设计实现过程
在本段落中,将从程序功能需求分析,程序流程设计,程序实现来完成本章的描述。

2.1程序功能需求分析
本次课程设计内容是设计一个简单的多用户文件系统,对软件的功能需求如下:
在linux系统中用一个文件来模拟一个磁盘;
可以对这个模拟磁盘进行的操作为:Create、delete、open、close、read、write等和部分文件属性的功能。

使用编程语言实现这个文件管理系统,能实际演示这个文件系统。

基本上是进入一个程序主界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。

程序运行不需安装,避免写系统和注册表;
2.2程序功能模块分析
2.2.1 format 格式化
只写打开模拟文件,初始化超级快,初始化dinode位图 block位图,初始化主目录,初始化etc目录,初始化管理员admin 目录,初始化用户xiao 目录,初始化用户passwd文件,写入模拟硬盘文件。

2.2.2 install 安装
读写打开模拟文件,读取dinode位图 block位图,读取主目录,读取etc 目录,读取管理员admin 目录,读取用户xiao 目录,读取用户passwd文件。

2.2.3 login 登陆
用户输入用户名和密码,在passwd文件中查找是否有此用户,核对密码。

正确则登陆成功,当前目录设定到当前用户文件夹下。

2.2.4 create 创建文本文件
查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。

申请inode空间(ialloc函数),申请硬盘block空间(balloc 函数),申请失败则结束。

将文件内容写入inode空间和block空间。

修改当前目录的结构,修改超级快,修改inode位图,block位图,写入模拟硬盘。

2.2.5 cd –进入子目录或者上级目录
查找当前目录是否有该子目录,没有则退出,调用access()判断当前用户是否有权限,无则退出,有则读取该子目录的inode,将当前目录指向该目录。

2.2.6 del 删除文件或目录
查找当前目录是否有该文件名,没有则退出,有则调用access()判断是否有权限,有则判断是否为系统文件,是则无法删除,不是则判断是否是文件,是文件则直接删除,不是则判断是否文件夹,是文件夹则判断该文件夹下是否有文件,有文件则无法删除。

提示用户是否删除,确认则删除文件,修改当前文件夹inode,block结构,修改该文件占有的inode和block位图为0,修改超级块,写入模拟硬盘。

2.2.7 help 显示帮助
在命令模式在输入help可以显示本程序所有的的命令和对应的解释,在输入help时候,列出系统中可以用的函数对应的命令名称。

2.2.8 exit 退出系统
在文件模拟系统中输入exit可以退出程序,当从键盘处接受到字符时候,判断为exit时候,则推出程序,并且关闭文件流。

2.3程序实现过程
2.3.1 相关结构体描述
一.Inode节点结构
二.Block组描述
三.超级块描述部分
四.用户账号密码
五.磁盘中i结点结构
2.3.2 相关全局变量
2.3.2 主要功能函数代码
一. Format函数实现代码
二.Login 函数实现代码
三.显示当前目录函数实现代码
2.4程序测试截图一.进入界面并登录进入图
二.dir显示目录图
三.Create 创建文件图
四.edit 编辑文件图
五.Rename重命名文件图
六.Del删除文件图
七.Exit退出模拟系统图
3设计总结
操作系统课程设计是本课程重要的实践教学环节。

课程设计的目的,一方面使同学们更透彻地理解操作系统的基本概念和原理,使之由抽象到具体;另一方面,通过课程设计加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。

与本课程的实验教学相比,课程设计独立设课,具有更多的学时,给学生更多自行设计、自主实验的机会,充分放手让学生真正培养学生的实践动手能力,全面提高学生的综合素质。

在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不过设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。

同时,在老师的身上我们学得到很多实用的知识,再次我表示感谢!同时,对给过我们帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
[1] 袁庆龙,候文义.Ni-P合金镀层组织形貌及显微硬度研究[J].太原理工
大学学报,2001,32(1):51-53.
[2] 刘国钧,王连成.图书馆史研究[M].北京:高等教育出版社,1979:15-18,
31.
[3] 孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报
研究会.科技编辑学论文集(2).北京:北京师范大学出版社,1998:10-22.。

相关文档
最新文档