操作系统 文件存储空间管理(4)
时间:2026-01-14
时间:2026-01-14
操作系统 文件存储空间管理 c++代码
for(i=0;i<640;i++)
{
fread(&root[i],sizeof(struct dir),1,fp);
}
fclose(fp);
}
void callback(int length) //回收磁盘空间
{
int i,j,k,m,q=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 i,j,k,m,p;
for(i=0;i<length;i++)
{
k=50-super_block.n; //超级块中表示空闲块的指针
m=super_block.free[k]; //栈中的相应盘块的地址
p=super_block.free[49]; //栈中的最后一个盘块指向的地址
if(m==-1||memory[p].a==1) //检测是否还有下一组盘块
{
上一篇:四川移动公司协同办公视频会议系统
下一篇:单人简易呼吸囊操作流程