function zhongduan(C)
%%% edited by wang yajun
tic
[m,n]=size(C);
number=input('请输入作业分得的内存块数:');
A=[];
B=[];
count=0;
disp('按照FIFO进行,缺页中断数取尾数:(头-->尾)');
for i=1:m
for j=1:n
flag=0;
A=[A,C(i,j)];
if length(A)<=number
k=1;
while(1)
if k==1
fprintf('中断 %d',A(k));
count=count+1;
else
fprintf('%d',A(k));
end
if k~=length(A)
fprintf('-->');
else
break;
end
k=k+1;
end
fprintf('\n');
else
for t=1:number
if A(t)==A(number+1)
flag=1;
end
end
if flag==0
for s=1:number
B(s)=A(s+1);
end
A=B;
else
for s=1:number
B(s)=A(s);
end
A=B;
end
k=1;
while(1)
if k==1
if flag==1
fprintf(' %d',A(k));
else
fprintf('中断 %d',A(k));
count=count+1;
end
else
fprintf('%d',A(k));
end
if k~=number
fprintf('-->');
else
break;
end
k=k+1;
end
fprintf('\n');
end
end
end
disp(sprintf('一共访问%d次,采用FIFO置换算法总共产生%d次缺页中断,缺页中断率为%d',m*n,count,count/(m*n)));
fprintf('\n');
A=[];
B=[];
count=0;
disp('按照 LRU 进行,缺页中断数取 头 数:(头-->尾)');
for i=1:m
for j=1:n
flag=0;
A=[C(i,j),A];
if length(A)<=number
k=1;
while(1)
if k==1
fprintf('中断 %d',A(k));
count=count+1;
else
fprintf('%d',A(k));
end
if k~=length(A)
fprintf('-->');
else
break;
end
k=k+1;
end
fprintf('\n');
else
for t=1:number
if A(t+1)==A(1)
jilu=t+1;
flag=1;
end
end
if flag==0
for s=1:number
B(s)=A(s);
end
A=B;
else
B=A(1);
for s=2:number+1
if s~=jilu
B=[B,A(s)];
end
end
A=B;
end
k=1;
while(1)
if k==1
if flag==1
fprintf(' %d',A(k));
else
fprintf('中断 %d',A(k));
count=count+1;
end
else
fprintf('%d',A(k));
end
if k~=number
fprintf('-->');
else
break;
end
k=k+1;
end
fprintf('\n');
end
end
end
disp(sprintf('一共访问%d次,采用 LRU 置换算法总共产生%d次缺页中断,缺页中断率为%d',m*n,count,count/(m*n)));
disp(sprintf('程序运行时间 %d seconds',toc));