6

我有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 是当前系统的正常运行时间,到达时间是相对的。即:到达时间为 0 表示进程在系统启动时开始;到达时间为 130 表示进程在系统启动 130 个单位后启动。

这是正确的:waitingTime = (systemTime - arrivalTime)

我认为这是systemTime - arrivalTime该进程在 fcfs 队列中等待使用 CPU 的时间(或者这是错误的吗?)

对于周转时间,我在想:turnaroundTime = burstTime + waitingTime,因为等待时间和突发时间应该是完成该过程的总时间。虽然我不知道我的直觉是否正确。

任何和所有的读数将不胜感激!

4

2 回答 2

18

对于非抢占式系统,

waitingTime = startTime - arrivalTime

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime

startTime = 进程开始执行的时间

finishTime = 进程完成执行的时间

timeElapsed您可以在 system( )中跟踪当前经过的时间。一开始将所有处理器分配给一个进程,然后执行直到最短的进程执行完毕。然后将这个空闲的处理器分配给队列中的下一个进程。这样做直到队列为空并且所有进程都执行完毕。此外,每当一个进程开始执行时,记录它的startTime,当完成时,记录它的finishTime(都与 相同timeElapsed)。这样你就可以计算出你需要什么。

于 2012-10-26T21:24:25.190 回答
-5
wt = tt - cpu tm.
Tt = cpu tm + wt.

哪里wt是等待时间,哪里是tt周转时间。Cpu时间也称为突发时间。

于 2014-03-22T05:42:09.403 回答