#include
<stdio.h>
#include
<unistd.h>
#include
<sys/types.h>
#include
<string.h>
#include
<wait.h>
#include
<stdlib.h>
#include
<time.h>
int
loc_1;
//栈底指针
#define
frame_num
3
//主存大小
#define
Total_instruction
6
//总的额访问页数
int
loc_2;
//FIFO未满时候的队头指针
//命中和未命中
int
is_hit;
#define
HIT
1
#define
MISS
0
//页面是否在内存的标志
#define
IN
'1'
#define
OUT
'0'
//存放页面序列的数组
int
Access_Series[Total_instruction];
//(1)
//页表
struct
one_frame
{
int
page_no;
//对应的页号
char
flag;
//是否在内存的标志
};
struct
one_frame M_Frame[frame_num];
//(2)
int
disaffect;
//缺页的数量
//初始化函数 每个进程开始均调用
void
init
()
{
loc_1
=
0
;
is_hit
=
MISS;
//开始未命中
disaffect
=
0
;
for
(
int
index
=
0
; index
<
frame_num; index
++
)
M_Frame[index].
flag
=
OUT;
//页表初始化 均不在页表中
for
(
int
i
=
0
;i
<
frame_num;i
++
)
M_Frame[i].
page_no
=-
1
;
//初始化-1
}
//输出访问序列
void
print_Access_Series
()
{
printf
(
"Access Series: