资源简介
操作系统课程设计报告-单用户多级文件系统设计
代码片段和文件信息
#include
#include
#include
#define DIR_LENGTH 1024 //路径最长可达1024字节
#define MAX_WRITE 1024*128 //写入文字可达128k字节
#define DISKSIZE 1024 //磁盘快的大小 1K
#define MSD 5 //最大子目录数 5 (类似五叉树)
#define DISK_NUM 1024*1024/DISKSIZE //盘块数目
#define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT表大小
#define MOFN 5 //最大文件打开数 5 (即除根以外最大深度为5)
#define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 9
#define ROOT_DISK_SIZE sizeof(struct direct)//根目录大小 196
//目录结构
struct direct
//文件控制块信息
{
struct FCB
{
char name[9]; //文件/目录名 8位
char property; //属性 1位目录 0位普通文件
int size; //文件/目录字节数(原注释位盘块数)
int firstdisk; //文件/目录 起始盘块号
int next; //子目录起始盘块号
int sign; //1是根目录 0不是根目录
}directitem[MSD+2];
};
//FAT表结构
struct fatitem
{
int item; //存放文件下一个磁盘的指针
char em_disk; //磁盘块是否空闲标志位 0表示空闲
};
//文件打开表结构
struct opentable
{
struct openttableitem
{
char name[9]; //文件名
int firstdisk; //起始盘块号
int size; //文件的大小
}openitem[MOFN];
int cur_size; //当前打文件的数目
};
struct fatitem *fat; //FAT表
struct direct *root; //根目录
struct direct *cur_dir; //当前目录
struct opentable u_opentable; //文件打开表
int fd=-1; //文件打开表的序号
char *bufferdir; //记录当前路径的名称
char *fdisk; //虚拟磁盘起始地址
void initsystem();
void format();
void enter();
void exit();
int create(char *name);
int open(char *name);
int close(char *name);
int write(int fdchar *bufint len);
int read(int fdchar *buf);
int del(char *name);
int mkdir(char *name);
int rmdir(char *name);
void dir();
int cd(char *name);
void print();
void showpath();
//初始化文件系统
void initsystem()
{
fdisk = (char *)malloc(1024*1024*sizeof(char)); //申请 1M空间
format();
free(fdisk);
}
//格式化
void format()
{
int i;
FILE *fp;
fat = (struct fatitem *)(fdisk+DISKSIZE); //计算FAT表地址
//初始化FAT表
fat[0].item=-1; //引导块
fat[0].em_disk=‘1‘;
for(i=1;i {
fat[i].item=i+1;
fat[i].em_disk=‘1‘;
}
fat[ROOT_DISK_NO-1].item=-1;
fat[ROOT_DISK_NO-1].em_disk=‘1‘;
fat[ROOT_DISK_NO].item=-1; //存放根目录的磁盘块号
fat[ROOT_DISK_NO].em_disk=‘1‘;
for(i=ROOT_DISK_NO+1;i {
fat[i].item = -1;
fat[i].em_disk = ‘0‘;
}
root = (struct direct *)(fdisk+DISKSIZE+FATSIZE); //根目录的地址
//初始化目录
//指向当前目录的目录项
root->directitem[0].sign = 1;
root->directitem[0].firstdisk = ROOT_DISK_NO;
strcpy(root->directitem[0].name“.“);
root->directitem[0].next = root->directitem[0].firstdisk;
root->directitem[0].property = ‘1‘;
root->directitem[0].size = ROOT_DISK_SIZE;
//指向上一级目录的目录项
root->directitem[1].sign = 1;
root->directitem[1].firstdisk = ROOT_DISK_NO;
strcpy(root->directitem[1].name“..“);
root->directitem[1].next = root->directitem[0].firstdisk;
root->directitem[1].property = ‘1‘;
root->directitem[1].size = ROOT_DISK_SIZE;
for(i=2;i {
root->directitem[i].sign = 0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1048576 2011-03-23 15:37 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\disk.dat
文件 188513 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\FileSystem.exe
文件 201604 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\FileSystem.ilk
文件 47450 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\FileSystem.obj
文件 222688 2011-03-09 16:09 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\FileSystem.pch
文件 484352 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\FileSystem.pdb
文件 33792 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\vc60.idb
文件 53248 2011-03-23 15:36 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug\vc60.pdb
文件 1048576 2011-03-21 20:35 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\disk.dat
文件 25124 2011-04-19 12:42 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.cpp
文件 3449 2011-03-09 16:10 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.dsp
文件 545 2011-03-09 16:10 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.dsw
文件 50176 2011-04-19 12:56 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.ncb
文件 53760 2011-04-19 12:56 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.opt
文件 256 2011-04-19 12:45 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\FileSystem.plg
文件 1048576 2011-04-19 16:46 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release\disk.dat
文件 57344 2011-04-19 12:42 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release\FileSystem.exe
文件 31919 2011-04-19 12:42 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release\FileSystem.obj
文件 223000 2011-04-19 12:42 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release\FileSystem.pch
文件 33792 2011-04-19 12:45 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release\vc60.idb
文件 150528 2011-03-21 20:54 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\单用户文件系统.doc
文件 1232896 2012-05-17 11:11 操作系统课程设计报告-单用户多级文件系统设计\操作系统课程设计演示文稿.ppt
文件 293888 2012-05-17 11:10 操作系统课程设计报告-单用户多级文件系统设计\课程设计总结.doc
目录 0 2012-05-17 11:10 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Debug
目录 0 2012-05-17 11:10 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统\Release
目录 0 2012-05-17 11:10 操作系统课程设计报告-单用户多级文件系统设计\单用户文件系统
目录 0 2012-05-17 11:11 操作系统课程设计报告-单用户多级文件系统设计
----------- --------- ---------- ----- ----
6534052 27
............此处省略0个文件信息
评论
共有 条评论