分页式存储管理页面置换算法——LRU、FIFO、改进型的CLOCK算法

该博客深入探讨了分页式存储管理中三种页面置换算法:LRU、FIFO和CLOCK。通过模拟硬件地址转换及缺页中断,详细展示了每种算法在内存中的应用,包括页面的绝对地址、页表信息,并列举了不同算法下的缺页情况分析。
摘要由CSDN通过智能技术生成
(文章原理待更新)

模拟分页式存储管理中硬件的地址转换和产生缺页中断,然后分别用LRU、FIFO、改进型的CLOCK算法实现分页管理的缺页中断。

要求:显示每个页面在内存中的绝对地址,页表信息、列出缺页情况等。

#include<iostream>
#include<cmath>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<stack>
#include<time.h>
#define Max 1024
using namespace std;
int len;
int str[Max];///页面号序列
int block;///系统为进程分配的物理块
int que[Max];///模拟队列
struct Page
{
    int sta;///内存位当前状态
    int A;///访问位
    int M;///修改位
    int tim;///距离上一次访问时长
    int dis;///距离上一次访问距离
} Q[Max];
void init()
{
    printf("请输入页面号序列长度:");
    cin>>len;
    printf("请输入页面号引用串序列:");
    for(int i=1; i<=len; i++) cin>>str[i];
    printf("请输入系统为进程分配的物理块:");
    cin>>block;
    for(int i=0; i<=block; i++)
        que[i]=-1;///初始值置为-1代表当前物理块为空
}
void print(int x)
{

    printf("当前需访问第 %d 页   ",str[x]);
    for(int i=1; i<=block; i++)
    {
        printf("[%3d] ",que[i]);
    }
    puts("");
}
void FIFO()
{
    printf("选择使用FIFO算法进行页面置换\n");
    init();
    int flag=1;///记录要进行页面置换的位置
    for(int i=1; i<=len; i++)
    {
        int j;
        int ok=0;
        for(j=1
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值