操作系统课程设计报告_操作系统课程设计完整

其他范文 时间:2020-02-27 22:38:40 收藏本文下载本文
【www.daodoc.com - 其他范文】

操作系统课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统课程设计完整”。

操作系统课程设计报告

专 业:计算机科学与技术 学 号: 姓 名: 提交日期:

操作系统课程设计报告

【设计目的】

(1)本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。

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

(3)通过分对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】

为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令:

login 用户登录

dir 列目录

create 创建文件

delete 删除文件

open 打开文件

close 关闭文件

read 读文件

write 写文件

cd 进出目录

2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 【实验环境】 Windows xp/7 C++/VC++

【相关知识综述】

1、文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

2、位示图

位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把“0”作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。

操作系统课程设计报告

【设计思路】

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2„并以编号作为物理地址,在目录中进行登记。

【程序主要流程图】

验证是否成功?

目录

右键进行选择 操作

新建目录新建文件打开文件

结束

开始登录删除属性 2

操作系统课程设计报告

【源程序清单】

typedef struct

//文件结构体 /*the structure of OSFILE*/ { int fpaddr;

/*file physical addre*/

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

//用户文件目录结构体 user file directory /*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 paword*/ } 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;

void DeleteF()/*Delete File*/ { int i,j,k=0;char str[255],str1[255];char fname[MAXNAME];k=ExistD(dirname);//获取用户的序号

printf(“Please input filename:”);gets(fname);//获得需要打开的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

操作系统课程设计报告

}

}

void OpenF()/*Open File*/ { int i,k=0;char fname[MAXNAME];//printf(“nnC:%s>”,strupr(dirname));k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//获得需要打开的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

ifopen[k][i].ifopen=1;//打开文件

ifopen[k][i].openmode=ufd[k]->ufdfile[i].fmode;//将读写属性赋值

//test// printf(“i=%d,k=%dn”,i,k);

///test// printf(“openmode=%dn”,ifopen[k][i].openmode);

printf(“Open file succefully!n”);

break;//打开文件则跳出循环 itoa(ufd[k]->ufdfile[i].fpaddr,str,10);//itoa函数,把数字转换成字符串

strcpy(str1,“file”);strcat(str1,str);strcpy(str,“c:osfilefile”);strcat(str,str1);strcat(str,“.txt”);//str为文件的物理路径

if(remove(str)==0)

//调用remove函数删除 第k个用户的第i个文件ufd[k]->ufdfile[i]

{

fpaddrno[ufd[k]->ufdfile[i].fpaddr] = 0;//位示图置为0,表示没被占用

for(j = i;j

ufd[k]->ufdfile[j] = ufd[k]->ufdfile[j+1];

fcount[k] = fcount[k]-1;//文件数-1

printf(“Delete file succefully!n”);

//除了删除原文件,还要 删除dir中的东西

} else

printf(“Delete file fail!n”);break;}

操作系统课程设计报告

}

} }

void CloseF()/*Close File*/ {

int i,k=0;char fname[MAXNAME];

k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//获得需要关闭的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

ifopen[k][i].ifopen=0;//关闭文件

ifopen[k][i].openmode=4;//fmode改为初始值4

printf(“Close file succefully!n”);

break;

}

} }

void WriteF()/*Write File*/ { int i,k,n=0;char fname[MAXNAME];char str[255],str1[255];int flag=1;

if(strcmp(strupr(ltrim(rtrim(dirname))),“”)==0)

{

printf(“nError.Please convert to ufd dir before read.n”);

wgetchar=1;

return;} printf(“nCaution:Open file firstn”);printf(“Opened File(s)List:n”);k=ExistD(dirname);

操作系统课程设计报告

for(i=0;i

//文件属性为只写或者是读写才能write

{

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,“c:osfilefile”);

strcat(str,str1);

strcat(str,“.txt”);//物理路径

int length=0;

char c;

printf(“Please input text('#' stands for end):n”);

fp_file=fopen(str,“ab+”);//在文件末尾加 add bit

while((c=getchar())!='#')//以#为结尾

{

fputc(c,fp_file);

if(c!='n')length++;

}

//fprintf(fp_file,“n”);

操作系统课程设计报告

fclose(fp_file);

ufd[k]->ufdfile[fcount[i]-1].flength += length;//原长度加输入长度

printf(“n'%s' has been written succefully!n”,fname);

}

else

{

printf(“nError.'%s' has been opened with WRITE ONLY mode.It isn't read.n”,fname);

wgetchar=1;

}

}

else

{

printf(“nError.'%s' is in closing status.Please open it before readn”,fname);

wgetchar=1;

}

}

else

{

printf(“nError.'%s' does not exist.n”,fname);

wgetchar=1;

} } }

操作系统课程设计报告

【测试结果】

1、创建用户

2、创建文件,并且打开读取文件

操作系统课程设计报告

3、写文件

4、删除文件

操作系统课程设计报告

【设计总结】

这两周的课程设计时间非常短,从中学到了很多知识,也为我们的学习提供了良好的实践平台。首先,通过老师的细心指导和同学们的相互帮助,让我对题目【二级文件系统】有了进一步了解。接下来,主要是研究老师所给的大部分代码,参考他的基本思路,并且思考每一个结构体在代码中的具体作用。这期间和一些同学交流了各自的思路,在交流中,大家渐渐的明确了这个程序的思路、框架结构等。我们所做的主要是补充了删除文件,打开文件,关闭文件,写文件这几个部分。

代码编写完了之后,实现了题目所要求的基本功能,但是在测试的过程中,还发现了这个程序存在各种各样的bug。不断的测试修改后,得到完善。

这次课设最大的收获在于:学会交流以及相互帮助。在大家的交流沟通之中,我们解决了一个又一个难题。

在这次课设中,我还意识到,要把这门课真真正正地学好,不单单只是为了能够应付考试,平时还要多加学习,多加努力才对。

【参考文献】

【1】C语言程序设计(第三版)谭浩强

【2】计算机操作系统教程(第三版).张尧学 史美林 张高

【3】计算机操作系统,西安电子科技大学出版社,方敏主编,2004.8

操作系统课程设计报告

操 作 系 统课程设计实验报告学院:计算机科学与技术学院班级:计112学号:1113022032姓名:一、实验名称:用C++实现驱动调度算法、页面替换算法、银行家算法、处理器调度算法二、实......

操作系统课程设计报告

课程设计报告题 目: 模拟请求页式管理 课程名称: 计算机操作系统 学 院: 信息工程学院专 业: 计算机科学与技术班 级: 14计本(1) 学生姓名: * * * 学 号: 201403031** 指导教师:......

操作系统课程设计

操作系统课程设计注意事项:0.请每位同学必须按时提交课程设计报告(包括电子版和纸质版),算入期末成绩1.在三个题目中选择一个2.如果选择题目(一)进程调度算法,要求实现其中2个以上(......

操作系统课程设计

1 引言操作系统是计算机科学与技术专业的主要专业基础课和主干课。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到......

操作系统课程设计

长春理工大学 软件学院 0813111班 27号姓名:丁为胜 一. 概述1、课程设计目的及任务课程设计地点及要求每个学生一台微机,需要安装windows98或windows2000操作系统,配备VC、VB、j......

下载操作系统课程设计报告word格式文档
下载操作系统课程设计报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文