Hausübung 9: Aufgabe 2

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Hausübung 9: Aufgabe 2

Beitrag von Krümelmonster »

Hallo,
ich habe ein paar Fragen zu Aufgabe 2 von Hausübung 9:
1. Frage:
Zu Aufgabenteil a): Bedeutet eine größere Zahl bei der Priorität PRIO auch eine höhere Priorität?
Oder ist das wie bei nice?

2. Frage:
Gibt es bei Aufgabenteil a) eine Formel um die Anfangszeiten auszurechnen oder soll man einfach informell über die
Priorität argumentieren? (In den Folien habe ich nur Formeln für p_cpu und p_prio gefunden.)

3. Frage:
Wie ist der Hinweis bei Aufgabenteil b) zu verstehen?
Alle Rechenoperationen werden mit Integer-Zahlen ausgeführt.
4. Frage:
Muss bei der c) auch nur der nice-Wert berechnet werden?

5. Frage:
Bezieht sich die Frage auf diese Bemerkung in den Folien?
Bem.: load ist eine Abschätzung der CPU-Auslastung
Durchschnitt der rechenbereiten Prozesse über vorangegangenes
1-Minutenintervall
Muss man das load dann für alle 10ms neu berechnen?
Oder zu welchem Zeitpunkt sonst?

Danke schonmal für die Antworten.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

thomas_kalbe
Nerd
Nerd
Beiträge: 570
Registriert: 10. Jun 2006 14:58

Re: Hausübung 9: Aufgabe 2

Beitrag von thomas_kalbe »

Zu Aufgabenteil a): Bedeutet eine größere Zahl bei der Priorität PRIO auch eine höhere Priorität?
Folie 73, 4. Bullet-Point: (0 ist die höchste)
Gibt es bei Aufgabenteil a) eine Formel um die Anfangszeiten auszurechnen oder soll man einfach informell über die
Priorität argumentieren? (In den Folien habe ich nur Formeln für p_cpu und p_prio gefunden.)
Prioritäten.
Wie ist der Hinweis bei Aufgabenteil b) zu verstehen?
Ähnlich wie in der Übungsaufgabe mit der Integer-Quadratwurzel: alle Operationen sind Integeroperationen, d.h. Divisionen ohne Rest: 5/2 = 2
Muss bei der c) auch nur der nice-Wert berechnet werden?
ja.
Muss man das load dann für alle 10ms neu berechnen?
ja.

grüße,
thomas

benrub
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 3. Dez 2006 01:26

Re: Hausübung 9: Aufgabe 2

Beitrag von benrub »

Hallo,
ich habe noch ein paar Fragen:

Ich habe mir zB. für die b) ein Script geschrieben, dass guckt, ob die Prio größer 50 wird (also wie die von P2)
und das passiert nicht für p_nice(P1) >= -20. Ist die Aufgabe damit gelöst? Oder soll da etwas hergeleitet werden?
(ich habe angenommen p_nice(P2) = 0)

für die c). Stimmt das mit dem Hinweis "aus Aufgabe b)"? Sollte das nicht eher "aus Aufgabe a)" heißen? Oder bedeutet das ich hier
zB. mit p_nice(P1) = -20 ausgehe und dann einen Wert für p_nice(P2) suche, mit dem es klappt?

d) Welche Formel soll für load verwendet werden? Die Bemerkung auf S. 75 "Durchschnitt der rechenbereiten Prozesse über vorangegangenes
1-Minutenintervall"?

Danke!

Farnus
Mausschubser
Mausschubser
Beiträge: 47
Registriert: 12. Nov 2007 14:49

Re: Hausübung 9: Aufgabe 2

Beitrag von Farnus »

benrub hat geschrieben:Ich habe mir zB. für die b) ein Script geschrieben, dass guckt, ob die Prio größer 50 wird (also wie die von P2)
und das passiert nicht für p_nice(P1) >= -20. Ist die Aufgabe damit gelöst? Oder soll da etwas hergeleitet werden?
(ich habe angenommen p_nice(P2) = 0)
p_nice(p2) = 0 ist richtig, da P2 ohne einen speziellen Wert für p_nice gestartet wurde.

