模拟实现文件系统,操作系统课程设计要点

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

某某大学

课程设计报告课程名称:操作系统课程设计

设计题目:模拟实现文件系统

系别:计算机系

专业:计算机科学与技术

组别:

学生姓名: 学号:

起止日期:

指导教师:

目录

目录 0

第一章需求分析 (1)

1.1 课程设计题目 (1)

1.2 课程任务及要求 (1)

1.3课程设计思想: (1)

1.4软硬件运行环境及开发工具: (2)

第二章概要设计 (3)

2.1流程图 (3)

2.2用到的原理 (3)

第三章详细设计 (4)

第四章调试与操作说明 (9)

4.1用户登陆界面 (9)

4.2创建文件界面 (9)

4.3删除文件界面 (10)

4.4退出界面 (10)

第五章课程设计总结与体会 (10)

第六章致谢 (11)

第七章参考文献 (11)

第一章需求分析

1.1 课程设计题目

课程设计题目:模拟实现文件系统

1.2 课程任务及要求

要求:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能

给出实现方案(包括数据结构和模块说明等)

画出程序的基本结构框图和流程图

分析说明每一部分程序的设计思路

实现源代码

按期提交完整的程序代码和可执行程序

根据要求完成课程设计报告

总结

1.3课程设计思想:

模拟实现文件系统问题是一个经典的关于文件的处理问题,包括:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能。设计思想如下:1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

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

3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。

5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录)

(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建: create

(4)文件的打开:open

(5)文件的读:read

(6)文件的写:write

(7)文件关闭:close

(8)删除文件:delete

(9)列出文件目录:dir

(10)退出:logout

1.4软硬件运行环境及开发工具:

a)程序设计语言:C++

b)计算机及操作系统:PC机,WindowsXP

c)开发平台:Microsoft Visual C++ 6.0

d)运行平台:PC机,WindowsXP

第二章概要设计

2.1流程图

模拟实现文件系统的主要流程图如下:

2.2用到的原理

1.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。

2.系统使用create,open,read,write,close,delete,dir和exit来

创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。

3.程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。

4.为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作

第三章详细设计

本次课程设计采用的是c++语言编写,部分主要程序代码如下:

#include "stdio.h"

#include

#include

#include

#define getpch(type) (type*)malloc(sizeof(type))

#define NULL 0

#define UserNumber 10

#define UserFNumber 10

#define UserOFNumber 5

struct fname{

char fname[1];

int flag;

}

fnameA[26]={'a',0,'b',0,'c',0,'d',0,'e',0,'f',0,'g',0,'h',0,'i',0,'j',0,'k',0,'l',0,

'm',0,'n',0,'o',0,'p',0,'q',0,'r',0,'s',0,'t',0,'u',0,'v',0,'w',0,'x',0,'y',0,'z',0};

struct afd {

char opname[10];/* 打开文件名*/

int flag;

char opfprotect[3];/* 打开保护码*/

int rwpoint;/* 读写指针*/

} AFD[UserOFNumber];/* 用户打开的文件*/

typedef struct {

char fname[10];/* 用户文件名*/

int flag;/* 文件存在标志*/

int fprotect[3];/* 文件保护码r\w\t */

int flength;

} ufd,UF[UserFNumber];/* 用户文件*/

struct mdf {

char uname[10];/* 用户名*/

UF Udir;/* 用户文件目录*/

} UFD[UserNumber];/* 用户*/

void intFSystem(){

int i,j,k,l;

strcpy(UFD[0].uname,"a");

strcpy(UFD[1].uname,"b");

strcpy(UFD[2].uname,"c");

strcpy(UFD[3].uname,"d");

strcpy(UFD[4].uname,"e");

strcpy(UFD[5].uname,"f");

strcpy(UFD[6].uname,"g");

strcpy(UFD[7].uname,"h");

strcpy(UFD[8].uname,"i");

strcpy(UFD[9].uname,"j");

for(i=0;i<10;i++) {

相关文档
最新文档