FCFS调度算法(短作业优先) 该算法采用非剥夺策略,算法按照进程提交或进程变为就绪状态的先后次序,分派 CPU。当前进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)。在进程唤醒后(如I/O 完成),并不立即恢复执行,通常等到当前进程出让CPU。这是最简单的调度算法,比较有利于长进程,而不利于短进程,有利于CPU 繁忙的进程,而不利于I/O 繁忙的进程。 算法流程: 代码:
1 |
|
截图: 优先级调度算法: 优先级越高的进程会被优先选择,但是这里不是抢占式的调度算法。 根据每个进程块的优先级在队列中选择一个优先级最大的进程,然后将进程放到处理机中进行运行。进程每运行一次重新计算各进程的响应比。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先级减1,运行时间减1,然后再次从就绪队列中选择新的优先级进程放入到处理机中,循环执行上面的步骤,当某个进程运行结束后,将它从队列中去除直至所有的进程都从中去除,然后结束。 这里我的优先级是在我的算法中的所有进程初始化的值手动输入的。 在处理机选择进程时,总是选择队列中优先级最高的进程运行。为了采用动态优先级调度,在每次进程运行一次之后,其优先级就会减1.当进程运行结束时首先将它的状态更改为完成状态(C),并且撤出就绪队列,如果就绪队列不为空则重复执行上面的操作。 代码:
1 |
|
实现: