文件系统课程设计报告

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

操作系统课程设计报告

题目:文件系统

专业:软件工程

院系:信息管理学院

年级:大三软件Q1141

学号: ******** *名:**

指导教师:***

职称:副教授

湖北经济学院教务处制

目录

操作系统课程设计报告

一实验内容 (2)

二设计的基本概念和原理 (2)

三总体设计 (2)

2-1 文件的组织结

构.............................................................

(2)

2-2 磁盘空间的管

理.............................................................

(2)

2-3 目录结

构 (3)

2-4文件操

作 (4)

四详细设计 (4)

4-1 建立文件(create_file)流程

图 (4)

4-2 打开文件(open_file)流程

图 (6)

4-3读文件(read_file)流程

图 (7)

4-4 写文件(write_file)流程

图 (8)

4-5 关闭文件(close_file)流程

图 (9)

4-6 删除文件(delete_file)流程

图 (10)

4-7 显示文件内容(typefile)流程

图 (11)

4-8 建立目录(md)流程

图 (12)

4-9显示目录内容流程

图 (13)

五详细代码 (14)

六运行结果截图 (40)

七总结 (44)

八参考文献 (45)

一、实验内容

要求设计一个简单的文件系统,用文件模拟磁盘,实现以下功能:

(1)支持多级目录结构;

(2)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件、关闭文件、改变文件属性。

(3)编写主函数对所有操作进行测试

二、设计的基本概念和原理

为了正确地实现文件的存取,文件系统设计了一组与存取文件有关的功能模块,用户可以用“访问指令”调用这些功能模块,以实现文件的存取要求。我们把文件系统设计的这一组功能模块称为“文件操作“,实验就是要模拟实现一些文件操作。文件操作不是独立的,它和文件系统的其他部分密切相关,若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。因此,这个实习虽然是文件操作的模拟实现,但还是必须模拟一部分文件的组织结构、目录结构和磁盘空

四、详细设计

(1)建立文件:create_file(文件名,文件属性)

(4)写文件write_file(文件名,缓冲,写长度)

(8)目录操作命令:建立目录(md)

五、详细代码

int sopen(char *name) //在已打开的文件表中查找文件name

{

int i;

i = 0;

while(i

{

i++;

}

if(i>=openfile.length)

{

return -1;

}

return i;

}

void dopen(char *name) //在已打开文件表中删除文件name

{

int i;

i = sopen(name);

if(i==-1)

{

printf("文件未打开\n");

}

else

{

copy(&openfile.file[i], &openfile.file[openfile.length - 1]);

openfile.length--;

}

}

int iopen(ofile *x)//向已打开文件列表中插入文件x->name

{

int i;

i = sopen(x->name);

if(i!=-1)

{

printf("文件已经打开\n");

return false;

}

else if(openfile.length == n)

{

printf("已打开文件表已满");

return false;

}

else

{

copy(&openfile.file[openfile.length], x);

openfile.length ++;

return true;

}

}

int allocate()//分配一个磁盘块,返回块号

{

int i;

fseek(fc, 0, SEEK_SET);//将模拟磁盘的文件指针移至模拟磁盘FAT表

fread(buffer1,64L, 1, fc);

for(i = 3; i < 63; i++)

{

if(buffer1[i] == 0)//FAT中的第i项为0,分配第i块磁盘块,修改FAT 表,并且写回磁盘

{

buffer1[i] = 255;

fseek(fc, 0, SEEK_SET);

fwrite(buffer1, 64L, 1, fc);

return i; //返回磁盘号

}

}

fread(buffer1, 64L, 1, fc);//将FAT表中第二个磁盘块读入模拟缓冲buffer1

for(i = 0; i < 63; i++)

相关文档
最新文档