c语言实现页面置换
更新时间:2023-05-17 16:23:01 阅读量: 实用文档 文档下载
c语言实现页面置换
#include "stdio.h"
#include "stdlib.h"
#define true 1
#define false 0
int wang;
/*是否有元素*/
int have(int a[],int t)
{
int i=0,j=0;
for(j=0;j<4;j++)
{
if(a[j]==t)
{
i=1; /*有元素*/
break;
}
}
return i;
}
/*先进先出页面置换算法*/
void FIFO(int num[])
{
int i,j,k;
int a[4]={-1,-1,-1,-1} ;
for(i=0,j=0;i<20;i++)
{
if(j<4)
{
if(have(a,num[i])==0)
a[j++]=num[i];
}
else
{
if(have(a,num[i])==0)
{
c语言实现页面置换
for(j=1;j<4;j++)
a[j-1]=a[j];
a[3]=num[i];
}
}
for(k=0;k<4;k++)
printf(" %2d",a[k]);
printf(" \n");
}
}
/*最近最久未使用*/
void LRU(int num[])
{
int i,j,k,temp;
int a[4]={-1,-1,-1,-1} ;
for(i=0;i<20;i++)
{
if(i==0)
a[0]=num[0];
else
{
for(j=0;j<4;j++)
{
if(a[j]==num[i])
break;
}
for(k=j;k>0;k--)
{
a[k]=a[k-1];
}
a[0]=num[i];
}
for(k=0;k<4;k++)
printf(" %2d",a[k]);
printf(" \n");
}
c语言实现页面置换
}
/*选择排序*/
void SelectSort(int r[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++) /*不考虑后面元素,可视从j往前的数据都是排好的*/ {
if(r[i]>r[j])/*如果当前元素r[j]比索引指向的元素r[i]小,换位*/ {
temp=r[i];
r[i]=r[j];
r[j]=temp;
}
}
}
}
/*返回要置换的位置*/
int del(int a[],int num[],int n)
{
int i,j;
int s[4]={0,0,0,0};
int t[4]={0,0,0,0};
for(i=0;i<4;i++)
{
for(j=n;j<20;j++)
{
if(a[i]==num[j])
{
s[i]=j;
t[i]=j;
break;
}
}
if(j==20)
{ s[i]=20;t[i]=20;}
}
SelectSort(s,4);
c语言实现页面置换
for(i=0;i<4;i++)
{
if(t[i]==s[3])
break;
}
return i;
}
/*最佳置换算法*/
void Optimal(int num[])
{
int i,j,k,temp;
int a[4]={-1,-1,-1,-1} ;
for(i=0,j=0;i<20;i++)
{
if(j<4)
{
if(have(a,num[i])==0)
a[j++]=num[i];
}
else
{
if(have(a,num[i])==0)
{
temp=del(a,num,i);
a[temp]=num[i];
}
}
for(k=0;k<4;k++)
printf(" %2d",a[k]);
printf(" \n");
}
}
void main()
{
loop: /* 循环 */
{
char ch;
int i;
int num[20];
c语言实现页面置换
/*初始化页面调用数组*/
for(i=0;i<20;i++)
{
num[i]=rand()%10;
printf(" %d",num[i]);
}
printf("\n");
printf("----------------------------------\n"); printf(" 1---FIFO;2---LRU;3---Optimal\n"); printf("----------------------------------\n\n"); printf("intput the NO. :");
i=0;
scanf("%d",&i);
printf("\n [1] [2] [3] [4]\n");
switch (i)
{
case 1:FIFO(num);break;
case 2:LRU(num); break;
case 3:Optimal(num);break;
default:printf("input wrong No.!!!");
}
printf("again?(y or n)\ninput:");
loop_1:
{
ch=getch();
if(ch=='y') /* y 再次输入 */
goto loop;
else if(ch=='n') /* n 退出 */
exit(0);
else /* 都不是提示输入错误 */ {
printf("\ninput wrong!again please!!!\ninput:"); goto loop_1;
}
}
}
}
正在阅读:
c语言实现页面置换05-17
CPIII测量具体操作01-29
2016-2017学年江苏省南京市秦淮区八年级(下)期末物理试卷及答案08-07
二极管并联电阻的作用12-15
2016年首都师范大学管理学院公共管理学(同等学力加试)复试笔试最后押题五套卷05-06
高中语文课堂教学反思精选5篇02-21
这件事真让我后悔作文450字07-14
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 置换
- 语言
- 页面
- 实现
- 74LS161电子时钟设计
- 福建省福州文博中学2013届九年级第一次月考语文试题
- 高级人才面试题库——九型人格.
- 二年级下册加减乘除混合口算题合集
- 中央政法委光荣传统教育报告会观后感
- 7B Unit 3 Finding your way Grammar
- 股权出资程序及税务处理
- 小学体育课堂有效组织教学综合评价方案`
- 安徒生童话 学案
- 关于上海进一步提升数字化制造能力的研究与建议
- 免疫组化操作步骤
- 学生日常管理制度作者
- 2015年婚纱摄影选片人员培训
- 现代艺术设计对服装设计的影响
- 上海罗湾实业有限公司绿植租摆图册
- 8 第五章 植物抗病性的遗传和变异
- “红动五月天”购物中心开业方案
- 人教版小学五年级语文下册期末测试题及答案
- 拔罐后皮肤颜色鉴别
- 2007年6月23日大学英语六级(CET-6)真题试卷(A卷)