欢迎来到天天文库
浏览记录
ID:6672828
大小:80.00 KB
页数:34页
时间:2018-01-22
《操作系统源代码-刘坤鹏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统源代码-刘坤鹏#include#include#include#defineMEM_D_SIZE1024*1024//总磁盘空间为1M#defineDISKSIZE1024//磁盘块的大小1K#defineDISK_NUM1024//磁盘块数目1K#defineFATSIZEDISK_NUM*sizeof(structfatitem)//FAT表大小#defineROOT_DISK_NOFATSIZE/DISKSIZE+1//根目录起始盘块号#defineRO
2、OT_DISK_SIZEsizeof(structdirect)//根目录大小#defineDIR_MAXSIZE1024//路径最大长度为1KB#defineMSD5//最大子目录数5#defineMOFN5//最大文件深度为5#defineMAX_WRITE1024*128//最大写入文字长度128KBstructfatitem/*size8*/{intitem;/*存放文件下一个磁盘的指针*/charem_disk;/*磁盘块是否空闲标志位0空闲*/};structdirect{/*-----文件控制快信息-----*
3、/structFCB{charname[9];/*文件/目录名8位*/charproperty;/*属性1位目录0位普通文件*/intsize;/*文件/目录字节数、盘块数)*/intfirstdisk;/*文件/目录起始盘块号*/intnext;/*子目录起始盘块号*/intsign;/*1是根目录0不是根目录*/}directitem[MSD+2];};structopentable{structopenttableitem{charname[9];/*文件名*/intfirstdisk;/*起始盘块号*/intsize
4、;/*文件的大小*/}openitem[MOFN];intcur_size;/*当前打文件的数目*/};structfatitem*fat;/*FAT表*/structdirect*root;/*根目录*/structdirect*cur_dir;/*当前目录*/structopentableu_opentable;/*文件打开表*/intfd=-1;/*文件打开表的序号*/char*bufferdir;/*记录当前路径的名称*/char*fdisk;/*虚拟磁盘起始地址*/voidinitfile();voidformat
5、();voidenter();voidhalt();intcreate(char*name);intopen(char*name);intclose(char*name);intwrite(intfd,char*buf,intlen);intread(intfd,char*buf);intdel(char*name);intmkdir(char*name);intrmdir(char*name);voiddir();intcd(char*name);voidprint();voidshow();voidinitfile(){
6、fdisk=(char*)malloc(MEM_D_SIZE*sizeof(char));/*申请1M空间*/format();}voidformat(){inti;FILE*fp;fat=(structfatitem*)(fdisk+DISKSIZE);/*计算FAT表地址,引导区向后偏移1k)*//*-----初始化FAT表------------*/fat[0].item=-1;/*引导块*/fat[0].em_disk='1';for(i=1;i7、fat[i].item=i+1;fat[i].em_disk='1';}fat[ROOT_DISK_NO].item=-1;/*存放根目录的磁盘块号*/fat[ROOT_DISK_NO].em_disk='1';for(i=ROOT_DISK_NO+1;i8、FATSIZE);/*根目录的地址*//*初始化目录*//*---------指向当前目录的目录项---------*/root->directitem[0].sign=1;root->directitem[0].firstdisk=ROOT_DISK_NO;strcpy(root->di
7、fat[i].item=i+1;fat[i].em_disk='1';}fat[ROOT_DISK_NO].item=-1;/*存放根目录的磁盘块号*/fat[ROOT_DISK_NO].em_disk='1';for(i=ROOT_DISK_NO+1;i8、FATSIZE);/*根目录的地址*//*初始化目录*//*---------指向当前目录的目录项---------*/root->directitem[0].sign=1;root->directitem[0].firstdisk=ROOT_DISK_NO;strcpy(root->di
8、FATSIZE);/*根目录的地址*//*初始化目录*//*---------指向当前目录的目录项---------*/root->directitem[0].sign=1;root->directitem[0].firstdisk=ROOT_DISK_NO;strcpy(root->di
此文档下载收益归作者所有