操作系统
文章平均质量分 78
AHU_Tree
这个作者很懒,什么都没留下…
展开
-
先来先服务(FCFS)算法
快期末了在复习操作系统,顺便把实验课上写的算法重新写一遍先来先服务算法非常简单,当作业来了,先来先运行,后来的按到达时间的先后排在就绪队列上,每次取队首元素运行。实验环境是WIN7 64位+Visual Studio 2015//main.cpp#include "FCFS.h"int main(){ std::vector PCBList; //输入作业原创 2015-11-28 17:05:45 · 24848 阅读 · 6 评论 -
优先级调度算法(PSA)
优先级调度算法,即给每个作业一个优先级,优先级越高越紧迫,应该先执行。FCFS算法和SJF算法都可以看做一种特殊的PSA算法。例如,在FCFS算法里,是将算法的到达时间当做优先级,先到达的优先级高。在SJF算法里,将作业的服务时间看做优先级,服务时间短的优先级高。//main.cpp#include "PSA.h"int main(){ std::原创 2015-12-01 01:13:57 · 18541 阅读 · 1 评论 -
短作业优先(SJF)算法
SJF算法:将一些作业按照服务时间升序排列,较短的作业先执行,这样可以保证较好的周转时间,但是同时,长作业可能会等待很长时间才会运行。//main.cpp#include "SJF.h"int main(){ std::vector PCBList; //输入作业信息 InputPCB(PCBList); //SJF算法 SJF(PCBList);原创 2015-11-29 19:49:16 · 14397 阅读 · 0 评论 -
高响应比优先调度算法(HRRN)
BOOM,困到不行,这个写完就睡觉了,今天好像有点感冒 ,翘了晚上的课一直睡到10点起来,睡不着在写代码,现在又困了高响应比算法,是一种动态调整优先级的算法,在上面介绍的PSA算法中,给每个作业安排一个优先级后,始终这个优先级不再改变,这有些不合理。因为可能造成一个低优先级作业始终得不到执行。为了解决这个问题,HRRN算法每次都计算作业的优先级,随着作业等待时间的变长,优先级不原创 2015-12-01 01:51:47 · 46963 阅读 · 3 评论 -
轮转调度算法(RR)
RR算法是使用非常广泛的一种调度算法。首先将所有就绪的队列按FCFS策略排成一个就绪队列,然后系统设置一定的时间片,每次给队首作业分配时间片。如果此作业运行结束,即使时间片没用完,立刻从队列中去除此作业,并给下一个作业分配新的时间片;如果作业时间片用完没有运行结束,则将此作业重新加入就绪队列尾部等待调度。//main.cpp#include "RR.h"原创 2015-12-03 01:00:37 · 22173 阅读 · 2 评论 -
银行家算法(Banker's Algorithm)
银行家算法是用来避免死锁的一种算法。每当有一个新进程,就需要给出它所需资源的最大数目,如果此数目超过系统拥有资源数,则申请失败。对于进程的每一组请求,首先检查系统是否有足够的资源分配给它,如果有,则进一步计算,当系统分配资源后,是否处于不安全状态,如果处于不安全状态,则拒绝分配。//main.cpp#include "Bank.h"in原创 2015-12-22 16:21:41 · 5003 阅读 · 0 评论 -
多级反馈队列调度算法(MFQ)
多级反馈队列调度算法是目前公认的较好的一种进程调度算法,它能较好的满足各类进程的需要。MFQ算法首先设置多个就绪队列。队列的优先级递减,且各队列时间片大小也不同。例如我实现的算法里,设置了3个队列,第一队列优先级>第二队列>第三队列,且后一个队列的时间片大小是前一个的2倍。每个队列都采用FCFS策略排列。首先调度高优先级队列内的进程,如果此进程在时间片内不能运行完,则将它加入下一个原创 2015-12-09 00:48:04 · 21233 阅读 · 3 评论 -
首次适应算法(FF)和循环首次适应算法(NF)
FF和NF算法都是基于顺序搜索的动态分区分配算法,在内存中检索一块分区分配给作业。如果空间大小合适则分配,如果找不到空间则等待。FF算法按地址递增从头扫描空闲分区,如果找到空闲分区大小>=作业大小则分配。如果扫描完空闲分区表都没有找到分区,则分配失败。NF算法和FF算法类似,但是NF算法每次分配都会记录下位置,下次分配的时候从记录的位置开始,循环扫描一遍空闲分区。注:回收分区的原创 2015-12-26 22:13:35 · 36405 阅读 · 0 评论