📄 3_page_distrib.cpp
字号:
/*假设内存可供分配的用户区域物理块数最大为512块,相应用32位长的位示图表示*/
#include <malloc.h>
#include <stdio.h>
#include <string.h>
int free_bit,row_bit,col_bit,file_length;
int cylinder,disk_head,disk_fan;
void init(int table[17][32])
{ int i,j,count=0;
for(i=0;i<16;i++)
{table[i][0]=1;
count++;
}
table[16][0]=512-count;
}
void distribute(int bit[17][32],int block[],int lens)
{
int i,j,k=0;
for(i=0;i<16;i++)
for(j=0;j<32;j++)
{ if(k<lens)
{ if(bit[i][j]==0)
{ bit[i][j]=1;
block[k]=i*32+j;
k++;
bit[16][0]--;
}
}
else break;
}
}
void print(int bit[17][32])
{ int i,j;
printf(" ");
for(i=0;i<32;i++)
printf("%2d",i);
printf("\n");
for(i=0;i<16;i++)
{ printf("%3d",i);
for(j=0;j<32;j++)
printf("%2d",bit[i][j]);
printf("\n");
}
}
void main()
{
int k,bit[17][32],block[512],file_length;
char filename[8];
init(bit);/*初始化位示图*/
print(bit);
printf("空闲块数为:%d\n",bit[16][0]);
printf("input file_length and filename\n");
scanf("%d%s",&file_length,filename);
if(file_length>bit[16][0])
printf("空闲物理块不足,请等待!");
else/*开始分配*/
{
distribute(bit,block,file_length);
print(bit);
printf("空闲块数为:%d\n",bit[16][0]);
printf("作业申请到对应的物理块号分别为:\n");
for(k=0;k<512;k++)
if(block[k]==0)
break;
else
printf("%5d",block[k]);
printf("\n");
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -