web-dev-qa-db-ja.com

(非プリエンプティブ)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
_

各プロセスの待機時間と所要時間を計算するにはどうすればよいですか?システムは非プリエンプティブである必要があります(プロセスは、完了するまでCPUを取得します)。また、このシステムには4つの論理プロセッサがあります。

SystemTimeが現在のシステム稼働時間であり、arrivalTimeはそれと相対的であると想定します。つまり、arrivalTimeが0の場合、システムが開始したときにプロセスが開始されます。到着時刻が130の場合、システムの起動後130ユニットでプロセスが開始されます。

これは正しいですか:waitingTime = (systemTime - arrivalTime)

これを考える私の推論は、_systemTime - arrivalTime_が、CPUを使用するためにプロセスがfcfsキューで待機していた時間です(またはこれは間違っていますか?)

ターンアラウンドタイムについては、待機時間とバースト時間はプロセスを完了するための合計時間であるはずなので、_turnaroundTime = burstTime + waitingTime_のようなものを考えていました。もう一度私は私の直感が正しいかどうかわかりません。

どんな読み方でも大歓迎です!

非プリエンプティブシステムの場合、

waitingTime = startTime - arrivalTime

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime

startTime =プロセスが実行を開始した時刻

finishTime =プロセスの実行が終了した時間

システム(timeElapsed)で経過した現在の時間を追跡できます。最初にすべてのプロセッサをプロセスに割り当て、最短のプロセスが実行されるまで実行します。次に、空いているこのプロセッサをキュー内の次のプロセスに割り当てます。キューが空になるまでこれを行いますandすべてのプロセスの実行が完了します。また、プロセスが実行を開始するたびに、そのstartTimeを記録し直し、終了したら、そのfinishTimeを記録します(どちらもtimeElapsedと同じ)。そうすれば、必要なものを計算できます。

17
Max