我有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)
?
我的理由是systemTime - arrivalTime
是进程在fcfs队列中等待使用CPU的时间(或者这是错误的?)
对于周转时间,我想的是:turnaroundTime = burstTime + waitingTime
,因为等待时间和爆发时间应该是完成整个过程的总时间。虽然我再一次不知道我的直觉是否正确。
非常感谢任何和所有读物!
答案 0 :(得分:17)
对于非抢占式系统,
waitingTime = startTime - arrivalTime
turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime
startTime =流程开始执行的时间
finishTime =流程执行完毕的时间
您可以跟踪系统中当前经过的时间(timeElapsed
)。在开始时将所有处理器分配给进程,并执行直到最短进程完成执行。然后将此处理器分配给队列中的下一个进程。执行此操作直到队列为空和所有进程都执行完毕。此外,无论何时进程开始执行,都会在完成时记录其startTime
,并记录其finishTime
(两者都与timeElapsed
相同)。这样你就可以计算出你需要的东西。
答案 1 :(得分:-4)
wt = tt - cpu tm.
Tt = cpu tm + wt.
wt
是等待时间,tt
是周转时间。 Cpu时间也称为突发时间。