So liebe Mitstudenten,
was kann man hierdran besser machen?
Aufgabe 1:
a)
4. Beispiel:
An kritische Abschnitte werden nach Dijkstra vier Anforderungen gestellt. Benennen Sie diese.
Aufgabe 2:
a)
Name des Semaphors | Initialwert |
P1 | P2 | P3 |
kritischer Abschnitt | kritischer Abschnitt | kritischer Abschnitt |
b)
Der Semaphor s muss mit dem Wert 2 initialisiert werden.
Vorgehen sollte vermieden werden, da Zustand des kritischen Abschnitts durch unklare Reihenfolge der Schreib/Lesezugriffe nicht eindeutig.
Aufgabe 3:
a) 2051
Seitengröße = 4096 Byte
Virtuelle Adresse/Seitengröße: 2051/4096 = 0 R 2051
Seitenummer (Index) = 0
Offset = 2051
Seitenrahmennummer= 0
phy. Adresse = Seitenrahmennr * Seitengröße + Offset:
0*4106+2051 = 2051
b) 2051
Physische Adresse/Seitengröße: 2051/4096 = 0 R 2051
Seitenrahmennummer = 0
Offset = 2051
Seitennummer = 0
Virtuelle Adresse = Seitennummer * Seitengröße + Offset:
0*4106+2051 = 2051
Aufgabe 4:
a)
zu A | zu B | zu C | zu D | zu E | |
von A | Nein | Nein | Ja | Nein | Nein |
von B | Nein | Nein | Ja | Nein | Nein |
von C | Nein | Nein | Nein | Ja | Ja |
von D | Ja | Ja | Nein | Nein | Nein |
von E | Ja | Ja | Nein | Nein | Nein |
b)
Name des Semaphors | Initialwert |
AC | 0 |
BC | 0 |
CD | 0 |
CE | 0 |
DA | 1 |
EA | 1 |
DB | 1 |
EB | 1 |
[leer] | [leer] |
[leer] | [leer] |
[leer] | [leer] |
[leer] | [leer] |
c)
A | B | C | D | E |
P(DA) | P(DB) | P(AC) | P(CD) | P(CE) |
P(EA) | P(EB) | P(BC) | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
Prozess arbeitet | Prozess arbeitet | Prozess arbeitet | Prozess arbeitet | Prozess arbeitet |
V(AC) | V(BC) | V(CD) | V(DA) | V(EA) |
[leer] | [leer] | V(CE) | V(DB) | V(EB) |
[leer] | [leer] | [leer] | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
d)
Paarung | kann zusammengefasst werden | Name des zusammengefassten Semaphors |
(B → A, A → B) | Nein | BAAB |
(E → A, E → B) wenn gleichzeitig auch (D → A, D → B) |
Ja | EAEB |
(A → C, B → C) | Nein | ACBC |
(A → E, B → E) | Nein | AEBE |
(D → A, E → A) | Nein | DAEA |
(C → A, C → B) | Nein | CACB |
(D → B, E → B) | Nein | DBEB |
(C → D, C → E) | Ja | CDCE |
(D → E, C → E) | Nein | DECE |
e)
Name des Semaphors | Initialwert |
EAEB | 2 |
CDCE | 0 |
A | B | C | D | E |
P(EAEB) | P(EAEB) | P(AC) | P(CDCE) | P(CDCE) |
[leer] | [leer] | P(BC) | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
Prozess arbeitet | Prozess arbeitet | Prozess arbeitet | Prozess arbeitet | Prozess arbeitet |
V(AC) | V(BC) | V(CDCE) | V(EAEB) | V(EAEB) |
[leer] | [leer] | V(CDCE) | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
[leer] | [leer] | [leer] | [leer] | [leer] |
Für Korrekturen bin ich natürlich stark empfänglich, schreibt gerne in die Kommentare.
Nicht gelöste Aufgaben werde ich noch im Laufe der Zeit ergänzen. Haltet dazu einfach den Twitterfeed im Auge, ich weiss nicht ob die RSS Leser das sonst mitbekommen.
Hallo,
ich sitze auch grade über der EA.
Ich habe weitestgehend die gleichen Antworten wie du.
Virtueller Speicher habe ich allerdings noch nicht gemacht. Ich finde aber das sieht sehr richtig aus 😉
nur bei der letzten Aufgabe (Prozesssynchronisation3 d & e) habe ich eine komplett andere lösung:
d)
zusammengelegte Kanten:
(A → C, B → C)) –> ACBC
(D → A, E → A) –> DAEA
(D → B, E → B) –> DBEB
(C → D, C → E) –> CDCE
e)
neue Initialwerte:
Name des Semaphors Initialwert
DAEA 2
DBEB 2
–> die restlichen haben m.e. den initialwert 0
Abarbeitungsschema:
A B C D E
P(DAEA) P(DBEB) P(ACBC) P(CD) P(CE)
P(DAEA) P(DBEB) P(ACBC) [leer] [leer]
Prozess arbeitet
V(ACBC) V(ACBC) V(CD) P(DAEA) P(DAEA)
[leer] [leer] V(CE) P(DBEB) P(DBEB)
Ich versuche mal meinen Gedankengang zu erklären:
Laut aufgabe sind alle Prozesse nebenläufig und wiederkehrend.
d.h. wenn du den Semaphor EAEB initial auf 2 setzt kanns dir passieren das der Prozess A zwei mal hintereinander ausgeführt wird und B gar nicht. das gleiche kann dir auch bei CDCE passieren.
Ich denke dass man alles zusammenlegen kann wo 2 Pfeile auf einen Prozess zeigen (wenn du dir den Graphen aufgezeichnet hast).
Du musst aber trotzem die zusammengelegten Semaphoren 2 mal passieren um sicher zu sein das beide vorgänger ausgeführt wurden.
ich hoffe die erklärung ist einigermaßen verständlich.
Sollte ich komplett auf dem falschen Dampfer bin ich natürlich für eine Korrektur dankbar 🙂
Gruß
Thomas
LikeLike
Bin voll deiner Meinung (auch mit der Korrektur unten). War wohl schon etwas spät, als ich die Lösung bearbeitet hatte. Aber ich habe die Aufgabe nochmal bei 0 gestartet und bin nun mit dir d’accord. Vielen Dank für dein Comment
LikeLike
Nachtrag.
ich habe grade noch einen Fehler entdeckt.
bei Prozess D und E müssen die Semaphoren DAEA und DBEB natürlich verlassen werden. nicht passiert.
Also V() statt P().
klassicher Copy-Paste-Fehler 😀
LikeLike
Gern geschehen. wobei ich mir natürlich auch nicht sicher bin ob meine Lösung korrekt ist.
eben habe ich die Adressierungsaufgabe gemacht.
Du Rechnest mit einer Seitengröße in Byte. Ich glaube das der Speicher Wortadressiert ist. d.h. du müsstest die Seitengröße nochmal durch 2 teilen.
Würde schon darum sinn machen weil dann bei a und b nicht die gleichen Ergebnisse raus kommen.
Hier mal meine Lösungen: (natürlich auch ohne gewähr 🙂 )
für Korrekturen bin ich Dankbar
a)
Seitengröße = 4096 Byte = 2043 Worte
2051/2043 = 1 rest 8
-> Seitennummer = 1 -> Seitenrahmen = 2;
Offset = 8
berechnung physische Adresse:
2 * 2043 + 8 = 4094
b)
Seitengröße = 2043 Worte (siehe oben)
2051/2043 = 1 rest 8
-> Seitenrahmen 1 -> Seitennummer = 4;
Offset = 8
berechnung physische Adresse:
4 * 2043 + 8 = 8180
c) Seite muss geladen werden.
LikeLike
Lieber Thomas, 4096 / 2 = 2048
LikeLike