(进程)CPU调度算法
**FIFO:**先来先调度,是页面置换算法,并且是按照时间片轮转的,为每个页记录着该页调入内存的时间。当必须置换一页时,将选择最旧的页。
FCFS:(基于FIFO)先服务先调度,当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
**SJF:**短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
**PR:**在时间片轮转调度算法中,系统根据先来先服务的原则,将所有的就绪进程排成一个就绪队列,并且每隔一段时间产生一次中断,激活系统中的进程调度程序。当时间片结束或进程执行结束,系统再次将cpu分配给队首进程。
内存换出(页面置换)
**OPT:**优先淘汰最长时间内不会被访问的页面,缺页率最小,性能最好,但是无法实现(预测未来)。
**FIFO:**优先淘汰最先进入内存的页面,实现简单,但是性能很差。
**LRU:**缓存淘汰算法,优先淘汰最近最久(从缺页开始往前看)没有访问的页面,性能很好,但是需要硬件支持,算法开销大。
CLOCK:(二次置换SRC)定时清除R位,效率高,代价小,LRU近似效果差。
多进程磁盘调度
FCFS:(同上)
**SSTF:**最短寻道时间优先,SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。
**SCAN:**电梯算法首先自里向外访问,下一个对象是其欲访问的磁道既在当前磁道之外,又是距离最近的;2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问。
CSACN: 首先自里向外访问,当磁头移到最外的磁道并访问后,磁头返回到最里的欲访问磁道,即将最小磁道号紧接着最大磁道号构成循环,继续循环扫描2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问。
内存分区适配
首次适应算法(First Fit):将空闲分区链以地址递增的顺序连接;在进行内存分配时,从链首开始顺序查找,直到找到一块分区的大小可以满足需求时,按照该作业的大小,从该分区中分配出内存,将剩下的空闲分区仍然链在空闲分区链中。 优点:高址部分的大的空闲分区得到保留,为大作业的内存分配创造了条件; 缺点:(1)每次都是优先利用低址部分的空闲分区,造成低址部分产生大量的外碎 片。
循环首次适应算法(Next Fit):分配内存时不是从链首进行查找可以分配 内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找,直到找到可以为该进程分配内存的空闲分区; 优点:(1)使得空闲分区分布更加均匀; (2)空闲分区的查找开销小; 缺点:高址部分的大空闲分区被分小,使得大作业进入无法分配内存;
最佳适应算法(Best Fit):将空闲分区链中的空闲分区按照空闲分区由小到大的顺序排序,从而形成空闲分区链。每次从链首进行查找合适的空闲分区为作业分配内存,这样每次找到的空闲分区是和作业大小最接近的,所谓“最佳”。 优点:第一次找到的空闲分区是大小最接近待分配内存作业大小的; 缺点:产生大量难以利用的外部碎片。
最坏适应算法(Worst Fit):与最佳适应算法刚好相反,将空闲分区链的分区按照从大到小的顺序排序形成空闲分区链,每次查找时只要看第一个空闲分区是否满足即可。 优点:效率高,分区查找方便; 缺点:当小作业把大空闲分区分小了,那么,大作业就找不到合适的空闲分区。