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

目录

一、缓存淘汰算法

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.mzph.cn/news/38518.shtml

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

相关文章

OpenCV图像处理——模版匹配和霍夫变换

目录 模版匹配原理实现 霍夫变换霍夫线检测 模版匹配 原理 实现 rescv.matchTemplate(img,template,method)import numpy as np import cv2 as cv import matplotlib.pyplot as pltimgcv.imread(./汪学长的随堂资料/6/模板匹配/lena.jpg) templatecv.imread(./汪学长的随堂资…

使用chatGPT-4 畅聊量子物理学(三)

集合了人类智慧的照片,来自 1927 年举行的第五届索尔维国际会议。 Omer 什么是“物理系统在被测量之前不具有确定的属性。量子力学只能预测给定测量的可能结果的概率分布" ChatGPT 这句话描述了量子力学中的一种基本原则,即“物理系统在被测量之前…

世微AP2813 平均电流双路降压恒流驱动器 LED储能电源驱动指示灯IC 可恒流可爆闪 可双路恒流

产品描述 AP2813 是一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于 5-80V 输入的高精度降压 LED 恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流 1.2A。AP2813 一路直亮,另外一路通过 MODE1 切换全亮,爆闪…

利用OpenCV光流算法实现视频特征点跟踪

光流简介 光流(optical flow)是运动物体在观察成像平面上的像素运动的瞬时速度。光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。…

大模型PEFT技术原理(二):P-Tuning、P-Tuning v2

随着预训练模型的参数越来越大,尤其是175B参数大小的GPT3发布以来,让很多中小公司和个人研究员对于大模型的全量微调望而却步,近年来研究者们提出了各种各样的参数高效迁移学习方法(Parameter-efficient Transfer Learning&#x…

css鼠标样式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止选择 user-select: none; pointer-events:none;禁止触发事件, 该样式会阻止默认事件的发生,但鼠标样式会变成箭头

Hlang社区-前端社区宣传首页实现

文章目录 前言页面结构固定钉头部轮播JS特效完整代码总结前言 这里的话,博主其实也是今年参与考研的大军之一,所以的话,是抽空去完成这个项目的,当然这个项目的肯定是可以在较短的时间内完成的。 那么废话不多说,昨天也是干到1点多,把这个首页写出来了。先看看看效果吧:…

断点续传的未来发展趋势与前景展望

断点续传是一种在网络传输中断后,能够从中断的位置继续传输的技术。它可以有效地避免因为网络不稳定、服务器故障、用户操作等原因导致的传输失败,节省了用户的时间和流量,提高了传输的效率和可靠性。断点续传在很多场景中都有广泛的应用&…

AI 绘画Stable Diffusion 研究(八)sd采样方法详解

大家好,我是风雨无阻。 本文适合人群: 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何选用合适采样器以进一步提高出图质量的朋友。 想要进一步了解AI绘图基本原理的朋友。 对stable diffusion AI绘图感兴趣的朋…

手撕LFU缓存

手撕LRU缓存_右大臣的博客-CSDN博客 是LRU的升级,多了一个访问次数的维度 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键 key 存在于缓存中,则获取键的值,否则返…

vue3+vite配置vantUI主题

❓在项目中统一配置UI主题色,各个组件配色统一修改 vantUI按需安装 参考vantUI文档 创建vantVar.less文件夹进行样式编写 vantVar.less :root:root{//导航--van-nav-bar-height: 44px;//按钮--van-button-primary-color: #ffffff;--van-button-primary-backgr…

linux——mysql的高可用MHA

目录 一、概述 一、概念 二、组成 三、特点 四、工作原理 二、案例 三、构建MHA 一、基础环境 二、ssh免密登录 三、主从复制 master slave1 四、MHA安装 一、环境 二、安装node 三、安装manager 一、概述 一、概念 MHA(MasterHigh Availability&a…

力扣 198. 打家劫舍

题目来源:https://leetcode.cn/problems/house-robber/description/ C题解:因为是间接偷窃,所以偷nums[i]家前,一定偷过第i-2或者i-3家,因为i-1不能偷。 例如12345共5家,先偷第1家,那么2不能偷…

(三)Unity开发Vision Pro——入门

3.入门 1.入门 本节涵盖了几个重要主题,可帮助您加快visionOS 平台开发速度。在这里,您将找到构建第一个 Unity PolySpatial XR 应用程序的分步指南的链接,以及 PolySpatial XR 开发时的一些开发最佳实践。 2.开发与迭代 有关先决条件、开…

显卡nvidia-smi后 提示Faild 解决过程,包含卸载重装NVIDIA驱动步骤

显卡异常: 显卡nvidia-smi后 提示Faild 解决过程,卸载重装nvidia驱动步骤 文章目录 显卡异常: 显卡nvidia-smi后 提示Faild 解决过程,卸载重装nvidia驱动步骤 [toc]1 缘由2 解决过程3 过程所需命令4 解决4.1 把该显卡重新拔插一下卸载NVIDIA驱动的方法&a…

Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合

文章目录 如何利用pytorch创建一个简单的网络模型?Step1. 感知机,多层感知机(MLP)的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…

SpringBoot整合Minio

SpringBoot整合Minio 在企业开发中&#xff0c;我们经常会使用到文件存储的业务&#xff0c;Minio就是一个不错的文件存储工具&#xff0c;下面我们来看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot项目所依赖的软件工具包 <?xml version"1.0" …

DaVinci Resolve Studio 18 for Mac 达芬奇调色

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件&#xff0c;适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能&#xff0c;包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点&#xff1a; - 提供了全面的视…

Jmeter-压测时接口按照顺序执行-临界部分控制器

文章目录 临界部分控制器存在问题 临界部分控制器 在进行压力测试时&#xff0c;需要按照顺序进行压测&#xff0c;比如按照接口1、接口2、接口3、接口4 进行执行 查询结果是很混乱的&#xff0c;如果请求次数少&#xff0c;可能会按照顺序执行&#xff0c;但是随着次数增加&a…

Python-OpenCV中的图像处理-模板匹配

Python-OpenCV中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…