Gefragt ist bei der b) ein theoretischer Wert. Es gilt also nicht! p_nice >= -20
benrub hat geschrieben:für die c). Stimmt das mit dem Hinweis "aus Aufgabe b)"? Sollte das nicht eher "aus Aufgabe a)" heißen? Oder bedeutet das ich hier
zB. mit p_nice(P1) = -20 ausgehe und dann einen Wert für p_nice(P2) suche, mit dem es klappt?
Der Hinweis stimmt und Deine Interpretation ist richtig. P1 soll mit einem p_nice(P1) = -20 gestartet werden.
benrub hat geschrieben:d) Welche Formel soll für load verwendet werden? Die Bemerkung auf S. 75 "Durchschnitt der rechenbereiten Prozesse über vorangegangenes
1-Minutenintervall"?
Danke!


Genau diese, also den Durchschnitt der rechenbereiten Prozesse in der letzten Minute.
'Studenten? Ja, du weißt schon. Diese dünnen Leute, meist sehr blaß. Immerhin ist dies eine Universität. Die Studenten gehören dazu, wie Ratten...' Terry Pratchett -Voll im Bilde-

fl4$h g0rd0n
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 115
Registriert: 1. Okt 2007 22:20

Re: Hausübung 9: Aufgabe 2

Beitrag von fl4$h g0rd0n »

Auch ich habe noch ein paar Fragen:

1. Betrifft die sekündliche Anpassung von p_cpu auch den aktiven Prozess oder nur die in den Queues?
2. Wenn ja, was passiert, wenn die Inkrementierung und Anpassung von p_cpu auf den selben Zeitpunkt fallen?
3. Gilt auch in Aufgabenteil c) load = 2 und rechnen mit ganzen Zahlen?
"Education is the path from cocky ignorance to miserable uncertainty" -- Mark Twain

Farnus
Mausschubser
Mausschubser
Beiträge: 47
Registriert: 12. Nov 2007 14:49

Re: Hausübung 9: Aufgabe 2

Beitrag von Farnus »

fl4$h g0rd0n hat geschrieben:1. Betrifft die sekündliche Anpassung von p_cpu auch den aktiven Prozess oder nur die in den Queues?
die p_cpu von allen Prozessen wird verringert
fl4$h g0rd0n hat geschrieben:2. Wenn ja, was passiert, wenn die Inkrementierung und Anpassung von p_cpu auf den selben Zeitpunkt fallen?
Erst inkrementieren, dann anpassen.
fl4$h g0rd0n hat geschrieben:3. Gilt auch in Aufgabenteil c) load = 2 und rechnen mit ganzen Zahlen?
ja
'Studenten? Ja, du weißt schon. Diese dünnen Leute, meist sehr blaß. Immerhin ist dies eine Universität. Die Studenten gehören dazu, wie Ratten...' Terry Pratchett -Voll im Bilde-

Benutzeravatar
blackcomb
Mausschubser
Mausschubser
Beiträge: 70
Registriert: 1. Okt 2007 15:48
Wohnort: Darmstadt

Re: Hausübung 9: Aufgabe 2

Beitrag von blackcomb »

Noch eine Verständnisfrage zum BSD-Scheduling:
Wie wird denn konkret entschieden, welcher Prozess als nächster Rechenzeit bekommt?
Kommt einfach immer gemäß queue-interner Round-Robin-Strategie der nächste Prozess aus der Queue mit der höchsten Priorität dran?
Wenn ja: Was passiert, wenn die höchstpriorisierte Queue leer ist (weil kein Prozess einen Prioritätswert kleiner als 4 hat)? Wird dann mit der nichtleeren Queue mit der höchsten Priorität weitergemacht?

Danke schon mal!

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Hausübung 9: Aufgabe 2

