操作系统中的调度算法
调度算法
分区分配算法
给出每个进程的大小,分区编号、起始地址、分区大小
找到分区编号的起始地址就是进程的分配的地址,然后操作(起始地址加上进程大小,分区大小减去进程大小)
首次适应(first)
根据分区编号从小到大进行匹配,找到第一个分区大小大于等于进程大小的分区编号
最佳适应
根据分区大小从小到大进行排序,依次从小到大匹配,找到第一个分区大小大于等于进程大小的分区,注意此排序是动态排序的
循环首次适应(next)
在首次适应的基础上,根据分区编号从小到大进行匹配,下次就从当前分区的下一个进行匹配
最坏适应(worst)
根据分区大小从大到小进行排序,依次从大到小进行匹配,找到第一个分区大小大于等于进程大小的分区,注意此排序是动态排序的,如果第一个不匹配了就不找了,所以他的效率很高
页面置换算法
先进先出置换(FIFO)
选择在内存驻留时间很长的页面进行中置换
一般来说直接把第一个换掉就可以了
最佳页面置换(OPT)
置换未来最长时间不访问的页面
从当前点开始,从左往右找,最后出现的值替换掉,如果有多个没找到就替换第一个
最近最久未使用(LRU)
置换最近最久未使用的页面
从当前点开始,从右往左找,最后出现的值替换掉
磁盘调度算法
给你一个磁盘和磁盘磁道的范围,然后再给你一个请求队列,里面是要访问的磁道,要你求磁头的移动顺序。
平均寻道长度就是磁头在访问两个磁道之间需要移动的插值和,再除以请求次数
先来先服务(FCFS)
按照请求队列的顺序服务,磁头的根据磁道进行移动
最短寻道时间有限(SSTF)
磁头移动时是根据当前访问的磁道,寻找离队列中还未访问的最近的磁道,所谓最近就是两个磁道差值最小
扫描算法(Scan)
磁头在一个方向上移动,访问所有未完成的所有请求,直到磁头到达该方向上的最后磁道(也就是磁道范围的左边界和右边界),才调换方向
比如从当前访问的磁道(A)一直从左访问,访问到磁盘范围的左边界,然后从A的右边一直访问直到右边界,这里前提是给请求队列中要访问的磁道排好顺序了
循环扫描算法(Sscan)
这种算法和上面的scan相比,磁头有没有调换方向
scan磁头先是往左再往右;sscan磁头是一直往某个方向,比如往右
scan反向移动响应请求,sscan不会响应任何请求
磁头往某一个方向(右)移动,返回时直接快速移动至最靠边缘(左边界)的位置,然后继续移动,该算法的特点,就是磁道只响应一个方向上的请求
LOOK算法
对scan算法的优化,优化的思路就是磁头在移动到最远请求的位置,然后立即反向移动
CLOOK算法
对sscan算法的优化,优化的思路就是磁头在移动到最远请求的位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端
进程调度算法
平均周转时间、平均带权周转时间
平均周转时间 = 完成时间 - 到达时间
平均带权周转时间 = 平均周转时间 / 服务时间