2012-10-26 3 views
5

Ho 6 processi come segue:Calcolo Tempo di attesa e tempo di risposta a (non-preemptive) coda FCFS

-- 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 

Come faccio a calcolare il tempo di attesa e tempi di risposta per ogni processo? Il sistema dovrebbe essere non preventivo (il processo ottiene la CPU fino a quando non viene completata). Inoltre: ci sono 4 processori logici in questo sistema.

Presupporre systemTime è il tempo di attività corrente del sistema, e arrivalTime è relativo. vale a dire: un orario di arrivo di 0 significa che il processo inizia quando il sistema lo fa; un orario di arrivo di 130 indica che il processo viene avviato 130 unità dopo l'avvio del sistema.

È corretto: waitingTime = (systemTime - arrivalTime)?

Il mio ragionamento per pensare questo è che systemTime - arrivalTime è il tempo del processo è stata attesa nelle FCFS coda di utilizzare la CPU

E per i tempi di consegna, stavo pensando qualcosa di simile (o è questo torto?): turnaroundTime = burstTime + waitingTime, poiché il tempo di attesa e il tempo di raffica dovrebbero essere il tempo totale per completare il processo. Anche se ancora una volta non so se la mia intuizione è corretta.

Qualsiasi e tutte le letture sarebbero molto apprezzate!

risposta

15

Per i non-preemptive sistema,

waitingTime = startTime - arrivalTime 

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime 

startTime = Tempo in cui il processo è iniziato l'esecuzione di

finishTime = Tempo in cui il processo finito esecuzione

È possibile mantenere traccia del tempo corrente trascorso nel sistema (timeElapsed). Assegnare tutti i processori a un processo all'inizio ed eseguirli finché non viene eseguito il processo più breve. Quindi assegnare questo processore che è libero per il processo successivo nella coda. Fallo fino a quando la coda è vuota e tutti i processi sono stati eseguiti. Inoltre, ogni volta che un processo inizia l'esecuzione, ripristinato il suo startTime, al termine, registra il valore finishTime (uguale a timeElapsed). In questo modo puoi calcolare ciò di cui hai bisogno.

+0

Oltre alla domanda: come posso calcolare l'utilizzo medio della CPU? –

+0

Scusa, non ne sono sicuro. – Max

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

Dove wt è un tempo di attesa e tt è il tempo di risposta. Il tempo di CPU è anche chiamato tempo di raffica.

+0

Questo non è corretto e dovrebbe essere rimosso. – marcusshep