操作系统LRU算法(最近最少使用算法)

简介: 操作系统LRU算法(最近最少使用算法)

操作系统LRU算法(最近最少使用算法)

提交代码

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class Main {
    public Main() {
    }
    static void upData(HashMap<Integer, Integer> map, int num) {
        Iterator var2 = map.keySet().iterator();
        while(var2.hasNext()) {
            Integer i = (Integer)var2.next();
            if (num != i) {
                map.put(i, (Integer)map.get(i) + 1);
            }
        }
    }
    static void delete(HashMap<Integer, Integer> map) {
        Pair t = null;
        boolean flag = false;
        Iterator var3 = map.keySet().iterator();
        while(var3.hasNext()) {
            Integer i = (Integer)var3.next();
            if (!flag) {
                t = new Pair(i, (Integer)map.get(i));
                flag = true;
            } else if (t.priortiy < (Integer)map.get(i)) {
                t = new Pair(i, (Integer)map.get(i));
            }
        }
        map.remove(t.num);
    }
    static void Travse(HashMap<Integer, Integer> map) {
        Iterator var1 = map.keySet().iterator();
        while(var1.hasNext()) {
            Integer i = (Integer)var1.next();
            System.out.print(i + " " + map.get(i) + " || ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("输入页面数:");
        int numPage = in.nextInt();
        System.out.println("输入内存数:");
        int numMemory = in.nextInt();
        System.out.println("输入内存:");
        int cnt = 0;
        Map<Integer, Integer> map = new HashMap();
        int[] a = new int[numPage + 10];
        for(int i = 0; i < numPage; ++i) {
            int num = in.nextInt();
            if (map.size() < numMemory) {
                if (!map.containsKey(num)) {
                    ++cnt;
                }
                map.put(num, 0);
                upData((HashMap)map, num);
            } else if (!map.containsKey(num)) {
                map.put(num, 0);
                upData((HashMap)map, num);
                delete((HashMap)map);
                ++cnt;
            } else {
                map.put(num, 0);
                upData((HashMap)map, num);
            }
        }
        System.out.printf("F' = %.1f%%", (double)cnt / (double)numPage * 100.0D);
    }
}
相关文章
|
算法 调度 UED
探索操作系统的心脏:调度算法的奥秘与影响
【10月更文挑战第9天】 本文深入探讨了操作系统中至关重要的组件——调度算法,它如同人体的心脏,维持着系统资源的有序流动和任务的高效执行。我们将揭开调度算法的神秘面纱,从基本概念到实际应用,全面剖析其在操作系统中的核心地位,以及如何通过优化调度算法来提升系统性能。
|
7月前
|
人工智能 算法 NoSQL
LRU算法的Java实现
LRU(Least Recently Used)算法用于淘汰最近最少使用的数据,常应用于内存管理策略中。在Redis中,通过`maxmemory-policy`配置实现不同淘汰策略,如`allkeys-lru`和`volatile-lru`等,采用采样方式近似LRU以优化性能。Java中可通过`LinkedHashMap`轻松实现LRUCache,利用其`accessOrder`特性和`removeEldestEntry`方法完成缓存淘汰逻辑,代码简洁高效。
318 0
|
算法 调度 Python
深入理解操作系统中的进程调度算法
在操作系统中,进程调度是核心任务之一,它决定了哪个进程将获得CPU的使用权。本文通过浅显易懂的语言和生动的比喻,带领读者了解进程调度算法的重要性及其工作原理,同时提供代码示例帮助理解。
|
6月前
|
缓存 人工智能 算法
lru算法设计与实现
本文详细介绍了LRU(Least Recently Used,最近最少使用)缓存淘汰策略的原理与实现。LRU的核心思想是:越近被访问的数据,未来被再次访问的可能性越大。文章通过Java语言实现了一个支持O(1)时间复杂度操作的LRU缓存
315 0
|
机器学习/深度学习 算法 物联网
探究操作系统的心脏:调度算法的演变与优化
本文旨在深入探讨操作系统中核心组件——调度算法的发展脉络与优化策略。通过分析从单任务到多任务、实时系统的演进过程,揭示调度算法如何作为系统性能瓶颈的解决关键,以及在云计算和物联网新兴领域中的应用前景。不同于传统摘要,本文将注重于概念阐释与实例分析相结合,为读者提供直观且全面的理解视角。
|
算法 大数据 Linux
深入理解操作系统之进程调度算法
【10月更文挑战第24天】本文旨在通过浅显易懂的语言,带领读者深入了解操作系统中的进程调度算法。我们将从进程的基本概念出发,逐步解析进程调度的目的、重要性以及常见的几种调度算法。文章将通过比喻和实例,使复杂的技术内容变得生动有趣,帮助读者建立对操作系统进程调度机制的清晰认识。最后,我们还将探讨这些调度算法在现代操作系统中的应用和发展趋势。
|
人工智能 算法 大数据
探究操作系统的心脏:调度算法的进化与影响
本文深入探讨了操作系统中核心组件——调度算法的发展及其对系统性能的影响。通过分析先来先服务、短作业优先、时间片轮转等传统调度算法,阐述了它们的原理和优缺点。同时,讨论了现代调度算法如多级队列和优先级调度在提高系统响应速度和处理能力方面的作用。文章还探讨了实时系统中的调度挑战,以及如何通过优化调度策略来满足不同应用场景下的性能需求。
|
算法 调度 UED
深入理解操作系统的进程调度算法
【10月更文挑战第7天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。它不仅影响系统的性能和用户体验,还直接关系到资源的合理分配。本文将通过浅显易懂的语言和生动的比喻,带你一探进程调度的秘密花园,从最简单的先来先服务到复杂的多级反馈队列,我们将一起见证算法如何在微观世界里编织宏观世界的和谐乐章。
|
算法 调度 UED
探索操作系统的心脏:进程调度算法
【9月更文挑战第32天】在数字世界的每一次心跳中,都隐藏着一个不为人知的英雄——进程调度算法。它默默地在后台运作,确保我们的命令得到快速响应,应用程序平稳运行。本文将带你走进操作系统的核心,一探进程调度的奥秘,并通过代码示例揭示其背后的智慧。准备好跟随我一起深入这趟技术之旅了吗?让我们开始吧!
|
边缘计算 算法 调度
探究操作系统的心脏:调度算法的进化与影响
【10月更文挑战第2天】 本文深入探讨了操作系统中核心组件——调度算法的历史演变、关键技术突破及其对现代计算的影响。通过详细回顾从单任务到多任务、实时系统及分布式计算环境下调度算法的发展,文章揭示了这些算法如何塑造我们的数字世界,并对未来的趋势进行了展望。不同于传统的摘要,本文特别聚焦于技术细节与实际应用的结合点,为读者提供一幅清晰的技术演进蓝图。
220 4

推荐镜像

更多