import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class FIFO {
static int volum;//栈的容量
static List<content>list=new LinkedList<content>();
static int visit[];//要访问的页面
static int count=0;//记录页面置换的次数
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
System.out.print("请输入栈的容量:");
volum=sc.nextInt();
System.out.println("请输入页面总数:");
int number=sc.nextInt();
visit=new int[number];
System.out.println("请输入各个页面号:");
for(int i=0;i<number;i++)
visit[i]=sc.nextInt();
sFIFO();
System.out.println("置换次数为:"+count);
}
public static void sFIFO()
{
int index=0;
while(index<visit.length)
{
boolean flag=false;
if(list.size()<=volum)
{
for(int i=0;i<list.size();i++)
{
if(list.get(i).id==visit[index])
{//若已经存在,直接返回看下一个
for(int j=0;j<list.size();j++)
{
int te=list.get(j).count;
list.get(j).setCount(te+1);
}
flag=true;
break;
}
}
if(!flag)
{
if(list.size()==volum)
{//如果满了,只能置换页面了
int old=list.get(0).count;
int temp=0;//暂存最老页面编号
//寻找最老的页面
for(int j=1;j<volum;j++)
{
if(old<(list.get(j).count))
{
temp=j;
old=list.get(j).count;
}
}
System.out.println("因为队列满,页面"+list.get(temp).id+"被置换出来");
for(int stt=0;stt<list.size();stt++)
(list.get(stt).count)++;
list.get(temp).count=1;
list.get(temp).id=visit[index];
count++;
}
else
{
for(int t=0;t<list.size();t++)
{
int te=list.get(t).count;
list.get(t).setCount(te+1);
}
content ncontent=new content(visit[index],1);
list.add(ncontent);
}
}
}
System.out.print("第"+(index+1)+"次的队列内容:");
for(int f=0;f<list.size();f++)
System.out.print(list.get(f).id+" ");
System.out.println();
index++;
}
}
}
class content
{
int id;//页面号
int count;//属于第几老的页面
public void setCount(int count)
{
this.count=count;
}
public content(int id,int count)
{
this.id=id;
this.count=count;
}
}
运行结果:
- 大小: 17.7 KB
分享到:
相关推荐
### 先进先出FIFO页面置换算法 #### 概述 在计算机操作系统中,页面置换算法是一项重要的技术,用于管理虚拟内存与物理内存之间的数据交换。当物理内存不足时,操作系统需要决定哪些页面应该保留在内存中,而哪些...
在**操作系统的课程设计**中,实现FIFO页面置换算法通常包括以下几个步骤: 1. **初始化**:设置一个固定大小的页面框(页表),并记录每个页面的进入时间。 2. **页面访问**:每当有页面请求时,检查该页面是否在...
使用c++语言编写的模拟实现先进先出页面置换算法,定义了一个FIFO类,FIFO类有一个str数组来存放页面走向;一个base数组表示物理块;一个int型变量来存放最先进入物理块的下标。这是个比较简单的代码,
**实验4 - 模拟先进先出(FIFO)页面置换算法** 在计算机系统中,页面置换算法是虚拟存储管理的重要组成部分,用于处理由于物理内存不足而需要替换内存中某些页面的情况。FIFO(First In First Out)页面置换算法是最...
提供的压缩包文件"**FIFO**"可能包含了实现FIFO页面置换算法的源代码和可执行程序,通过这些代码,你可以进一步了解和研究FIFO算法的细节,以及如何在实际中应用和测试该算法。对于学习操作系统和内存管理的初学者来...
3. **代码解析**:本部分将详细解释给定的C语言代码,该代码实现了FIFO页面置换算法,并演示了如何输入页面序列、物理块数量以及执行页面置换过程。 #### 二、FIFO页面置换算法详解 FIFO算法的工作原理非常直观。...
本项目实现了两种常见的页面置换算法——FIFO(先进先出)和LRU(最近最少使用),并使用C++编程语言进行实现。 **FIFO(先进先出)页面置换算法**: FIFO是最简单的页面置换算法,它的原理是将最早进入内存的页面...
**FIFO页面置换算法**: FIFO算法是最简单的页面置换策略,其基于的原则是最早进入内存的页面最早被替换出去。当需要一个新的页面而物理内存已满时,FIFO会选择最先进入内存的页面进行淘汰。虽然实现简单,但FIFO...
FIFO页面置换算法是操作系统内存管理中的一个基本概念,它全称为“First In First Out”,即先进先出。在虚拟存储系统中,由于物理内存有限,不能将所有的进程都加载到内存中,因此需要借助页面置换算法来决定何时...
在C语言中实现FIFO页面置换算法,通常需要构建以下几个主要的数据结构: 1. **页框数组(Page Frame Array)**:表示内存中的页面框,用于存储页面编号。 2. **页面访问序列(Page Access Sequence)**:表示进程...
先进先出置换算法(FIFO):选择最先进入内存即在内存驻留时间最久的页面换出到外存。 最近最久未使用置换算法(LRU): 以“最近的过去”作为“最近的将来”的近似,选择最近一段时间最长时间未被访问的页面淘汰出...
该工程具体是在codeblock上面实现了操作系统课程上讲解的页面置换算法,包括先进先出(FIFO)、最佳置换算法(OPT)、最久最近未使用算法(LRU)。 具体实现功能有: 1、建立相应的数据结构 2、在屏幕上显示页面...
在这个C语言实现的项目中,我们主要关注三种常见的页面置换算法:FIFO(先进先出)、LRU(最近最少使用)和OPT(最佳页面置换)。下面将详细解释这三种算法的工作原理以及它们在C语言编程中的实现。 1. FIFO(先进...
本项目涉及到了三种经典的页面置换算法:FIFO(先进先出)、LRU(最近最久未使用)以及OPT(最佳页面置换)。这些算法在JAVA环境下实现,并且具备用户界面,便于理解和学习。 1. FIFO(先进先出)页面置换算法: ...
下面我们将详细探讨FIFO页面置换算法的工作原理以及如何用C语言来实现它。 1. **工作原理**: - **页表**:操作系统为每个进程维护一个页表,记录了逻辑地址到物理地址的映射,以及每个页面的访问状态(如是否在...
这里我们将讨论两种常见的页面置换算法:FIFO(先进先出)和NUR(最近未使用)。 FIFO算法基于简单的队列原理,它将新进来的页面添加到内存的末尾,并且最先被调入内存的页面也最先被换出。在给定的代码中,`Fifo`...
本实验旨在通过实际编程实现请求分页存储管理中的三种页面置换算法:最优置换算法(Optimal)、先进先出置换算法(FIFO)以及最近最少使用置换算法(LRU),帮助学生深入理解和掌握虚拟存储管理的核心概念和技术。...
根据给定文件的信息,我们可以详细地探讨一下在虚拟存储管理中如何实现三种主要的页面置换算法:Optimal (OPT), First-In First-Out (FIFO), 和 Least Recently Used (LRU)。此外,我们还会简要提及Clock置换算法,...
该工程具体是在codeblock上面实现了操作系统课程上讲解的页面置换算法,包括先进先出(FIFO)、最佳置换算法(OPT)、最久最近未使用算法(LRU)。 具体实现功能有: 1、建立相应的数据结构 2、在屏幕上显示页面的...