1.题目:文件系统设计。(第 1 组)
设计要求:本文件系统采用类似 DOS 系统的文件管理方式,每次调用该文件
系统时,首先申请一定的内存空间,然后对该内存空间进行分配。将申请到的
空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示
链接(FAT 表)的方式。每次调用该文件系统时自动为其分配空间,并将上次
操作的结果从硬盘上调入内存;当结束调用时则将操作的结果重新存入硬盘,
以便下次调用。(每次使用都会自动搜索文件系统,以此确定是否是第一次使
用;若是则格式化生成文件系统,否则读取已存在的文件系统。)
设计技术参数(数据结构):
#dene MaxSize 100
#dene Disk 512 //每个盘块大小为 512bit
#dene NumDisk 2048 //有 2048 个盘块,既可分配空间为 1M
/*************目录和文件的结构定义***********************/
struct DirectoryNode {
char name[9]; /*目录或文件的名字*/
int type; /*0 代表目录,1 代表普通文件*/
struct DirectoryNode *next; /*指向下一个兄弟结点的指针*/
struct DirectoryNode *preDirFile; /*指向父结点的指针*/
struct DirectoryNode *subFile; /*指向第一个子结点的指针*/
int size; /*如果是文件则表示文件的大小*/
int rst; /*起始盘块号*/
int last; /*末尾盘块号*/
int order; /*备用*/
};
//连续分配
struct FileSys {
int VacTable[NumDisk]; //空闲表,0 为空闲,1 为被用
struct DirectoryNode root; //根目录
struct DirectoryNode Directory[NumDisk];
} *lesys;
typedef struct {
struct DirectoryNode *DirFile;
char name[9];
}DataType; //包含一个指向目录的指针和名字
typedef struct { //队列结构的实现
DataType data[MaxSize];
int front,rear; //分别表示队列的头结点和尾结点
}Tp;
void InitQueue(Tp *sq) //队列初始化
int EnAddQueue(Tp *sq,DataType data) //在队列中增加元素
DataType EnDelQueue(Tp *sq) //从队列中删除一个元素
评论4