Расчет времени ожидания и времени выполнения в (непереходной) очереди FCFS

у меня есть 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

как я могу рассчитать время ожидания и время выполнения для каждого процесса? Система должна быть непереходной (процесс получает процессор, пока он не будет сделан). Также: в этой системе есть 4 логических процессора.

предположим systemtime является текущей работоспособности системы, и arrivalTime относительно этого. ie: время прибытия 0 означает, что процесс начинается, когда система делает; время прибытия 130 означает, что процесс началась 130 единиц после запуска системы.

это правильно: waitingTime = (systemTime - arrivalTime) ?

мои рассуждения для мышления это то, что systemTime - arrivalTime время ожидания процесса в очереди fcfs для использования процессора (или это неправильно?)

и для времени оборота я думал что-то вроде: turnaroundTime = burstTime + waitingTime, так как время ожидания и время взрыва должно быть общее время для завершения процесса. Хотя я снова не знаю, интуиция ли это. правильный.

любые и все чтения были бы весьма признательны!

2 ответов


для непереходной системы,

waitingTime = startTime - arrivalTime

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime

параметр StartTime = время начала выполнения

finishTime = время завершения процесса

вы можете отслеживать текущее время, прошедшее в системе(timeElapsed). Назначьте все процессоры процессу в начале и выполняйте, пока не будет выполнен самый короткий процесс. Затем назначьте этот процессор, который свободен для следующего процесса в очередь. Делайте это, пока очередь не опустеет и все процессы выполняются. Кроме того, всякий раз, когда процесс начинает выполняться, записал его startTime, когда закончит, запишите его finishTime (так же, как timeElapsed). Таким образом, вы можете рассчитать, что вам нужно.


wt = tt - cpu tm.
Tt = cpu tm + wt.

здесь wt время ожидания и tt - это время оборота. Cpu time также называется временем всплеска.