cache调度算法

news/2024/7/1 22:13:16 标签: 算法, cache, 存储, algorithm, random, 磁盘
在虚拟存储器中,当发生页面失效时,需要从磁盘存储器中调入一页(或一段)到主存储器中。在段式和段页式虚拟存储器中,由于多用户虚页数比主存储器的实 页数要多得多。在段式虚拟存储器中,虚存空间中能容纳的程序段数要比主存空间中能存放的相同长度的程序段数多得多。因此,必然会出现当主存中所有页面都已 经被占用,或者所有主存空间都已经被占用,而又要从磁盘存储器中调入新页的情况。这时,必须从主存储器中淘汰掉一个不常用的页面,以便腾出主存空间来存放 新调入的页面。那么,按照什么样的规则替换主存储器中的页面呢?这就是页面替换算法要解决的问题。
  以下,为了叙述方便,主要介绍页式和段页式虚拟存储器中的页面替换算法及其实现方法,在这两种虚拟存储器中都是以页面为单位进行调度的。而段式虚拟存储器是以程序段为单位进行调度的,但是它所采用的替换算法算法的实现方法都是相同的。
  
评价一个页面替换算法好坏的标准主要有两个,一是命中率要高,二是算法要容易实现。要提高一个页面替换算法的命中率,首先要使这种算法能正确反映程序的局部性,其次是这种算法要能够充分利用主存中页面调度情况的历史信息,或者能够预测主存中将要发生的页面调度情况。
  页面替换算法主要用于如下几个地方:
  (1) 虚拟存储器中,主存页面(或程序段)的替换。
  (2) Cache中的块替换。
  (3) 虚拟存储器的快慢表中,快表的替换。
  (4) 虚拟存储器中,用户基地址寄存器的替换。
  在虚拟存储器中常用的页面替换算法有如下几种:
  (1) 随机算法,即RAND算法(Random algorithm)。利用软件或硬件的随机数发生器来确定主存储器中被替换的页面。这种算法最简单,而且容易实现。但是,这种算法完全没有利用主存储器中页面调度情况的历史信息,也没有反映程序的局部性,所以命中率比较低。
  (2) 先进先出算法,即FIFO算法(First-In First-Out algorithm)。这种算法选择最先调入主存储器的页面作为被替换的页面。它的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,没有反映程序的局部性。因为最先调入主存的页面,很可能也是经常要使用的页面。
  (3) 近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。这种算法选择近期最少访问的页面作为被替换的页面。显然,这是一种非常合理的算法因为到目前为止最少使用的页面,很可能也是将来最少访问的页面。该算法既 充分利用了主存中页面调度情况的历史信息,又正确反映了程序的局部性。但是,这种算法实现起来非常困难,它要为每个页面设置一个很长的计数器,并且要选择 一个固定的时钟为每个计数器定时计数。在选择被替换页面时,要从所有计数器中找出一个计数值最大的计数器。因此,通常采用如下一种相对比较简单的方法。
  (4) 最久没有使用算法,即LRU算法(Least Recently Used algorithm)。这种算法把近期最久没有被访问过的页面作为被替换的页面。它把LFU算法中要记录数量上的"多"与"少"简化成判断"有"与"无",因此,实现起来比较容易。
  (5) 最优替换算法,即OPT算法(OPTimal replacement algorithm)。上 面介绍的几种页面替换算法主要是以主存储器中页面调度情况的历史信息为依据的,它假设将来主存储器中的页面调度情况与过去一段时间内主存储器中的页面调度 情况是相同的。显然,这种假设不总是正确的。最好的算法应该是选择将来最久不被访问的页面作为被替换的页面,这种替换算法的命中率一定是最高的,它就是最 优替换算法
  要实现OPT算法,唯一的办法是让程序先执行一遍,记录下实际的页地址流情况。根据这个页地址流才能找出当前要被替换的页面。显然,这样做是不现实 的。因此,OPT算法只是一种理想化的算法,然而,它也是一种很有用的算法。实际上,经常把这种算法用来作为评价其它页面替换算法好坏的标准。在其它条件 相同的情况下,哪一种页面替换算法的命中率与OPT算法最接近,那么,它就是一种比较好的页面替换算法

(注:转载)

http://www.niftyadmin.cn/n/1534997.html

相关文章

15、shell编程—定义有类型变量

文章目录1.declare typeset2.命令参数表3.实例1.declare typeset declare 和 typeset 命令是等价的 2.命令参数表 参数含义-r将参数设置为只读变量-i将参数设置为整数-a将参数设置为数组-x将变量声明为环境变量 3.实例 declare -i num num"haha" echo $num num50…

13-Linux-gpio-system

对于gpio的应用其实会在很多地方,最常用的就是led和key,我们也可以使用类似单片机的写法,去直接读写寄存器来控制,没有文件的体现,但这样总感觉不够Linux,所以我们还是要使用linux已有的一些设备节点来实现…

16、shell编程—实战:计算输入正整数的和

#!/usr/bin/env bashwhile true doread -p "请输入对应的数字:" num# 第一步判断是否是整数sum0expr $num 1 &> /dev/null# echo "获取的结果为:$?"if [ $? -eq 0 ]; thenif [ expr $num \> 0 -eq 1 ]; thenfor (( VAR 0; VAR &l…

mysql分页查询-limit

分页查询的sql: select * from table limit 4,10; 4表示查询的索引,索引是从0开始,4表示从第五条数据开始查询,10表示要查询多少条数据,10表示查询十条数据 如果从0开始也可以这么写: select * from table …

cache和write buffer读写算法

Cache是一种容量小、速度快的存储器阵列,它位于主存和处理器内核之间,保存着最近一段时间处理器涉及到的主存块内容,主要是为了缓解慢速存储器和处理器之间的速度不匹配造成的访问瓶颈问题。write buffer经常和Cache配合使用。用来缓解处理器…

17、shell编程—浮点型数字计算

文章目录1.bc简单用法2.实战1.bc简单用法 第一种: 第一步:输入bc 第二步:进行对应的数字计算 第二种 echo "scale4;56/9" | bc2.实战 #!/usr/bin/env bashread -p "请输入num1:" num1 read -p "请输入…

pycharm 输出添加颜色

pycharm 输出添加颜色 有时出于某种需要,想将输出突出显示: 下面是一个简单的例子: print("\033[43m color test!\033[0m")可以看到 它以 \033开头 中间是[ 接着的数字代表对应的颜色, 可以自己试试 目前只知道3开关是字…

美8家最具潜力新公司:在线旅游和新媒体居多

北京时间2月19日消息,美国科技博客SAI今天发表博文,列出了今年以来在美国市场新成立的8家最具潜力的科技公司。该文章内容如下: 今年又迎来了一个非常忙碌的新年。新年之初,多家科技新企业就纷纷成立,以下8家科技新公…