资源简介
华中科技大学操作系统课程设计专用,内含5个部分:
1.1 利用系统调用实现文件拷贝(含代码和makefile)
1.2 多进程编程,实现三个子进程窗口(含代码和makefile)
2 自己的系统调用,只有系统调用实现的代码,系统调用需要自己编译内核
3 字符设备驱动的编写(含代码和makefile)
4 GTK编写系统监视器,可以监测系统很多方面(含代码和makefile)
5 虚拟文件系统(实现的比较简单)(含代码和makefile)
说明:本程序是简单虚拟文件系统(Windows下也可运行)特点如下:
1.支持10M文件
2.支持多级目录,目录层次无限制(目录和文件总数量好像在1000左右,可自己调整代码)
3.支持建立,写入,读取,复制,删除文件
4.支持格式化文件系统(磁盘),备份还原文件系统
实现的比较简单,总的代码量在1100行左右
代码片段和文件信息
#include
#include
#include
#include
#define BLOCKSIZE 1024
#define SIZE 1024 * 1024//1 M
#define END 65535 //EOF
#define FREE 48
#define USED 49
#define FCBBLOCKNUM 100
#define MAXLENGTH 10
#define MAXOPEN 5
#define COMMANDNUM 14
#define ERROR_DISK_NO_SPACE 99
#define ERROR_MKDIR_IS_FULL 100
#define ERROR_MKDIR_CONFLICT_NAME 101
#define ERROR_MKDIR_USELESS_DIRNAME 102
#define ERROR_MKFILE_IS_FULL 103
#define ERROR_CD_PATH_NOT_FOUND 104
#define ERROR_RM_FILE_NOT_FOUND 105
#define ERROR_RM_DIR_IS_NOT_EMPTY 106
//#define ERROR_WRITE_FILE_NOT_FOUND 107
#define ERROR_READ_FILE_NOT_FOUND 108
#define ERROR_READ_FILE_IS_EMPTY 109
#define ERROR_WRITE_FILE_NOT_FOUND 110
#define ERROR_OPEN_FILE_NOT_FOUND 111
#define ERROR_OPEN_FILE_IS_OPENED 112
#define ERROR_OPEN_OPENTABLE_IS_FULL 113
#define ERROR_CLOSE_FILE_NOT_FOUND 114
#define ERROR_CLOSE_FILE_NOT_OPENED 115
#define ERROR_CP_SRCFILE_NOT_FOUND 116
#define ERROR_CP_DSTFILE_IS_EXIST 117
#define ERROR_CP_IS_FULL 118
typedef struct _FCB{
int id;
//int pid;//each dir has a parent id
char filename[8];
char isdir;//1:yes 2 no
struct tm data_time;
unsigned int firstblock;
unsigned int size;
int record[10]; //10 file in one dir most or 10 blocks in one file
int length;
}FCB;
typedef struct _OPENTABLE{
char name[20];
struct tm data_time;
int size;
}OPENTABLE;
typedef struct _FILEOPEN{
OPENTABLE opened[MAXOPEN];
int opennum;
}FILEOPEN;
#define MAXFILENUM FCBBLOCKNUM * BLOCKSIZE * sizeof(char) / sizeof(FCB)
FCB *root;
FCB *cur_dir;
FILEOPEN fileopened;
FILE *fp;
int id = 1;
int fd = -1;
char currentdir[80];
int currentid = 0;
char *fdisk;
time_t timep;
int GetCommandType(char *command);
void LoadSys();
void InitSystem();
//void mShowMenu();
void mFormat();
int mMkdir();
void mLs(void);
int mCd(void);
int mMkfile(void);
int mOpen(void);
int mClose(void);
int mRead(void);
int mWrite(void);
int mCp(void);
int mRm(void);
void mExit(void);
void ErrorConfig(int errorcode);
void FreeFCB(FCB *fcb);
int BackUp(void);
//0 command not exist
//1 format
//2 mkdir
//3 ls
//4 cd
//5 mkfile
//6 open
//7 close
//8 read
//9 write
//10 cp
//11 rm
//12 exit
int GetCommandType(char *command)
{
char cmd[COMMANDNUM][10] = {
““ “format“ “mkdir“ “ls“ “cd“ //0:““ 1:format 2:mkdir 3:ls 4:cd
“mkfile“ “open“ “close“ “read“ //5:mkfile 6:open 7:close 8:read
“write“ “cp“ “rm“ “exit“ “backup“ //9:write 10:cp 11:rm 12:exit
};
int i;
for(i = 0; i < COMMANDNUM; i++)
{
if(strcmp(cmd[i] command) == 0)
return i;
}
return 0;
}
void LoadSys()
{
fileopened.opennum = 0;
if((fp = fopen(“VirtualDisk.txt“ “rb“)) == NULL)
{
printf(“LoadSys : file doesn‘t exist!\n“);
//getchar();
//fclose(fp);
InitSystem(); // file doesn‘t exist
r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1048576 2015-03-13 09:45 5-vfs\backup.disk
文件 49 2015-03-12 19:49 5-vfs\makefile
文件 22743 2015-03-12 20:14 5-vfs\vfs.c
文件 1048576 2015-03-13 09:44 5-vfs\VirtualDisk.txt
目录 0 2015-04-14 17:26 5-vfs
----------- --------- ---------- ----- ----
2119944 5
- 上一篇:24位颜色值转换16位工具
- 下一篇:响应式布局 图片上下轮播
相关资源
- 页面置换算法GUI
- 华中科技大学操作系统课程设计——
- 缓冲池 操作系统课设
- 操作系统课设计 SPOOLing系统
- 操作系统课设 linux 下编程模拟多进程
- 操作系统课设.docx
- 广工操作系统课设代码及文档
- 操作系统课设 Ubuntu下运行读者写者问
- 多用户多目录文件系统设计与实现
- 操作系统课设之页面置换
- 广工操作系统课设
- 用多线程同步方法解决生产者-消费者
- 操作系统课设 模拟二级文件系统管理
- 华南理工大学操作系统课设
- 基于FAT16的虚拟文件系统——操
- 操作系统课设 缓冲池的管理模拟
- 操作系统综合实践虚拟文件系统FAT方
- 操作系统课程设计(虚拟文件系统)
- 操作系统课设银行家算法(C源码+报告
- 操作系统课设-贪吃蛇游戏实现
- 用多进程同步方法演示“生产者-消费
- 付晓帆--华科操作系统课设
- 操作系统课设用多进程同步方法演示
- 操作系统课设磁盘空间管理实验
评论
共有 条评论