操作系统 实验四 文件系统管理 您所在的位置:网站首页 文件目录中保存的文件信息至少应包含 操作系统 实验四 文件系统管理

操作系统 实验四 文件系统管理

2024-07-13 11:58| 来源: 网络整理| 查看: 265

实验目的:

利用文件内容和命令实现树型目录结构。利用位示图表示外存的分配情况,新建文件时分配必要的空间,模拟文件分配表(FAT)记录文件在外存上的存储方式。

内容要求:

 在文件中保存目录内容,创建文件或子目录可以用命令行命令:MD、CD、RD、MK(创建文

件)、DEL(删除文件)和DIR。目录项包括文件或目录名称、类型(文件、目录或空目录项)、创建日期以及下一个目录项指针、下一级目录项指针。

① 创建初始文件,建立根目录的“.”和“..”目录项。

②实现 ‘*’,‘?’的模糊查询功能。

③ 输入命令后根据命令含义完成相应文件操作:

MD:在目录文件中创建子目录,同时搜索当前目录最后一个目录项,并保存指针信息;

CD:根据当前目录切换到指定目录;

RD:搜索所要删除的目录是否为空目录,若是则删除;

MK:在当前目录中创建文件名称;(申请空间利用位示图修改FAT)

DEL:搜索所要删除的文件是否存在,若是则删除;(恢复位示图修改FAT)

DIR:列出当前目录的所有目录项。

④ 在创建文件的时候分配空闲的磁盘空间,采用显示链接的方式,利用文件分配表(FAT)记录文件在外存上的存储情况。

⑤当删除文件时,回收外存上的空间,修改位示图和文件分配表。

实现过程:

#include #include using namespace std; struct FCB { char name[100]; int year,month,day,hour,minute,second; int length; int startaddr; int node; }fcb[1000]; struct Directory { char name[100][100]; int year,month,day,hour,minute,second; int judge[100]; /*0为文件夹,1为文件*/ int link[100]; int node; int num; }Dir[1000]; int path = 1,Time = 1,used_fcb = 0,used_dir = 1; int step = 0; char steps[100][100]; /*step保存当前工作路径深度,steps保存当前工作路径*/ int FAT[256]; /* FAT表 */ int Memory = 0; char bitmap[32]; /* 位示图 */ time_t T; /*用来存系统时间*/ struct tm *TimeP; /*用来存localtime传回的地址*/ void init(int n,int root) /*对新结点初始化*/ { strcpy(Dir[n].name[0],"."); strcpy(Dir[n].name[1],".."); Dir[n].judge[0]=Dir[n].judge[1] = 0; Dir[n].link[0] = Time; Dir[n].link[1] = root; Dir[n].node = Time ++; Dir[n].num = 2; T = time(NULL); TimeP = localtime( &T ); Dir[n].year = (TimeP->tm_year) +1900; Dir[n].month = (TimeP->tm_mon) + 1; Dir[n].day = (TimeP->tm_mday); Dir[n].hour = (TimeP->tm_hour); Dir[n].minute = (TimeP->tm_min); Dir[n].second = (TimeP->tm_sec); } bool get_bit_map(int n); void init_bit_map() /*初始化位示图*/ { int i; for(i = 0 ; i < 32 ; i ++) bitmap[i] = rand()%256; for(i = 0 ; i < 256 ; i ++) FAT[i] = -1; for(i = 0 ; i < 256 ; i++) if(get_bit_map(i) == 0) Memory ++; } void show_bit_map() /*显示位示图*/ { int i,j; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有