1、 操作系统二级文件操作系统二级文件 管理课程设计管理课程设计 课程设计名称课程设计名称: 二级文件管理系统二级文件管理系统 专专 业班业班 级级 : 学学 生姓生姓 名名 : 学学 号号 指指 导导 老老 师师 : 一、 设计目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部 实现。 二、设计内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少 4 条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件
2、 rename 重命名 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 三、程序设计 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用 户多目录的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理 文件存储空间,并采用显式链接分配方式,则可以将位示图合并到 FAT 中。 4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理 地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操
3、 作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、 重命名、退出。 四、源代码 1 1、FileSystemFileSystem.h.h #define DIR_LENGTH 1024 /路径最长可达 100 字节 #define MAX_WRITE 1024*128 /写入文字可达 128k 字节 #define MEM_D_SIZE 1024*1024 /1M 磁盘空间 #define DISKSIZE 1024 /磁盘块的大小 1K #define MSD 5 /最大子目录数 5 #define DISK_NUM MEM_D_SIZE/DISKSIZE /磁盘块数目
4、 1024=1M/1K #define FATSIZE DISK_NUM*sizeof(struct FatItem) /FAT 表大小 1024*8=8K #define MOFN 5 /最大文件打开数 5 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 /根目录起始盘块号 9 #define ROOT_DISK_SIZE sizeof(struct Direct) /根目录大小 196 #define LOGIN 15 #define NAME_LONG 1 #define NOT_EXSIT -1 #define NOT_OPEN -1 #define D
5、IR_FULL -2 #define OPEN_FULL -3 #define ALREADY -4 #define NOT_R_W -4 #define DISK_FULL -5 #define NOT_EXIT -1 struct FatItem / size 8 int item; /存放文件下一个磁盘的指针 char em_disk; /磁盘块是否空闲标志位, 0 空闲 ; struct Direct struct FCB char name8; /文件/目录名 8 位 char property; /属性 1 位目录 0 位普通文件 int size; /文件/目录字节数、盘块数) int firstDisk; /文件/目录 起始盘块号 int next; /子目录起始盘块号 int sign; /1 是根目录 0 不是根目录 directItemMSD+2; /最大子目录 5 ; struct OpenT