⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟磁盘.cpp

📁 模拟Linux文件系统 在任一OS下
💻 CPP
字号:
#include "disk.h"
extern disk DISK;
disk::disk_open(fstream i){
	iof=i;
}
disk::disk(){}
void disk::format(){
	char *disktemp=new char[1048576];
	for(int k=0;k<1048576;k++)
		disktemp[k]=0x0;
	for(int i=1;i<=1024;i++){
		disktemp[i*1024-1]=block_end;
		disktemp[i*1024-2]=block_end;
		disktemp[i*1024-3]=block_end;
		disktemp[i*1024-4]=block_end;
	}
	for(i=0;i<100;i++)
		iof.write(disktemp,1048576);
}
/*int disk::buffer_readbyname(char*name){
	char dir_item[16];
	iof.read(dir_item,16);
    int inode_num;
    while(dir_item[15]!=block_end){
		inode_num=int(dir_item[14])*(int)pow(2,8)+int(dir_item[15]);
		dir_item[14]='\0';
		if(!strcmp(dir_item,name))break;
		iof.read(dir_item,16);
	}
	if(dir_item[15]==block_end){
        return -1;
	}
	return inode_num;
}*/
void disk::block_to_buffer(int block_num,int buffer_location){
	iof.seekg(block_num*1024+buffer_location,ios::beg);	
}
/*
void disk::buffer_readname(){
	char dir_item[16];
	iof.read(dir_item,16);
    while(dir_item[15]!=block_end){
		dir_item[14]='\0';
		cout<<"filename:"<<dir_item<<endl;
		iof.read(dir_item,16);
	}
}*/
void disk::installfilesystem(){
	iof.seekp(0,ios::beg);
	bootblock bb;
	iof.write((char*)&bb,sizeof(bootblock));
	superblock_disk sb;
	iof.write((char*)&sb,sizeof(superblock));
	freebitmap fb(DISK.iof);
	for(int i=0;i<64;i++)
		fb.freebitmap_set(i);//由boot块到inodelist_disk块共用了64块
	///////////////////装根目录
    int k=fb.freebitmap_applyfor();
	fb.freebitmap_set(k);
	inode itemp;
    itemp.inode_ini();
	itemp.address[0]=k;
	itemp.file_size=2;
	itemp.inode_num=0;
	itemp.extend3=0;
	itemp.extend4=0;
	inodelist_disk ild(DISK.iof);
	int j=ild.inodelist_disk_applyfor();
	ild.inodelist_disk_write(j,itemp);//根据inode号写表
	///////////////////////
	folder ftemp(DISK.iof,itemp);	
	ftemp.folder_makedir();
}

////test1 inode 0写进与inode 0输出一不一样
/////测试当前路径
/////测试openfilemanager
/////测试folderapplyfor
/////测试用户平台的makedir指令

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -