这是我的操作系统课程设计 - 进程调度算法模拟
进程调度的模拟实现:
编写进程调度程序,模拟先来先服务调度算法、短作业优先调度算法和优先级调度算法(考虑非抢占式和抢占式),进行算法评价,输出调度结果和算法评价指标。
这个课设运用了C++的面向对象的特性,提高了代码的重用性,修改代码变得方便。这也使程序的各个模块变得相互独立,参数以指针形式传递,传参高效方便。
进程生成器把生成进程的模块分离到独立的线程中运行,这样能使进程逐个进入到队列,队列长度在运行中是变化的,这样最大限度实现拟真。
程序用栈实现了系统中断,不足之处是执行保存断点的代码的时间也被计入了程序的等待时间中,这个弊端无法规避,因为程序本身也是进程,,程序本身的代码执行也需要时间。
不同的进程调度算法各有利弊。
FCFS算法对短作业进程不公平;
SJF算法对长作业进程不公平,甚至出现“饥饿”现象;
非抢占式优先级调度算法能很好的响应优先级高的进程,但是优先级更高的进程入队时必须等待上一个进程处理完;
抢占式优先级调度算法对高优先级进程非常有利,适合在多用户系统上使用,能很好的响应用户操作,带来丝滑感觉,但高优先级进程占比很高的话,低优先级进程有可能迟迟得不到响应。
操作系统可以考虑在不同情况下选择不同调度算法来保证不同类型作业的优先级或公平性。