
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
众所周知,内存和硬盘是电脑的两个重要部件,虽说两者都是用来存储数据的,特性却大相径庭:
内存访问速度快,容量小,断电后无法保存数据,在计算机中充当缓存的角色。
硬盘访问速度慢,容量大,断电后数据不丢失,用于长久地保持数据。
CPU是个急性子,每秒几百亿次计算不在话下,自然爱和内存打交道,不待见硬盘,不待见到什么程度呢,即使CPU要读取硬盘里的数据,也先让硬盘把数据交给内存,CPU再从内存读,缓存往往就是指这样快却容量小的中间存储。
问题来了,内存容量小,而计算机可能会使用的数据却很大,导致内存装不下,只能把装不下数据搁硬盘里,要使用硬盘中的数据,得先让内存清出一些暂时不用的数据,再从硬盘里把所需数据加载到内存,这种倒腾的过程叫做置换Swap,而清出数据的操作称为淘汰数据。从硬盘读数据就耗时了,所以我们希望我们每次取数据时数据都在内存里,减少硬盘的访问。
操作系统有一个很重要的任务——调整内存中的数据,目的在于减少用户使用电脑时因读取硬盘而造成的延迟和卡顿。调整一般发生两种情况下,一个是电脑闲置的时候,提前将用户可能会用到数据搬到内存中;另一个就是置换的时候,加载用户所需数据的同时,舍弃那些比较不可能被访问的数据。
计算机科学里把访问数据时数据刚好在内存里的概率成为命中率。为了提升用户体验,减少等待,就得提高命中率,选择合适的内存置换(淘汰)算法就显得至关重要,内存置换算法是指在发生置换操作时,应该淘汰内存中的哪些数据,来放置新的数据,达内长沙IT培训为你介绍几种常用的算法:
1、先进先出算法(FIFO,First In First Out)
淘汰最先进来的数据,这个算法非常简单,这样做的道理是最先进来的数据可能已经用过了,过时了。对于一次性或短期使用的数据,非常合适,但对于长期使用的数据,就不合适了。这个算法命中率并不高,常常被提起主要是用来衬托其他算法的优越性,有点类似奥特曼的小怪兽。
2、最久没访问算法(LRU,Least Rescently Used)
淘汰内存中最久没有被用到的数据,这个就比FIFO合理多了,最久没被访问,可能真的是过时了。从逻辑上来说是相对合理的,而且比较简单,现在流行的操作系统大多都使用它或它的变种。当然,这个算法对于那种需要被周期性访问的数据就不合适了。
3、最不频繁算法(LFU,Least Frequency Used)
淘汰内存中在最近一段时间内使用频率最低的数据,这个又比LRU更合理了,就是保留最近最常用的数据,剔除最不常用的蛀虫。它并不是操作系统的宠儿,因为它计算量比较大,自身会消耗一些内存,对于操作系统这样的惜时(内存)如金的家伙是不可接受的。