Beitrag von Osterlaus »

blackcomb hat geschrieben:Wie wird denn konkret entschieden, welcher Prozess als nächster Rechenzeit bekommt?
Die Frage stelle ich mir gerade auch. Welchen Einfluss hat die Neuberechnung der Prioritäten überhaupt? Wandert ein Prozess dann gegebenenfalls mal in eine andere Warteschlange?
Farnus hat geschrieben:
benrub hat geschrieben:d) Welche Formel soll für load verwendet werden? Die Bemerkung auf S. 75 "Durchschnitt der rechenbereiten Prozesse über vorangegangenes 1-Minutenintervall"?
Genau diese, also den Durchschnitt der rechenbereiten Prozesse in der letzten Minute.
Und hier gehts um die durchschnittliche Anzahl rechenbereiter Prozesse, richtig? Oder um welchen Durchschnitt gehts?

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Hausübung 9: Aufgabe 2

Beitrag von Demmi »

Ich hab auch noch n paar Fragen:
1. Jede Sekunde wird ja u_prio neu berechnet. Führt das auch dazu, dass die jeweiligen Prozesse in andere Queues gepackt werden?

2. Wenn ja, was ist, wenn ich nen Prozess mit Prio 1 hinten an ne Queue ranpacke, wo schon Prio 3 drin ist? Da wird ja trotzdem der mit Prio 3 zuerst ausgeführt, sonst wäre ja die Queue sinnlos, oder?
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Hausübung 9: Aufgabe 2

Beitrag von Krümelmonster »

In den Folien (unter 6.6.5) steht, dass u_prio alle 4 Ticks neu berechnet wird.

Wie lange ist ein Tick?

//edit
Ich sehs schon: 10ms
Zuletzt geändert von Krümelmonster am 11. Jan 2009 16:56, insgesamt 1-mal geändert.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
bender
Mausschubser
Mausschubser
Beiträge: 65
Registriert: 7. Apr 2008 20:20

Re: Hausübung 9: Aufgabe 2

Beitrag von bender »

Krümelmonster hat geschrieben:In den Folien (unter 6.6.5) steht, dass u_prio alle 4 Ticks neu berechnet wird.

Wie lange ist ein Tick?
Seite 73:
10 ms (Uhrunterbrechung, Tick)

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Hausübung 9: Aufgabe 2

Beitrag von Demmi »

Nochwas: Kann bei der a) angenommen werden, dass load = 3 konstant bleibt, oder muss das irgendwie neu berechnet werden?

Hm, schon beantwortet
thomas_kalbe hat geschrieben:
Muss man das load dann für alle 10ms neu berechnen?
ja.
Aber gilt das auch für die a) ?

Edit: http://www.stanford.edu/class/cs140/pro ... tos_7.html
Auf der Seite steht, dass load nur 1x pro Sekunde neu berechnet wird.
Was ist denn nun korrekt?

Bitte auch noch meine Fragen oben beantworten ;)
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Hausübung 9: Aufgabe 2

Beitrag von Krümelmonster »

Farnus hat geschrieben:
benrub hat geschrieben:für die c). Stimmt das mit dem Hinweis "aus Aufgabe b)"? Sollte das nicht eher "aus Aufgabe a)" heißen? Oder bedeutet das ich hier
zB. mit p_nice(P1) = -20 ausgehe und dann einen Wert für p_nice(P2) suche, mit dem es klappt?
Der Hinweis stimmt und Deine Interpretation ist richtig. P1 soll mit einem p_nice(P1) = -20 gestartet werden.
Das hätte man also aus dem Hinweis lesen sollen. Interessant :P

Ich habe schonmal bei der b einen anderen theoretischen Wert als -20 raus.

Egal welchen p_nice Wert P2 bekommt, wird P2 irgendwann bei Priorität 127 ankommen.
Und da die Priorität von P1 auch immer größer wird, kommt P1 auch bei 127 an.
Also kann doch P2 nicht immer eine niedrigere Priorität als P1 haben.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Farnus
Mausschubser
Mausschubser
Beiträge: 47
Registriert: 12. Nov 2007 14:49

