操作系统也谈"算法"
前言:
近来在准备校招的笔试面试,复习到操作系统时感觉概念性的东西比较多,不过对于以下的几类算法还是有必要做个小小总结。
【作业调度算法】
先来先服务(FCFS, First Come First Serve)是最简单的调度算法,按先后顺序进行调度。
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。
优先级算法(Priority Scheduling)是多级队列算法的改进,平衡各进程对响应时间的要求。
时间片轮转法(Round Robin)是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。
场景模拟:
甲乙丙丁4人先后到银行办理业务,此时银行只有开放一个业务办理窗口,且工作人员尚未上班。
1)FCFS:即谁排前面谁先办理业务,不管他业务需要花费多长时间。所以此时的办理顺序自然是:甲->乙->丙->丁
2)SJF:假如甲乙丙丁办理业务的时间分别是:10,2,3,5。则按照SJF乙办理的业务时间比较短,故最先办理,最后办理的顺序为:乙->丙->丁->甲
3)PS:不知道甲乙丙丁的具体办理业务时间,不过此时因为银行有规定办理对象优先权为:白金会员(丁) >青铜会员(丙) >普通会员(乙)> 非会员(甲)。所以此时,虽然丁最后才到达,不过他将是第一个办理的人,此时新的办理顺序为:丁->丙->乙->甲;
4)RR:假设同(2),此时假设时间片为1,则甲乙丙丁依次办理且每次办理时间“1”之后必须轮到下一位业务办理者。此情况下虽然也是甲最先办理,不过只能办理“1”,可知最后完成业务的顺序为:乙->丙->丁->甲。
【页面调度算法】
1)最佳置换算法(OPT)
2)先进先出置换算法(FIFO)
3)最近最久未使用算法(LRU)
4)时钟置换算法(CLOCK)
情景模拟:
系统为某进程分配了3个物理块,页面的走向为:7 0 1 2 0 3 0 4 2 3 .则各算法的缺页次数:
1)6
2)9
3)8
4)7
【磁盘调度算法】
1)先来先服务算法(FCFS)
2)最短寻道时间优先算法(SSTF)
3)扫描算法(SCAN)
4)循环扫描算法(CSCAN)
情景模拟:
有一架智能电梯(可通过设置以上4种算法中的任一种进行操控)处于第50层,此时有10人同时进入。他们先后分别按了:12,34,7,19,81,23,52,88,92,1.依据以上 不同的算法电梯应该怎么运行?
1)->12-34-7-19-81-23-52-88-92-1
2)->52-34-23-19-12-7-1-81-88-92
3)->52-81-88-92-34-23-19-12-7-1
4)->52-81-88-92-1-7-12-19-23-34
End!