• 大小: 565.39 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-12
  • 语言: 其他
  • 标签:

资源简介

可以实现下列几条命令:
Login 用户登录
Dir 列文件目录
Create 创建文件
Delete 删除文件
Open 打开文件
Close 关闭文件
Read 读文件
Write 写文件

资源截图

代码片段和文件信息

#include “filesys.h“

int physic[100];           //文件地址缓冲区
int style=1;               //文件的类型
char cur_dir[10]=“root“;   //当前目录 

void format()     //格式化
{
int ijk;
super_block.n=50;

for(i=0;i<50;i++)            //超级块初始化
{
super_block.free[i]=i; //存放进入栈中的空闲块
super_block.stack[i]=i+50;  //存放下一组的盘块
}

for(i=0;i<640;i++) //i结点信息初始化
{
for(j=0;j<100;j++)
{
i_node[i].file_address[j]=-1;//文件地址
}
i_node[i].file_length=-1;  //文件长度
i_node[i].file_style=-1;  //文件类型
}

for(i=0;i<640;i++)     //根目录区信息初始化
{
strcpy(root[i].file_name““);
root[i].i_num=-1;
strcpy(root[i].dir_name““);


for(i=0;i<20449;i++)     //存储空间初始化 
{
memory[i].n=0;      
memory[i].a=0;      
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
}
for(i=0;i<20449;i++)    //将空闲块的信息用成组链接的方法写进每组的最后一个块中
{ //存储空间初始化
if((i+1)%50==0)
{
k=i+1;
for(j=0;j<50;j++)
{
if(k<20450)
{
memory[i].free[j]=k;//下一组空闲地址
memory[i].n++;  //下一组空闲个数   注意在memory[i].n++之前要给其赋初值
k++;
}
else
{
memory[i].free[j]=-1;
}
}
memory[i].a=0;    //标记为没有使用
continue;     //处理完用于存储下一组盘块信息的特殊盘块后,跳过本次循环
}
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
memory[i].n=0;  
}
printf(“已经初始化完毕\n“);
printf(“进入文件模拟.....\n\n“);
}
void write_file(FILE *fp)    //将信息读入系统文件中
{
int i;
fp=fopen(“system““wb“);

for(i=0;i<20449;i++)
{
fwrite(&memory[i]sizeof(struct block)1fp);
}
fwrite(&super_blocksizeof(struct block_super)1fp);

for(i=0;i<640;i++)
{
fwrite(&i_node[i]sizeof(struct node)1fp);
}
for(i=0;i<640;i++)
{
fwrite(&root[i]sizeof(struct dir)1fp);
}
fclose(fp);
}

void read_file(FILE *fp)   //读出系统文件的信息
{
int i;
fp=fopen(“system““rb“);
for(i=0;i<20449;i++)
{
fread(&memory[i]sizeof(struct block)1fp);
}

fread(&super_blocksizeof(struct block_super)1fp);

for(i=0;i<640;i++)
{
fread(&i_node[i]sizeof(struct node)1fp);
}

for(i=0;i<640;i++)
{
fread(&root[i]sizeof(struct dir)1fp);
}
fclose(fp);
}

void callback(int length)    //回收磁盘空间
{
int ijkmq=0;
for(i=length-1;i>=0;i--)
{
k=physic[i];     //需要提供要回收的文件的地址
m=49-super_block.n;    //回收到栈中的哪个位置
if(super_block.n==50)   //注意 当super_block.n==50时 m=-1;的值
{        //super_block.n==50的时候栈满了,要将这个栈中的所有地址信息写进下一个地址中
for(j=0;j<50;j++)
{
memory[k].free[j]=super_block.free[j];
}
super_block.n=0;
memory[k].n=50;
}
memory[k].a=0; 
if(m==-1)
{
m=49;      //将下一个文件地址中的盘块号回收到栈底中,这个地址中存放着刚才满栈的地址的信息 
}
super_block.free[m]=physic[i]; //将下一个文件地址中的盘块号回收到栈中
super_block.n++;
}
}

void allot(int length)     //分配空间
{
int ijkmp;
for(i=0;i {
k=50-super_block.n;    //超级块中表示空闲块的指针
m=super_block.free[k];   //栈中的相应盘块的地址
p=super_block.free[49];   //栈中的最后一个盘块指向的地址
if(m==-1||memory[p].a==1)  //检测是否还有下一组盘块
{
print

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      33671  2009-06-25 22:44  myProject\Debug\c.obj

     文件      38644  2009-07-01 17:39  myProject\Debug\fileSys.obj

     文件          0  2009-07-01 17:39  myProject\Debug\fileSys.sbr

     文件      58368  2009-07-01 17:39  myProject\Debug\myProject.bsc

     文件     213083  2009-07-01 17:39  myProject\Debug\myProject.exe

     文件     305008  2009-07-01 17:39  myProject\Debug\myProject.ilk

     文件     229788  2009-07-01 17:39  myProject\Debug\myProject.pch

     文件     508928  2009-07-01 17:39  myProject\Debug\myProject.pdb

     文件      50176  2009-07-01 17:47  myProject\Debug\vc60.idb

     文件      53248  2009-07-01 17:39  myProject\Debug\vc60.pdb

     文件          7  2009-07-01 17:47  myProject\filename

     文件      13409  2009-06-29 16:55  myProject\fileSys.cpp

     文件        730  2009-06-29 16:05  myProject\fileSys.h

     文件      33671  2009-06-25 22:44  myProject\myProject\Debug\c.obj

     文件      38189  2009-07-01 17:37  myProject\myProject\Debug\fileSys.obj

     文件          0  2009-07-01 17:37  myProject\myProject\Debug\fileSys.sbr

     文件      58368  2009-07-01 17:37  myProject\myProject\Debug\myProject.bsc

     文件     213083  2009-07-01 17:37  myProject\myProject\Debug\myProject.exe

     文件     297560  2009-07-01 17:37  myProject\myProject\Debug\myProject.ilk

     文件     229788  2009-07-01 17:36  myProject\myProject\Debug\myProject.pch

     文件     508928  2009-07-01 17:37  myProject\myProject\Debug\myProject.pdb

     文件      50176  2009-07-01 17:37  myProject\myProject\Debug\vc60.idb

     文件      53248  2009-07-01 17:36  myProject\myProject\Debug\vc60.pdb

     文件          4  2009-06-29 17:01  myProject\myProject\filename

     文件      13409  2009-06-29 16:55  myProject\myProject\fileSys.cpp

     文件        730  2009-06-29 16:05  myProject\myProject\fileSys.h

     文件       4378  2009-06-29 17:01  myProject\myProject\myProject.dsp

     文件        541  2009-06-25 09:49  myProject\myProject\myProject.dsw

     文件      58368  2009-07-01 17:38  myProject\myProject\myProject.ncb

     文件      48640  2009-07-01 17:38  myProject\myProject\myProject.opt

............此处省略15个文件信息

评论

共有 条评论