赞
踩
目录
1.LFU(Least Frequently Used)最近最不常用算法
2.LRU(Least Recently User)最近最少使用算法
3.FIFO(First in first out)先进先出算法
缓存算法用于决定缓存系统中哪些数据应该被删去。
主要思想:把使用频率最小的数据置换出去。
主要步骤:
举例:
ABCD为数据,括号内是被使用的次数
初始状态:
访问D后(访问次数加一,并排在相同次数最前):
新增E后:
缓存满时(淘汰次数最少的E):
存在的问题:
对于A而言,可能他在最开始某段时间集中被频繁地访问。但可能之后不会再被访问了,但由于他的次数远远大于其他数据,这使得它不会被轻易地淘汰。
对于E而言,可能他才刚刚被访问了第一次,后面可能会被频繁的访问。但由于他的次数只有一次,每次缓存满时都会先被淘汰。
主要思想:把最长时间未被访问到的数据置换出去。
主要步骤:
举例:
初始状态:
访问D后:
新加E时缓存满了:
存在的问题:
当客户端需要大量访问历史数据时,这时历史数据被提到队头,其他数据可能会因为缓存满而舍弃。这时其他客户端想要访问其他数据时又会重新到磁盘访问,效率大大降低。
主要思想:最先进入的数据最先被淘汰
主要步骤:
举例:
初始状态:
访问C时(依然不做任何操作):
新加E时缓存满:
存在的问题:
可能最先进入的数据是经常被访问的界面,这样操作会降低效率。
①运行态:进程当前占有CPU,并在CPU上运行。
②就绪态:一个进程已经具备运行条件,但没有分配CPU,暂时不能运行。当调度给该进程CPU时,立即可以运行。
③等待态:当前进程因等待某事件的发生而暂时不能运行的状态。即使这时CPU空闲也不能运行。
就绪——>运行:在调度程序时,一旦调度到这个进程时,就发生这件事。
运行——>就绪:运行进程用完了CPU分给他的时间片(分时操作系统分配给每个运行的进程微观上的一段时间)或CPU处理机被抢占。
运行——>等待:这个进程对资源的访问得不到满足 或者初始化I/O操作等待结果 或者等待某一进程提供输入
等待——>就绪:等待的事情得到满足时执行。
新建态:因为就绪态也是需要一个过程才能达到这样一个状态,就绪态之前的状态就为新建态。
终止态:最后对进程整个生命周期进行一个收尾。
等待态→挂起等待态:操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。
挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。
就绪态→挂起就绪态:操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。
挂起等待态→等待态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。
运行态→挂起就绪态:当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占 CPU,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己。
新建态→挂起就绪态:考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。
挂起进程等同于不在内存中的进程,因此挂起进程将不参与低级调度直到它们被调换进内存。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。