缓存淘汰算法(LFU LRU FIFO)及进程的状态和转换

news2024/10/6 8:34:34

目录

一、缓存淘汰算法

1.LFU(Least Frequently Used)最近最不常用算法

2.LRU(Least Recently User)最近最少使用算法

3.FIFO(First in first out)先进先出算法

二、进程的状态和转换

1.最基本的三种状态

2.三种状态的切换(重点)

3.新增的进程状态(五态)

 4.新增状态(七态)

5.挂起进程具有的特征


一、缓存淘汰算法

缓存算法用于决定缓存系统中哪些数据应该被删去。

1.LFU(Least Frequently Used)最近最不常用算法

主要思想:把使用频率最小的数据置换出去。

主要步骤

  1. 在缓存中查找需要的数据,如果缓存中有则将访问的数据从队列中取出,并将数据对应的频率计数加1,然后将其放到频率相同的数据队列的头部。
  2. 如果缓存中没有将需要访问的数据从磁盘中取出,加入到缓存队列的尾部,记频率为1。
  3. 如果缓存空间已满,淘汰尾部使用频率最低的数据。

举例

ABCD为数据,括号内是被使用的次数

初始状态:

访问D后(访问次数加一,并排在相同次数最前):

新增E后:

缓存满时(淘汰次数最少的E):

存在的问题

对于A而言,可能他在最开始某段时间集中被频繁地访问。但可能之后不会再被访问了,但由于他的次数远远大于其他数据,这使得它不会被轻易地淘汰。

对于E而言,可能他才刚刚被访问了第一次,后面可能会被频繁的访问。但由于他的次数只有一次,每次缓存满时都会先被淘汰。

2.LRU(Least Recently User)最近最少使用算法

主要思想:把最长时间未被访问到的数据置换出去。

主要步骤

  1. 在缓存中查找客户端需要访问的数据。如果缓存中有,则将访问的数据从队列中取出,重新加入到缓存队列的头部。
  2. 如果缓存中没有,将需要访问的数据从磁盘中取出,加入到缓存队列的尾部;
  3. 如果此时缓存满了,淘汰队列尾部的数据,然后再在队列头部加入新数据。

 举例

初始状态:

 访问D后:

 新加E时缓存满了:

 

存在的问题

当客户端需要大量访问历史数据时,这时历史数据被提到队头,其他数据可能会因为缓存满而舍弃。这时其他客户端想要访问其他数据时又会重新到磁盘访问,效率大大降低。

3.FIFO(First in first out)先进先出算法

主要思想:最先进入的数据最先被淘汰

主要步骤

  1.  当缓存中有访问的数据时,直接访问不做任何处理。
  2. 缓存中没有时,读取磁盘将数据写入队列队头。
  3. 缓存满时直接淘汰最早进入的数据。

举例

初始状态:

 访问C时(依然不做任何操作):

 新加E时缓存满:

 存在的问题

可能最先进入的数据是经常被访问的界面,这样操作会降低效率。

二、进程的状态和转换

1.最基本的三种状态

①运行态:进程当前占有CPU,并在CPU上运行。

②就绪态:一个进程已经具备运行条件,但没有分配CPU,暂时不能运行。当调度给该进程CPU时,立即可以运行。

③等待态:当前进程因等待某事件的发生而暂时不能运行的状态。即使这时CPU空闲也不能运行。

2.三种状态的切换(重点)

就绪——>运行:在调度程序时,一旦调度到这个进程时,就发生这件事。

运行——>就绪:运行进程用完了CPU分给他的时间片(分时操作系统分配给每个运行的进程微观上的一段时间)或CPU处理机被抢占。

运行——>等待:这个进程对资源的访问得不到满足 或者初始化I/O操作等待结果 或者等待某一进程提供输入

等待——>就绪:等待的事情得到满足时执行。

3.新增的进程状态(五态)

新建态:因为就绪态也是需要一个过程才能达到这样一个状态,就绪态之前的状态就为新建态。

终止态:最后对进程整个生命周期进行一个收尾。

 4.新增状态(七态)

等待态→挂起等待态:操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。

挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。

就绪态→挂起就绪态:操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。

挂起等待态→等待态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。

运行态→挂起就绪态:当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占 CPU,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己。

新建态→挂起就绪态:考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。

挂起进程等同于不在内存中的进程,因此挂起进程将不参与低级调度直到它们被调换进内存。

5.挂起进程具有的特征

  • 该进程不能立即被执行
  • 挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 (等待事件结束后进程变为挂起就绪态)
  • 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。
  • 结束进程挂起状态的命令只能通过操作系统或父进程发出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/882858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Mac系统android monitor启动时卡住,显示白屏的问题

一.启动环境 清安装1.8版本的jdk,java1.8版本以上不支持android monitor;如果你电脑上安装有java 11等高级别的版本,请自行搜索,如果在mac上安装多jdk,以及如何切换到1.8版本上 二.解决方案 请更新SWT插件&#xff…

x86架构芯片启动过程分析

1、上电启动顺序 上电自检 读取ROM里的bios程序 bios程序会进行硬件检测,比如:内存、硬盘、显卡等 bios完成自检后,需要选择引导设备。比如设备上有U盘、SSD、eMMC、机械硬盘,bios需要知道从哪个启动介质去启动计算机 bios操作界面…

资料分析(四)—— 倍数、比重、平均数

倍数 现期倍数 (A是B的几倍): 多几倍 1 增长率 1 增长倍数(A比B多几倍): - 1 是几倍 - 1 增长率(增长几倍) 超过倍数(A超过B的 n 倍):A …

数据库--MySQL三大范式、多表查询、函数sql

