C语言实现最近最久未使用页面调度算法

LRU算法 C语言简单实现 C语言 数据结构与算法 阅读详情

一、c语言实现页面调度算法LRU(最近最久未使用算法)

这是我第一次写这个东西哟,还是个在校学生,学的不好,如果有啥错的可以发信息给我哟,一块努力一块进步,奥利给!哈哈哈!虽然写代码的过程不是那么快乐,但是写正确后的喜悦是值得的,加油陌生人!!!

1.首先先来介绍一下什么是LRU算法:
因为我们的内存大小是有限的所以我们不可能将将我们的程序所有的都加载到内存中去运行,这时候我们会为我们的程序划分内存块,然后通过调度算法按一定的策略,将内存中的一些我们暂时用不到的一些页面号,进行调出内存中,然后将我们要用到的掉进来。ulr只是其中的一种算法来实现页面的调度而已。
LRU算法:就是在我们分配的内存满的时候,将内存中,最近最久没有使用的页面调出,将我们要用到的页面调进去。
具体的代码如下:
2.下面是我自己想的算法,希望对你们有帮助:

  1. a[] //用来存放内存块个数及每个块所有的页面
  2. b[]//存放用户要访问的页面的顺序串
  3. 先将a[]赋值-1,表示没有页面调入内存块
  4. 检查a[]中是否有需要调入的页面
  5. 如果有,将这个元素放到队尾,其他元素向前移动
  6. 如果没有,检查a[]中是否还有空的内存块
  7. 如果有直接调入内存块就好了
  8. 如果没有,选择LRU算法进行调度,具体的调度方式为保证头为最久最近未使用即可(这是这个算法最关键的一点)
    假设访问串为:1 2 3 1 4 6 7 2
    分配四个物理块
    则结果应该为:
    1 2 3 1 4 6 7 2
    1 1 1 2 2 3 1 4
    -1 2 2 3 3 1 4 6
    -1 -1 3 1 1 4 6 7
    -1 -1 -1 -1 4 6 7 2

LRU代码如下:

#include <iostream>
#include<stdio.h>
#include<stdlib.h>

void lru(){
    int pagenum;//用来接收用户输入的访问串的个数
    printf("这是LRU页面置换算法\n");
    printf("请输入您要访问页面串的个数:");
    scanf("%d",&pagenum);
    int a[pagenum];//存放用户输入的页面号
    int storagenum;//存放用户给的内存块的块数
    printf("请输入访问串");
    for(int i=0;i<pagenum;i++){
        scanf("%d",&a[i]);
    }
    printf("请输入您要给的物理块个数");
    scanf("%d",&storagenum);
    int b[storagenum];//存放内存块对应的页面号
    for(int j=0;j<storagenum;j++){//循环将初始化内存块进行赋值,赋值为-1表示未空
        b[j]=-1;
    }
    int k=0;
    int queyenum=0;//记录缺页的个数
    float queyelv;//记录缺页率
    int temp;//用来当做中间转换变量
    for(k;k<pagenum;k++){
        int h=0;
        for(h;h<storagenum;h++){
            //判断是否在内存块中,如果在就将后面的向前移动,保证第一个始终为最近最久未使用
            if(b[h]==a[k]){
                break;
            }
        }
        if(h==storagenum){//相等说明页面不在内存块中
            //判断内存块是否有空的
            queyenum++;
            int x=0;
            for(x;x<storagenum;x++){
                if(b[x]==-1){
                    break;
                }
            }
            if(x==storagenum)//说明内存块没有空的了,采取lru算法进行调页,将前面的向前移,然后将新调入的页放入队尾
            {
                int y=0;
                for(y;y<storagenum-1;y++){
                    b[y]=b[y+1];
                }
                b[y]=a[k];
            }
            else{
                b[x]=a[k];
            }
        }
        else{//页面在内存块中,将其放到队尾,它后面的向前移动
            temp=a[k];
            for(h;h<storagenum-1;h++)
            {
                b[h]=b[h+1];
            }
            b[h-1]=temp;
        }
                    //进行打印输出
        printf("访问页面为%d\n",a[k]);
        printf("内存块的顺序为:");
        for(int r=0;r<storagenum;r++){
            printf("%d",b[r]);
        }
printf("\n");
    }
    printf("\n");
    queyelv=(float)queyenum/pagenum;
    printf("缺页率为%.2f",queyelv);
}

int main(){
    lru();
}

结果如下图:
在这里插入图片描述

操作系统页面调度算法 操作系统实验 页面调度算法 阅读详情

相关推荐

用最近最少用(LRU)页面调度算法处理缺页中断。

用最近最少用(LRU)页面调度算法处理缺页中断。 (1) 在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用LRU页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表中对应页的标志。 (2) LRU页面调度算法总是淘汰该作业中距现在最久没有访问过的那一页,因此可以用一个数...

weixin_44029199的博客 3983

大厂面试爱问的「调度算法」,20 张图一举拿下

前言最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察...

