2012-10-26 8 views
5

I 6 Prozesse wie folgt:Berechnung Wartezeit und Bearbeitungszeit in (non-preemptive) FCFS Warteschlange

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

Wie kann ich die Wartezeit und Laufzeit für jeden Prozess berechnen? Das System sollte nicht präemptiv sein (der Prozess erhält die CPU, bis sie fertig ist). Außerdem: In diesem System gibt es 4 logische Prozessoren.

Angenommen, SystemTime ist die aktuelle Systembetriebszeit, und arrivalTime ist relativ dazu. dh eine Ankunftszeit von 0 bedeutet, dass der Prozess startet, wenn das System dies tut; Eine Ankunftszeit von 130 bedeutet, dass der Prozess 130 Einheiten nach dem Systemstart gestartet wird.

Ist das richtig: waitingTime = (systemTime - arrivalTime)?

Meine Argumentation für das Denken ist, dass systemTime - arrivalTime ist die Zeit der Prozess in dem FCFS gewartet hat Warteschlange um die CPU verwenden

Und für Turnaround-Zeit, ich war wie etwas zu denken (oder ist das falsch?): turnaroundTime = burstTime + waitingTime, da die Wartezeit und die Burst-Zeit die Gesamtzeit sein sollten, um den Vorgang abzuschließen. Obwohl ich wieder nicht weiß, ob meine Intuition korrekt ist.

Alle und alle Lesungen würden sehr geschätzt werden!

Antwort

15

Für nicht-preemptive System,

waitingTime = startTime - arrivalTime 

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime 

starttime = Zeitpunkt, an dem der Autor der Prozess

finishTime = Zeitpunkt, an dem die Ausführung der Prozess

Sie halten die Ausführung beendet Verfolgen der aktuellen Zeit im System (timeElapsed). Weisen Sie am Anfang alle Prozessoren einem Prozess zu und führen Sie sie aus, bis der kürzeste Prozess ausgeführt wurde. Weisen Sie dann diesen Prozessor, der für den nächsten Prozess in der Warteschlange frei ist, zu. Tun Sie dies, bis die Warteschlange leer und alle Prozesse ausgeführt werden ausgeführt wird. Wann immer ein Prozess beginnt, reconcured seine startTime, wenn beendet, notieren Sie seine finishTime (beide wie). Auf diese Weise können Sie berechnen, was Sie brauchen.

+0

neben der Frage: Wie kann ich durchschnittliche CPU-Auslastung berechnen? –

+0

Sorry, bin mir nicht sicher. – Max

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

Wo wt ist eine Wartezeit und tt ist Umlaufszeit. CPU-Zeit wird auch Burst-Zeit genannt.

+0

Dies ist nicht korrekt und sollte entfernt werden. – marcusshep