我有6个过程,如下所示:
-- P0 -- arrival time = 0 burst time = 10 -- P1 -- arrival time = 110 burst time = 210 -- P2 -- arrival time = 130 burst time = 70 -- P3 -- arrival time = 130 burst time = 70 -- P4 -- arrival time = 130 burst time = 90 -- P5 -- arrival time = 130 burst time = 50
如何计算每个流程的等待时间和周转时间?系统应该是非抢占式的(进程获取CPU,直到完成)。另外:此系统中有4个逻辑处理器。
假设systemTime是当前系统的正常运行时间,而arrivalTime是相对于当前的系统正常运行时间。即:到达时间为0表示进程在系统启动时开始;130的到达时间表示系统启动后130个单位开始处理。
这是正确的waitingTime = (systemTime - arrivalTime)吗?
waitingTime = (systemTime - arrivalTime)
我认为这是因为systemTime - arrivalTime进程一直在fcfs队列中等待使用CPU的时间(或者这是错误的吗?)
systemTime - arrivalTime
对于周转时间,我在想类似的东西:turnaroundTime = burstTime + waitingTime,因为等待时间和突发时间应该是完成该过程的总时间。虽然再一次我不知道我的直觉是否正确。
turnaroundTime = burstTime + waitingTime
任何和所有的阅读将不胜感激!
对于非抢占式系统,
waitingTime = startTime - arrivalTime turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime
startTime =进程开始执行的时间
finishTime =进程完成执行的时间
您可以跟踪system(timeElapsed)中当前经过的时间。首先将所有处理器分配给一个进程,然后执行直到最短的进程完成为止。然后,将这个空闲的处理器分配给队列中的下一个进程。这样做直到队列为空, 并且 所有进程都已执行完毕。另外,每当一个进程开始执行时,便对其进行重新startTime记录,并在完成时记录其finishTime(与相同timeElapsed)。这样,您就可以计算出所需的内容。
timeElapsed
startTime
finishTime