操作系统-页面置换算法-先进先出置换算法
来源:互联网 发布:3g移动嵌入式软件开发 编辑:程序博客网 时间:2024/06/05 23:44
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。最简单的页面置换算法是先入先出(FIFO)法。
代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct item
{
int num;
}Pro;
/**
*设置查询函数,在内存块中寻找页面是否存在
*存在则返回1,不存在返回-1
*/
int Search(Pro *p,int flag,int mnum)
{
int q=0;
for(int i=0;i<mnum;i++)
{
if(p[i].num==flag)
{
q=1;
break;
}
else
{
q=-1;
}
}
return q;
}
/**
*设置打印函数,每次分配之后都会调用一次
*/
void print(Pro *p,int mnum)
{
for(int i=0;i<mnum;i++)
printf("%d ",p[i].num);
printf("\n");
}
int main()
{
int i,j,pagenum;//pagenum为用户设定的页面个数
int number;//页面编号
int mnum;//用户设定内存分配的内存块
Pro *page;//页面编号存放数组
Pro *main;//内存块数组
printf("请输入分配给主存的页面数");
scanf("%d",&pagenum);
page=(Pro*)malloc(sizeof(Pro)*pagenum);
printf("请输入页面的编号");
for(i=0;i<pagenum;i++)//页面编号数组初始化
{
scanf("%d",&number);
page[i].num=number;
}
printf("请输入内存的块数");
scanf("%d",&mnum);
main=(Pro*)malloc(sizeof(Pro)*mnum);
for(int i=0;i<mnum;i++)//内存块初始化数组
{
main[i].num=-1;
}
int trans=0;//内存块置换的位置
for(i=0;i<pagenum;i++)
{
int p=page[i].num;
if(Search(main,p,mnum)==-1)
{
if(trans<mnum)
{
main[trans].num=page[i].num;
trans++;
print(main,mnum);
}
else
{
trans=0;
main[trans].num=page[i].num;
trans++;
print(main,mnum);
}
}
else
{
printf("不缺页\n");
}
}
return 0;
}
- 操作系统-页面置换算法-先进先出置换算法
- 先进先出页面置换算法
- 页面置换算法-先进先出(FIFO)
- /*先进先出页面置换算法*/
- 先进先出置换算法
- 操作系统--页面置换算法(先进先出算法,最近最久未使用算法,最佳置换算法)--JAVA实现
- 操作系统页面置换算法之先进先出(FIFO)算法
- 内存页面置换算法之先进先出(java 版)
- 先进先出页面置换算法(FIFO)
- 先进先出页面置换算法c语言源码
- 先进先出(FIFO)置换算法
- FIFO先进先出置换算法
- 先进先出(FIFO)置换算法
- [数据结构与算法]最佳置换算法和先进先出置换算法
- FIFO(First-In First-Out)先进先出页面置换算法详解
- 操作系统页面置换算法
- 操作系统页面置换算法
- 【操作系统】页面置换算法
- 热更新学习笔记(三)
- ArcGIS API For JavaScript本地部署
- python-yq-(占位符,list,tuple,条件,循环,dict,set)
- MyEclipse中使用reset hard的教训
- session 和 cookie 的区别
- 操作系统-页面置换算法-先进先出置换算法
- PHP获取程序执行时间
- switch 条件判断练习 工资评定
- 网站集群架构搭建
- [Android]自己动手做个拼图游戏
- java中heap和stack的区别
- 返回指针变量的函数
- 《Java并发编程的艺术》第一章——并发编程的挑战
- linux ping: command not found