- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程的设计文件系统
操作系统课程设计文件系统
#include stdio.h
#include memory.h
#include string
#include iostream using namespace std;
struct FCB
{
char fname[16];//文件名
int type;//1代表普通文件2代表目录文件0表示空文件
int size;//文件大小
int fatherBlockNum;//当前的父目录盘块号
int currentBlockNum;//当前的盘块
void initialize()
{
strcpy(fname,[message]);
type=0;
size=0;
fatherBlockNum=currentBlockNum=0;
}
};
const char*FilePath=C:\myfiles;
const int BlockSize=512;//盘块大小(可配置)
const int OPEN_MAX=5;//能打开最多的文件数
const int BlockCount=BlockSize/sizeof(int);//盘块数
const int DiskSize=BlockSize*BlockCount;//磁盘大小
const int BlockFcbCount=BlockSize/sizeof(FCB);//目录文件的最多FCB数
//const int IOBUF_SIZE=512;
//char IOBuffer[IOBUF_SIZE];
int OpenFileCount=0;
struct OPENLIST//用户文件打开表
{
int files;//当前打开文件数
FCB f[OPEN_MAX];//FCB拷贝
OPENLIST()
{
files=0;
for(int i=0;i OPEN_MAX;i++){
f[i].fatherBlockNum=-1;//为分配打开
f[i].type=0;
}
}
};
struct dirFile
{
struct FCB fcb[BlockFcbCount];
void init(int _FatherBlockNum,int _CurrentBlockNum,char*name)//父块号,当前块号,目录名
{
strcpy(fcb[0].fname,name);//本身的FCB fcb[0].fatherBlockNum=_FatherBlockNum;
fcb[0].currentBlockNum=_CurrentBlockNum;
fcb[0].type=2;//标记目录文件
for(int i=1;i BlockFcbCount;i++){
fcb[i].fatherBlockNum=_CurrentBlockNum;//标记为子项
fcb[i].type=0;//标记为空白项
}
}
};
struct DISK
{
int FAT1[BlockCount];//FAT1 int FAT2[BlockCount];//FAT2 struct dirFile root;//根目录
char data[BlockCount-3][BlockSize];
void format()
{
memset(FAT1,0,BlockCount);//FAT1 memset(FAT2,0,BlockCount);//FAT2 FAT1[0]=FAT1[1]=FAT1[2]=-2;//0,1,2盘块号依次代表FAT1,FAT2,根目录区
FAT2[0]=FAT2[1]=FAT2[2]=-2;//FAT作备份
root.init(2,2,G:\);//根目录区
memset(data,0,sizeof(data));//数据区
}
};
FILE*fp;//磁盘文件地址
char*BaseAddr;//虚拟磁盘空间基地址
string currentPath=G:\;//当前路径
int current=2;//当前目录的盘块号
string cmd;//输入指令
struct DISK*osPoint;//磁盘操作系统指针
char command[16];//文件名标识
struct OPENLIST*openlist;//用户文件列表指针
int format();
int mkdir(char*sonfname);
int rmdir(char*sonfname);
int create(char*name);
int listshow();
int delfile(char*name);
int changePath(char*sonfname);
int write(char*name);
int exit();
您可能关注的文档
最近下载
- 液压传动与气动技术第二版习题册参考答案.docx VIP
- A.4 110kV主变二次回路原理图集(线路变压器组接线).pdf VIP
- 绞车斜巷提升能力计算及绞车选型核算方法.doc VIP
- 20K607:防排烟及暖通防火设计审查与安装.docx VIP
- 如何找回误删微信好友,微信好友一键恢复.doc VIP
- 2021 年贵州专升本考试《大学英语》真题试卷参考答案.pdf VIP
- l财主底儿女们蒋纯祖形象分析.doc VIP
- 输变电工程涉自然保护地全过程管理要求.pdf VIP
- 华夏银行信息科技管理委员会工作总结 (1).docx VIP
- DLT 1097-2023 火力发电厂凝汽器管板焊接技术规程.pdf VIP
原创力文档


文档评论(0)