Re: Hausübung 9: Aufgabe 2

Beitrag von Farnus »

Demmi hat geschrieben:Aber gilt das auch für die a) ?


nein gilt nicht für die a) und b), dort ist load konstant.
Demmi hat geschrieben:1. ...u_prio neu berechnet. Führt das auch dazu, dass die jeweiligen Prozesse in andere Queues gepackt werden?
ja
Demmi hat geschrieben:..., was ist, wenn ich nen Prozess mit Prio 1 hinten an ne Queue ranpacke, wo schon Prio 3 drin ist? Da wird ja trotzdem der mit Prio
3 zuerst ausgeführt, sonst wäre ja die Queue sinnlos, oder?


ja, wenn beide in die gleiche Queue kommen gilt RR.
Osterlaus hat geschrieben:Und hier gehts um die durchschnittliche Anzahl rechenbereiter Prozesse, richtig? Oder um welchen Durchschnitt gehts?
richtig, es geht um die Anzahl
blackcomb hat geschrieben:Noch eine Verständnisfrage zum BSD-Scheduling:
Wie wird denn konkret entschieden, welcher Prozess als nächster Rechenzeit bekommt?
Kommt einfach immer gemäß queue-interner Round-Robin-Strategie der nächste Prozess aus der Queue mit der höchsten Priorität dran?
Wenn ja: Was passiert, wenn die höchstpriorisierte Queue leer ist (weil kein Prozess einen Prioritätswert kleiner als 4 hat)? Wird dann mit der nichtleeren Queue mit der höchsten Priorität weitergemacht?
genau
Krümelmonster hat geschrieben:Auf der Seite steht, dass load nur 1x pro Sekunde neu berechnet wird. Was ist denn nun korrekt?
Über die Intervalllänge kann ich leider keine abgesicherte Aussage machen, aber alle 10ms wäre Verschwendung. Eine Sekunde ist naheliegend s. Folie 74. Ist aber für die Aufgabe irrelevant, da nur nach dem load-Wert nach 500ms gefragt ist. Es muss also nur ein Wert berechnet werden und nicht ein Intervall aller möglichen Werte. Hier gilt die Folie 75: "load ist eine Abschätzung der CPU-Auslastung - Durchschnitt der rechenbereiten Prozesse über vorangegangenes 1-Minutenintervall"
Krümelmonster hat geschrieben:
Farnus hat geschrieben:Der Hinweis stimmt und Deine Interpretation ist richtig. P1 soll mit einem p_nice(P1) = -20 gestartet werden.
Das hätte man also aus dem Hinweis lesen sollen. Interessant :P

Ich habe schonmal bei der b einen anderen theoretischen Wert als -20 raus.

Egal welchen p_nice Wert P2 bekommt, wird P2 irgendwann bei Priorität 127 ankommen.
Und da die Priorität von P1 auch immer größer wird, kommt P1 auch bei 127 an.
Also kann doch P2 nicht immer eine niedrigere Priorität als P1 haben.
Der theoretische Wert sollte kleiner als -20 sein und du kannst das Ergebnis auch auf eine andere Art verwenden. Wird die Priorität von P1 immer größer und wenn ja was ist mit dem Ergebnis der b)?
'Studenten? Ja, du weißt schon. Diese dünnen Leute, meist sehr blaß. Immerhin ist dies eine Universität. Die Studenten gehören dazu, wie Ratten...' Terry Pratchett -Voll im Bilde-

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Hausübung 9: Aufgabe 2

Beitrag von Demmi »

Was passiert denn, wenn diese p_cpu Neuberechnung (alle 40ms) und das Quantum (alle 100ms) aufeinanderfallen. Wird erst p_cpu neu berechnet, oder erst der Prozess gewechselt, wenn es einen mit höherer Priorität gibt?
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

Antworten

Zurück zu „Archiv“