#include<stdlib.h>
#include<iostream.h>
#include<time.h>
#include<stdio.h>
#define total_instruction 200 /*指令流长*/
#define M 16 /*实际页数*/
#define N 4 //可用页面数
struct Pro
{
int num,time;
};
int a[total_instruction];
int page[N];
void Input(Pro p[total_instruction])
{
int m,i,m1,m2;
srand( (unsigned int )time(NULL));
m=rand( )%160; //
for(i=0;i<total_instruction;) /*产生指令队列*/
{
if(m<0||m>159)
{
printf("When i==%d,Error,m==%d\n",i,m);
exit(0);
}
a[i]=m; /*任选一指令访问点m*/
a[i+1]=a[i]+1;
a[i+2]=a[i]+2; /*顺序执行两条指令*/
int m1=rand( )%m; /*执行前地址指令m1 */
a[i+3]=m1;
a[i+4]=m1+1;
a[i+5]=m1 + 2;/*顺序执行两条指令*/
// s=(158-a[i+5])*rand( )/32767/32767/2+a[i+5]+2;
m2 = rand()%(157-m1)+m1+3;
a[i+6]=m2;
if( (m2+2) > 159 )
{
a[i+7] = m2+1;
i +=8;
}
else
{
a[i+7] = m2+1;
a[i+8] = m2+2;
i = i+9;
}
m = rand()%m2;
}
for (i=0;i<total_instruction;i++) /*将指令序列变换成页地址流*/
{
p[i].num=a[i]/10;
p[i].time = 0;
}
}