数据库相关链接: 数据库基础操作--增删改查:http://t.csdn.cn/189CF 数据库--数据类型:http://t.csdn.cn/NnBsY​​​​​​​ 数据库--SQL关键字的执行顺序: http://t.csdn.cn/MoJ4i 一、什么是范式? 范式是数据库…

Android Settings 无障碍设置显示大小页面重复加载问题

基于Android 11,跟踪源码 显示大小页面 packages/apps/Settings/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java 通过commit() 提交更新页面显示大小。该方法是是在其父类PreviewSeekBarPreferenceFragment 实现调用。 基类预览滑动进度…

Vue-6.创建Vue项目

使用预设默认配置创建Vue项目 创建一个简单的 Vue 项目需要使用 Vue CLI(命令行界面)。Vue CLI 是一个用于快速构建 Vue.js 项目的工具,它可以帮助你设置项目的基本结构、配置以及开发环境。 以下是创建一个简单的 Vue 项目的步骤&#xff…

机器学习基础之《分类算法(1)—sklearn转换器和估计器》

一、转换器 1、什么是转换器 之前做特征工程的步骤: (1)第一步就是实例化了一个转换器类(Transformer) (2)第二步就是调用fit_transform,进行数据的转换 2、我们把特征工程的接口称…

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法。 在查看maven的环境配置和idea的maven配置后,发现是idea 2020版本和maven 3.9.3版本的兼容性问题。在更改为Idea自带的maven 3.6.1版本后问题解决,能成功下载jar包…

个人对哈希数据结构学习总结 -- 实践篇 -- 上

个人对哈希数据结构学习总结 -- 实践篇 -- 上 引言最佳实践Java篇HashMapgetput扩容 ConcurrentHashMapgetput扩容协作扩容读为什么可以不加锁? ThreadLocalMapgetput扩容delete为什么遍历到null桶就可以判断key不存在?ThreadLocalMap为什么不需要锁&…

【uniapp】picker mode=“region“ 最简单的省市区 三级联动

省市区 picker template <picker mode"region" :value"date" class"u-w-440" change"bindTimeChange"><u--inputborder"bottom"class"u-fb u-f-s-28"placeholder"请选择省市区"type"te…

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

ARM04cortex-A7核LED灯实验

文章目录 一、核心板二、扩展板二、硬件术语2.1 原理图2.2 PCB板2.3 丝印2.4 网络编号 三、分析电路图3.1 思路3.2 总结3.3 工作原理 实验目的&#xff1a;实现LED1/LED2/LED3三盏灯工作 一、核心板 二、扩展板 二、硬件术语 2.1 原理图 原理图是用来描述PCB板子上各个硬件连接…

深入理解epoll

文章目录 概述1. epoll_create - 创建一个epoll实例2. epoll_ctl - 控制epoll实例的事件结构体介绍events取值&#xff1a;data&#xff1a; 联合体&#xff08;共用体&#xff09;&#xff1a; 3. epoll_wait - 等待事件发生伪代码总结 概述 在网络编程中&#xff0c;高效地处…

2023 年牛客多校第九场题解

B Semi-Puzzle: Brain Storm 题意&#xff1a;给定 a , m a,m a,m&#xff0c;构造一个非负整数 u u u&#xff0c;使得 a u ≡ u ( m o d m ) a^u \equiv u \pmod m au≡u(modm)。 1 ≤ a < m ≤ 1 0 9 1 \le a<m \le 10^9 1≤a<m≤109&#xff0c; 0 ≤ u ≤ 1 …

Elasticsearch:如何在 Ubuntu 上安装多个节点的 Elasticsearch 集群 - 8.x

Elasticsearch 是一个强大且可扩展的搜索和分析引擎&#xff0c;可用于索引和搜索大量数据。 Elasticsearch 通常用于集群环境中&#xff0c;以提高性能、提供高可用性并实现数据冗余。 在本文中&#xff0c;我们将讨论如何在 Ubuntu 20.04 上安装和配置具有多节点集群的 Elast…

centos7安装protobuf|序列化和反序列化工具

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/categ…

如何利用视频监控与AI智能识别技术实现铁塔基站机房无人值守?

一、项目背景 很多通信铁塔和机房类项目&#xff0c;都呈现高密度、网格化分布的特点&#xff0c;铁塔基站大多都分布在公路边、高山、野外等区域&#xff0c;巡检难度大&#xff0c;维护效率低&#xff1b;基站设备众多且监控方式单一&#xff0c;而且时刻面临着非法闯入、被…

linux学习(进程替换)[10]

创建子进程 fork()创建子进程进行替换&#xff0c;不影响父进程&#xff0c;父进程聚焦在&#xff1a;读取数据、解析数据、指派进程、执行代码的功能。 子进程发生替换后的数据 在加载新程序进去之前&#xff0c;父子之间的的代码是共享的&#xff0c;数据写时拷贝进子进程…

Webshell实例分析解析

Webshell的实例分析 LD_PRELOAD的劫持在 web 环境中实现基于 LD_PRELOAD 的 RCE 命令执行利用 mail 函数启动新进程 绕过不含字母和数字的Webshell异或取反 LD_PRELOAD的劫持 LD_PRELOAD是Linux/Unix系统的一个环境变量&#xff0c;它影响程序的运行时的链接&#xff08;Runti…

ATF bl1 ufshc_dme_get/set处理流程分析

ATF bl1 ufshc_dme_get/set处理流程分析 UFS术语缩略词1 ATF的下载链接2 ATF BL1 ufshc_dme_get/set流程3 ufs总体架构图3.1 UFS Top Level Architecture3.2 UFS System Model 4 ufshc_dme_get/set函数接口详细分析4.1 ufshc_dme_get4.2 ufshc_dme_set4.3 ufshc_send_uic_cmd4.…