資源簡介
這是關于北京林業大學操作系統的實驗
代碼片段和文件信息
#include?
#include?
#include?
#define?N?10
#define?M?N
#define?Memory_SIZE?1024
struct?JCB
?{
double?length;
int?flag;
};
struct?Ntable
{
double?address;
double?length;
int?flag;
}used_table[N];
struct?Mtable?
{
double?address;
double?length;
int?flag;
}free_table[M];
JCB?process[N];
int?used_count=0;
void?init()
{
int?i;
double?rest=0;
for?(i=0;i {
process[i].length=rand()%Memory_SIZE;
process[i].flag=0;
}
for?(i=0;i {
free_table[i].address=rest;
if?(i==N-1)
{
free_table[i].length=Memory_SIZE-rest;
}
else?
{
free_table[i].length=Memory_SIZE/(pow(2.0i+1));
}
rest=rest+free_table[i].length;
free_table[i].flag=1;
used_table[i].flag=-1;
}
for?(i=N;i {
used_table[i].flag=-1;
free_table[i].flag=0;
}
}
int?findmax(){
int?it;
double?max=0;
for?(i=0;i if?(free_table[i].flag&&free_table[i].length>max)
{
max=free_table[i].length;
t=i;
}
return?t;
}
void?sort(){
int?ij;
Mtable?temp;
for?(i=0;i for?(j=0;j if?(free_table[j].flag {
temp=free_table[j+1];
free_table[j+1]=free_table[j];
free_table[j]=temp;
}
else?if?(free_table[j].address>free_table[j+1].address&&free_table[j].flag==free_table[j+1].flag)
{
temp=free_table[j+1];
free_table[j+1]=free_table[j];
free_table[j]=temp;
}
}
}
int?findtarget(int?flagchar?type){
int?i;
if?(type==‘f‘)
for?(i=0;i {
if?(free_table[i].flag==flag)
return?i;
}
if?(type==‘u‘)
for?(i=0;i {
if?(used_table[i].fla
評論
共有 條評論