fifo缺页

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n;
    scanf("%d",&n);
    int g[n];
    for(int i=0;i<n;i++){
        scanf("%d",&g[i]);
    }
    int m;
    scanf("%d",&m);
    int count1=0;//缺页的次数
    int count2=0;//寻找且未找到的次数
    int q[m];
    for(int i=0;i<n;i++){        
        for(int j=0;j<m;j++){//寻找且未找到的次数
            if(g[i]!=q[j]){
                count2++;
            }
        }
        if(count2==m){//没有找到
        for(int t=1;t<m;t++){
                q[t-1]=q[t];//将数组向前移动一位,即相当于删除第0位的数组数字
        }
            q[m-1]=g[i];//顺序换数组数字
            count1++;    
        }        
        count2=0;//计数器置零
    }
    printf("%d",count1);    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FIFO算法是一种页面置换算法,它根据页面进入内存的顺序来选择要被替换的页面。当发生缺页中断时,FIFO算法会选择最早进入内存的页面进行替换。 下面是计算FIFO算法缺页次数的步骤: 1. 初始化一个空的页表,用于记录当前内存中的页面。 2. 初始化一个空的队列,用于记录页面进入内存的顺序。 3. 遍历页面引用串,对于每个页面号: - 如果页面号已经在页表中,表示页面已经在内存中,不发生缺页,继续下一个页面。 - 如果页面号不在页表中,表示页面不在内存中,发生缺页中断: - 如果内存中的页面数量小于物理块数,将页面加入页表和队列中,并增加缺页次数。 - 如果内存中的页面数量等于物理块数,需要替换一个页面: - 从队列中取最早进入内存的页面号,将其从页表中移除。 - 将新的页面号加入页表和队列中,并增加缺页次数。 4. 遍历完页面引用串后,缺页次数即为FIFO算法的结果。 下面是一个示例代码,演示如何计算FIFO算法的缺页次数: ```python def calculate_fifo_faults(page_references, num_frames): page_table = set() page_queue = [] fault_count = 0 for page in page_references: if page in page_table: continue if len(page_table) < num_frames: page_table.add(page) page_queue.append(page) else: evicted_page = page_queue.pop(0) page_table.remove(evicted_page) page_table.add(page) page_queue.append(page) fault_count += 1 return fault_count page_references = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1] num_frames = 3 faults = calculate_fifo_faults(page_references, num_frames) print("FIFO算法的缺页次数为:", faults) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值