C语言实现先来先服务与最短作业优先的设计思路
时间: 2023-11-17 10:07:41 浏览: 161
磁盘调度算法(最短寻道时间优先算法(SSTF) 扫描算法(SCAN) 先来先服务算法(FCFS) 循环扫描算法(CSCAN)....)
5星 · 资源好评率100%
先来先服务(FCFS)调度算法和最短作业优先(SJF)调度算法都是常见的进程调度算法。下面是它们的设计思路:
1. 先来先服务(FCFS)调度算法
先来先服务(FCFS)调度算法的思路是:按照进程到达的先后顺序进行调度,即先到达的进程先被执行,后到达的进程后被执行。当一个进程进入就绪队列后,它会被放在队列的末尾。当一个进程被调度到CPU上执行时,它会一直运行直到完成或者被阻塞等待I/O操作。这种调度算法非常简单,但可能会出现“饥饿现象”,即某些进程需要等待很长时间才能得到CPU资源。
对于FCFS的实现,可以使用队列来存储就绪队列中的进程。每当一个进程到达时,将其加入队列的末尾。当CPU空闲时,从队列的头部取出一个进程执行,直到该进程完成或者被阻塞。
2. 最短作业优先(SJF)调度算法
最短作业优先(SJF)调度算法的思路是:按照进程的执行时间进行调度,即执行时间短的进程先被执行,执行时间长的进程后被执行。当一个进程进入就绪队列后,根据其执行时间将其插入到合适的位置,使得就绪队列中的进程按照执行时间从小到大排列。当一个进程被调度到CPU上执行时,它会一直运行直到完成或者被阻塞等待I/O操作。这种调度算法可以减少平均等待时间,但可能会出现“饥饿现象”,即某些进程需要等待很长时间才能得到CPU资源。
对于SJF的实现,可以使用链表来存储就绪队列中的进程,并将进程按照执行时间从小到大插入到合适的位置。当CPU空闲时,从链表的头部取出一个进程执行,直到该进程完成或者被阻塞。在实现时,还需要考虑如何处理进程的到达和阻塞等事件,以及如何计算平均等待时间等指标。
阅读全文