程序员吴师兄的博客 1087

OPT,LRU,FIFO页面置换算法python实现

实验三 请求页式存储管理中常用页面置换算法模拟 【开发语言及实现平台或实验环境】 C++/C# Microsoft Visual Studio 6.0/ Microsoft Visual Studio .NET 2003 【实验目的】 (1)了解内存分页管理策略 (2)掌握调页策略 (3)掌握一般常用的调度算法 (4)学会各种存储分配算法的实现方法。 (5)了解页面大小和内存实际容量对命中率的影响...

sdm12345的博客 6002

页面调度fifo算法c语言,用c++写的 操作系统 页面调度算法 FIFO,LRU,CLOCK

#include#include#include#include#includeusing namespace std;struct frame{int page[8];int count;public:frame(){for(int i=0;i<8;i++){page[i]=-1;}count=0;}bool full(){return count==8;}void print(){int...

weixin_36265507的博客 1029

模拟页面调度算法的代码

模拟页面调度算法的代码 模拟页式存储管理中的硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理

RK3588部署rtmpose模型

摘要: 本文详细介绍了在RK3588开发板上部署RTMPose模型的全流程。首先在Ubuntu环境中搭建MMCV框架,通过MMPose工具将PTH模型转换为ONNX格式。随后使用RKNN-Toolkit2将ONNX模型转换为RKNN格式,并完成开发板部署。关键步骤包括模型转换(PTH→ONNX→RKNN)、环境配置和推理验证,最终实现人体姿态估计功能。整个过程涉及MMPose、RKNN-Toolkit等工具链的使用,为边缘计算场景下的实时姿态分析提供了可行方案。

qq_44224801的博客 1221

页面调度算法FIFO LRU LFU NUR OPT

设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率. 最佳淘汰算法(OPT) 先进先出的算法(FIFO) 最近最久未使用算法(LRU) 最不经常使用算法(LFU) 最近未使用算法(NUR) 命中率=1-页面失效次数/页地址流长度 首先用 srand( )和 rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算 法计算出相应的命中率。 通过随机数产生一个指令序列,共 320 条指令.指令的地址按下述原则生成: 50%的指令是顺序执行的 25%的指令是均匀分布

qq_45784099的博客 2399

手把手教你配置SAP EWM HU类型及号段分配(含常见错误排查)

本文详细介绍了SAP EWM系统中HU类型及号段分配的配置方法,包括环境准备、包材主数据配置、存储类型关联及号段管理。通过实战案例和常见错误排查,帮助用户高效完成HU配置,提升仓储管理效率。重点讲解了EWM后台配置和号段配置的关键步骤与技巧。

weixin_33670786的博客 443

LRU调度算法

LRU:Least Recently Used 中文名:最近最久未使用调度算法 定义 什么是LRU? 它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。 基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据,就是最近最

weixin_47700137的博客 2793

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析 目前,迭代法和强度传输方程(TIE)法是两类典型的非干涉相位检索技术(Phase Retrieval,被称为相位恢复、相位检索、相位反演法、相位复原等)。迭代法中的经典算法是Gerchberg-Saxton(GS),随后,出现了包括错误减少算法(ER)、混合输入输出法(HIO)、梯度搜索算法、角谱迭代算法等改进算法。...

简单光学 2万+

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5323

页面转换算法实现(C语言)

5种页面置换算法的简单实现 页面置换算法 OPT 最佳置换算法 缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问); 优点:最佳置换算法可以保证获得最低的缺页率,性能最好 void opt() //最佳转换算法,往后查找 { printf("--------------------------------\n"); printf("现在执行的是最佳置换算法opt:\n"); memset(arr, -1, sizeof(a

codeslogan 1840

6.3 节深度拆解:Hermes Agent 多 Agent 协同执行链路的 4 层设计逻辑

拆解 Hermes 多 Agent 协同的 4 层工程化设计(协议层、编排层、执行层、适配层),聚焦协议层的强约束消息 Schema 如何解决 Agent 间语义不一致问题,并提供 `soul.md` 配置、GLM-4.7Flash 结构化输出验证及 v0.13.0/v0.14.0 版本实操避坑指南

weixin_42520239的博客 123

操作系统请求调页c语言代码,操作系统课程设计-页面置换算法C语言.doc

操作系统课程设计-页面置换算法C语言.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。文档包含非法信息?点此举报后获取现金奖励!下载文档到电脑,查找使用更方便15积分还剩页未读,继...

weixin_42303723的博客 720

16、树莓派Pico W:蓝牙与Wi-Fi应用指南

本文介绍了树莓派Pico W在蓝牙与Wi-Fi通信方面的应用,涵盖蓝牙配对原理、使用HC-06模块实现手机远程控制LED和传输内部温度,以及通过Wi-Fi进行网络连接、扫描和UDP协议下的设备控制。文章包含详细电路连接、代码实现与测试步骤,并提供拓展建议、常见问题解决方法及开发注意事项,帮助读者快速掌握基于Pico W的无线通信项目开发,适用于物联网入门与实践场景。

sun99的博客 290

基于YOLOv8的端面小目标计数解决方案: 多头检测器+小缺陷到大缺陷一网打尽的GiraffeDet+Wasserstein Distance Loss | 助力工业小目标缺陷检测

端面小目标计数部署解决方案 | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.936提升至0.955

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1955

LRU置换算法

LRU置换算法 1、实践内容说明 已知系统为一进程分配的物理块数,进程运行过程中引用的页面号,编程使用LRU算法输出置换的页号、缺页中断次数及缺页率。 2.算法描述 1、从内存调出一页程序或数据到磁盘的对换区,把选择换出的页面的算法称为页面置换算法。 2、置换算法的好坏将直接影响系统的性能。 LRU置换算法(基于计数器法)是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最久未使用的

WUHU648的博客 2075

无人机视角下基于YOLOv5/v8/v10的车辆检测系统:从算法原理到UI界面实战

随着无人机技术的普及和智慧城市的发展,无人机视角下的车辆检测在交通监控、战场侦察、灾害救援等领域展现出巨大的应用价值。然而,无人机航拍图像存在目标尺度小、视角多变、背景复杂等挑战。本文深入探讨了如何利用YOLOv5、YOLOv8、YOLOv10三个代表性目标检测算法,构建一套完整的无人机车辆检测系统。文章不仅详细解析了各版本YOLO的核心技术演进,还提供了从数据集准备、模型训练、性能评估到基于PyQt5/PySide6的图形界面开发的完整代码实现。通过本文,读者将能够掌握构建无人机实时车辆检测系统的全流程技

YOLO 172

最近最久未使用调度算法

/*最近最久未使用调度算法*/ #include #include #define N 100 int Butter[N]={-1}; void Change(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void Moving(int * piror){     while(*piror!=-1){ Change(*p

梦想之深邃 1981

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

操作系统实验六——先进先出算法FIFO、最佳淘汰算法OPT、最近最久未被使用算法LRU

操作系统之页面调度算法实验

qq_63052532的博客 2951

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最近最久未使用页面置换算法C语言,LRU页面置换算法模拟-最近最久未使用置换算法...

LRU页面置换算法模拟-最近最久未使用置换算法LRU页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计一、设计目的1、用C语言实现最近最久未使用(LRU)置换算法。2、了解内存分页管理策略3、掌握调页策略4、掌握一般常用的调度算法5、选取调度算法中的典型算法,模拟实现二、设计任务在Window98/2000 系统的TC2.0环境下运行程序;通过从一般常用的调页算法中选取典型算...

weixin_32578161的博客 4307

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

计算机操作系统实验:页面置换算法的实现

本实验的目的是通过编程模拟不同的页面置换算法,比较它们的缺页率和命中率,加深对操作系统内存管理的理解。本实验采用C语言编写,实现了最佳置换算法(OPT)、先进先出置换算法(FIFO)和最近最久未使用算法(LRU)。实验中,页面号引用串从文本文件中读取,输出每次访问页面时内存中的页面情况,以及最终的缺页次数、缺页率和命中率。本文档将介绍实验的设计思路、流程图、代码和运行结果。

m0_72471315的博客 2万+

三种页面置换算法c语言代码_调度算法

前言最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。正文进程调度算法 进程调度算法也称 CPU 调度...

weixin_39530833的博客 2765

最近最久未使用页面置换算法C语言,LRU页面置换算法模拟(最近最久未使用置换算法)【精品-doc】.doc...

LRU页面置换算法模拟(最近最久未使用置换算法)【精品-doc】LRU页面置换算法模拟(最近最久未使用置换算法)一、设计目的1、用C语言实现最近最久未使用(LRU)置换算法。2、了解内存分页管理策略3、掌握调页策略4、掌握一般常用的调度算法5、选取调度算法中的典型算法,模拟实现?二、设计任务在Window98/2000 系统的TC2.0环境下运行程序;通过从一般常用的调页算法中选取典型算法LRU,...

weixin_34297395的博客 637

页面置换算法c语言代码 利用队列实现,页面置换算法(页面置换算法例题详解)...

收藏推荐 在多道程序的正常运行过程中,属于不同进程的页面被分散存放在主存页框. 如内存已无空闲页框,缺页中断服务程序就会调用页面置换算法,页面置换算法的目.最佳置换法(OPT)三种置换算法模拟页面置换过程并计算其缺页率并分析结。//熬夜弄出来的,记得加分哦#includevoid Print(int bc[],int blockCount) { for(. void FIFO(int pc[],...

weixin_35645077的博客 3095

c语言页面调度lru,python模拟页面调度LRU算法

所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。这个题为京东2015年笔试考题,主要考察对LRU算法的理解代码如下n = int(input())def LRU(pages, maxNum):temp = []times = 0fo...

weixin_39695490的博客 607
下一篇: JavaScript实现倒计时
_乐颜
博客等级 码龄7年 15粉丝 28原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值