Hallo ich würde gerne schon mal anfangen vorzuarbeiten. Hat jemand Tipps für mich wie und was ich genau lernen soll?
PUSH
Dazu kann ich viel sagen, aber unter Dokumente von oben bis Dokument "Übung 1 mit Lösung.pdf" (21.04.2019) ist von neuer Lehrstuhl. Danach sind die ganze Dokumente von alter Lehrstuhl und hat nicht sehr viel Gemeinsamkeiten. Also die Zusammenfassung, die unter Dokumente zu finden ist, helfen nicht ganz viel weiter, nur zum Teil. Ansonsten Moodle (SS 2019): https://moodle.uni-due.de/enrol/index.php?id=15332 Schlüssel: syssec OneNote (dort werden Inhalte der Vorlesungen aufgeschrieben, also es gibt keine übliche Präsentationsfolien wie PowerPoint): https://onedrive.live.com/redir?resid=5B1D335BC7A9866%216284&authkey=%21AGwZsw20Q5jZKgU&page=View&wd=target%28%C3%9Cbersicht.one%7C346af0ce-6759-4f62-b632-98dab257f340%2F%C3%9Cbersicht%2C%20Reflektion%20und%20Ausblick%7C4853a1f0-3c68-413d-a2cd-e1375ca1a0bd%2F%29
So langsam könnten die mal die Noten rausgeben. So viele haben im Nachtermin gar nicht mitgeschrieben...
vor allem, da im VT das ganze in unter einer Woche bereits im HiSin stand...
Wie viel braucht man um die Klausur zu bestehen?
View 2 more comments
Weiß jemand zufällig wie lange die Korrektur dauert? Die erste Klausur war schon in wenigen Tagen mit der Korrektur fertig.
keine ahnung aber die meinten ja direkt danach dass es was länger dauert (warum weiś ich nicht mehr)
Hi! Was für Fakten sollten wir wissen über Rust außer was Mutables sind?
Kann jemand mir Assertion erklären und wie ich das in Promela umsetze?
View 13 more comments
Danke dir @Anonymer Maus
Ja, @ Anonyme Zapfsäule
Wie beweis man,ob ein Promela Programm mit Hilfe von einer Safety Eingenschaft Mutual Exclusion erfülllt? ich weiß, dass "![] Mutex" ist die Safety Eigenschaft, aber man schreibt diese nur in einer safety.prp datei.
View 2 more comments
Und ich denke das nennt man Assertion (hat hier jemand vorher noch geschrieben) aber ich bin mir nicht sicher..
Ja, das nennt man assertation. Ich glaube, dass du verwechselt Assertation mit Der Safety -Eigenschaft. Ich habe erfahren, dass mit der Safety Eigenschaft man benutzt "#define mutex(critcal <=1) "
Wünsche euch viel Erfolg heute 🌺🌺
Warum ist es nicht so? ich meine 50 anstatt 250
Ich denke weil dann der Prozess wo 200 abgebucht werden ausgeführt wird, der ja blocked war. Ob das so stimmt weiß ich nicht, abef wenn IRR vom Monitor eingehalten wird dann schon
Kann hier jeder Prozess eigentlich MAXIMAL 1 mal durchlaufen weil es kein loop forever gibt? Aber die Begründung warum es hier keine starvation gibt ist dann falsch, weil es heißen müsste dass beide prozesse nach endlichen Abfolgen der möglichen atomaren Anweisungen in den kritischen Abschnitt kommen können, oder? Wobei was ist hier exakt der kritische Abschnitt? Alles vor (end) ?
Hallo, hat jemand eine Idee, welche Ausgaben für diese Algorithmus möglich sind? Ich habe es so gemacht aber ich denke q2 wird nie ausgeführt, denn p2 setzt B immer auf true.
Würde sagen falls p1 vor q1 ausführt wird wird nichts ausgegeben da Prozess q solange blockiert wird bis p die Variable B auf true setzt. Falls q1 vor p1 ausgeführt wird ist q2 q3 eine Endlosschleife da Prozess p geblockt ist und die Variable B nie auf true setzen kann. Also mögliche Ausgaben keine oder das Programm terminiert nicht. (eventuell unendlich viele *)
Okay, danke
Hi, Wieso sind es in der Rechnung 32 und im Diagramm nur 16? bei diesen 16 ist es doch meistens möglich dass es zu jedem einen Counterpart gibt wo turn im anderen Zustand ist, oder doch?
No area was marked for this question
Warum hast du nicht "critical-- " nach printf geschrieben ? Muss man es nicht schreiben?
Anscheinend hat die Person diese Stelle vergessen. Hier fehlt tatsächlich "critical--".
No area was marked for this question
Ich danke dir vielmals für das Blatt und wünschte ich hätte auch so eine schöne Schrift... ❤️😂
Hat jemand die Übungsblätter 3 und 6 Lösungen?
View 3 more comments
@Anonymer Mond: haben Sie auch die Lösungen von Blatt 6 Aufgabe 1? Oder irgendjemand? Es würde auch für die andere Kommilitonen weiter helfen.
Was bedeutet die "Immediate Resumption Requirement" (IRR) ? Danke im Voraus
Wenn ich mich nicht irre, dann bedeutet IRR, dass ein Prozess, welcher blockiert ist und aus der Queue entnommen wird (entblockiert wird) direkt mit der nächsten Anweisung fortfahrenn darf.
Wie viel musste man in der Prüfung selbst programmieren? Oder reicht es aus, den Code lesen zu können? (Frage ist zu Promela und Rust)
Wenn ich mich richtig erinnere musste man Rust überhaupt nicht programmieren können, da war ein relativ großer Codeausschnitt gegeben und man sollte erklären welche Ausgaben möglich sind und welche Probleme auftreten könnten. Bei Promela war glaube ich das Grundgerüst gegeben und man sollte einzelne Zeilen hinzufügen, damit auf Mutual Exclusion getestet werden kann (war sehr ähnlich wie in den Übungsaufgaben mit der Variable critical und assert). Glaube man musste einmal assert benutzen und einmal diese Safety Dateien. Wobei man den Inhalt der Safety Datei nicht schreiben musste.
Wie viele Punkte gab es für den promela Teil ungefähr?
Lohnt es sich jetzt noch anzufangen zu Lernen? Oder ist das in knapp 2 Wochen nicht mehr zu schaffen?
View 1 more comment
Ich nehme mir nur 7 Tage Zeit für Concurrency :D Keine Ahnung ,ob das reicht ,aber es geht nicht anders :/
Natürlich reicht das. Für das Fach würrden 5 Tage reichen. Außer natürlich du willst nur 1 maximal 2 Stunden am Tag lernen.
Ich glaube,dass du noch "#define mutex ( critical <=1)" hier hinzufügen soll.
Da ihr ja letzte Woche die Einsicht hattet, würde ich gerne wissen, wie die Bewertung war. Haben die sehr streng bewertet ? Wie ist denn die generelle Stimmung über die Klausur? Lief die gut oder eher schlecht. Waren ja die 1. die diesen Lehrstuhl hatten.
Ich fand die Klausur machbar. Überraschen gute Note bekommen, dafür das ich bei einigen Aufgaben Schwierigkeiten hatte. Nur der Platz für die Tabellen ist knapp, es gibt nur eine Seite mehr die dann bewertet wird also verkack die Aufgabe beim zweiten Ansatz nicht sonst hast du ein Problem :D
Morgen ist ja die Einsicht. Wie läuft das da ab, kriegt man da seine Klausur in die Hand gedrückt, werden zusammen Aufgaben durchgegangen, darf man sich Notizen oder Fotos von seinen Fehlern machen?
Bei der Klausur war ja eine Aufgabe mit "Erkläre was Mutual Exclusion ist und wieso es eine Safety oder Liveness-Eigenschaft ist." Was habt ihr da geschrieben wieso es eine Safety-Eigenschaft ist?
View 2 more comments
Safety Eigenschaften sollen unter allen Umständen zu jedem Zeitpunkt gegeben sein. Liveness Eigenschaften sind dann nicht erfüllt, wenn sie nach endlichen Schritten nicht eintreten.
Deadlocks kann man so gesehen auch erst nach endlichen Schritten feststellen :D so habe ich es verstanden
Wie war die Klausur? Was kam dran bzw wie war sie auf gebaut ?
View 1 more comment
* 9/70 Rust
Dazu kam noch das Anwenden von Semaphoren und Monitoren.
Hallo so kurz vor der Klausur naja aber wie kann man auf schnelle Starvation Freiheit eines Alg. bestimmen ...Also gibs da eine bestimmte Vorgehensweise und was ist mit der Fairness Betrachtung?
Ein richtiges Schema F gibt es glaube ich nicht, allerdings lässt es sich ziemlich schnell logisch erschließen ob Starvation-Freieheit erfüllt ist. Ich liste einfach mal einige Punkte auf die man untersuchen sollte. 1) Ist der Algorithmus Deadlock frei? Wenn nein, dann ist Starvation Freiheit nicht erfüllt 2) Gibt es keinen Zyklus, dann gibt es den Zustand, an dem die Prozesse Completed sind ( beide auf (end) ) und beide Prozesse waren vorher im CS. (vgl. Übung 10 glaube ich). 3) Ein Prozess betretet den CS und hindert den anderen in CS zu treten. Anschließend verlässt er den CS und tritt erneut in den CS ein und der andere Prozess wird dauerhaft daran gehindert in CS einzutreten, dann ist der Algorithmus nicht Starvation frei. 4) n Prozesse: ( Beispiel 3 p, q, z ) : p tritt in CS ein, q und z sind blockiert, anschließend entblockiert p den Prozess q, dieser geht dann in den CS und nachdem er ihn verlässt entblockiert er wieder p ( dieser vorher bereits erneut versucht hat in den CS einzutreten ). Das wäre z.B. bei einem schwachen Semaphor der Fall. Es kommt halt immer drauf an, was für einen Algorithmus du untersuchst, aber daran sollte man sich orientieren können. Schwache Fairness muss bei Starvation-Freiheit vorausgesetzt werden. Ein Algorithmus wäre z.B. auch Starvation-Frei, wenn z.B. p in den CS geht, dann erneut in den CS geht, dann wieder in den CS geht dann aber aufgrund einer Abbruchbedingung ( z.B. Variable turn wurde bei jedem Durchlauf um 1 inkrementiert und q kann erst in den CS wenn turn = 3, was jetzt der Fall wäre, da turn bei jedem Durchlauf von p erhöht wurde ) q nun den CS betreten kann und p nun warten muss.
Hallo Leute, wie lernt ihr eig für die Klausur und können auch Promella/Rust aufgaben drankommen und wenn ja wie?
View 8 more comments
Ich danke vielmals und lese es mir jetzt durch etc. 🙋
War ebenfalls da. Keinen Code schreiben aber natürlich verstehen. Viel wichtiger bei Rust sind die Konzepte (Borrowing, Mutables, Smart Pointer, etc.)
Darf man in der Klausur morgen auf diese Notation zurückgreifen, also hier im Beispiel die 5 Gabeln in einer Spalte ( Zelle ) und bei sich nicht ändernden Zuständen das " ?
View 3 more comments
Ich denke auch dass zumindest die Tabelle mit den Spalten schon vorgegeben ist (wie zB bei der Sperrprotokollaufgabe in DBMS falls die jemand geschrieben hat)
Okay danke!
Welchen Stellenwert wird Rust voraussichtlich haben? Ich wäre dankbar wenn jemand seine Lösungen hier reinstellen könnte
Frage ich mich auch! 🤔
Ich gehe davon aus, dass wir einen Code erklären müssen und das TOCTOU Problem evtl angeben müssen, also wo es auftritt
Hi, ich habe eine kleine Frage zu Aufgabe 2a). Ich gehe mal davon aus, dass zur Veranschaulichung die ausgegebenen Zahlen orange markiert wurden. Als die 1 ausgegeben wird ist das print Statement nicht aktiv und führt zu keiner Lösung. Oder übersehe ich da was?
View 2 more comments
Ja das ist mir auch aufgefallen da muss auch zuerst ein print hin oder.. Sonst würde die eins ja niemals ausgegeben werden
So habe ich es gemacht
Kann mir jemand sagen ob wir die Algorithmen aus der Vorlesung auswenig lernen müssen?
View 3 more comments
Am letzten Termin hat er fragen zur Klausur beantwortet. Dort hat er ausdrücklich gesagt dass keine Algorithmen auswendig gelernt werden müssen. Ich denke nachvollziehen (bzw "können") sollte man sie aber schon da ja in der Klausur sicherlich auch ein Algorithmus dran kommen wird den wir irgendwie analysieren sollen. Nur halt nicht die einzelnen Anweisungen auswendig lernen um sie dann in der Klausur wiedergeben zu können.
Hat jemand die Lösung vom 6. Übungsblatt? :(
Geht hier nicht auch p1,p2,p2 ,q1,p2? Oder wieso muss man die while Schleife jedes mal neu aktivieren, wenn sie doch solange laufen sollte, bis die Bedingung nicht mehr gilt?
View 1 more comment
Ah, ich wollte nach dem q1 noch das q2 schreiben, also dass n dann 2 wird und darauf hin p2 nochmal druckt... Also würde p1 und p2 nach erstmaligem "starten" unendlich lange weiterlaufen bis irgendwann "manuell" durch irgendwas (also q1/q2) n auf 2 erhöht wird? Das wäre dann der Fall ohne Fairness, oder? Ich danke dir für die Hilfe :)
Ja genau, beim Fall ohne Fairness muss q2 niemals ausgeführt werden, demnach würde der Prozess p nicht terminiert werden.
muss q1 immer vor q2 ausgeführt werden, oder wieso steht hier explizit q2?
Ja q1 muss immer vor q2 ausgeführt werden, denn man respektiert die Reihenfolge der atomaren Anweisungen. Sobald q2 ausgeführt wurde gilt die Bedingung in p1 nichr mehr ( 2 < 2 -> false ) und die Schleife wird beendet. Bei Szenarien ohne Fairness kann es aber sein, dass q2 niemals ausgeführt wird.
Ah, alles klar, vielen Dank! :)
Kann jemand mir die letzten 3 Schritte erklären. Man soll ja solange machen bis der erste die Anweisung "eat" bekommt. Nach dem Muster der Tabelle kommt doch es zu einem Deadlock oder nicht?
Ein Deadlock sollte nicht auftreten. Jetzt werden q und z noch blockiert und a kann als erstes eat ausführen. Ich habe die Tabelle bis zu dem Zeitpunkt gemacht, an dem der Prozess a den Prozess z entblockiert hat und dieser nun eat ausführen konnte, Daran konnte man dann sehr gut sehen, dass die Prozesse nach dem LIFO Prinzip alle entblockiert werden. Außerdem ist in der letzten Spalte ein kleiner Fehler bei der gabel[1], da dort b blockiert ist obwohl dort eigentlich hätte p sein müssen.
Super danke dir
Ist das wirklich richtig? Hier wird nur der Prozess p ausgeführt und q verweilt die ganze Zeit in q2. Dann würde das ja heißen, dass der Dekkar und Peterson Algorithmus auch Starvation-Freiheit nicht erfüllen. Meine Variante: Ich habe p und q in der Schleife gehalten, sodass keiner von beiden den CS betreten kann und diese dann "aushungern".
Jetzt wo du es sagst, kannst du wohl recht habe. Ich hatte zwei Tabellen für diese Aufgabe gemacht. Das erste siehst du hier im Dokument und das andere sieht ähnlich aus wie deins. Zusätzlich habe ich noch einen anderen Fehler entdeckt. Ich werde dieses Dokument nochmal verbessern und hochladen. Diese Aufgabe wurde nur mündlich und schnell besprochen, deshalb konnte ich zu dieser Aufgabe nichts abschreiben.
Erst einmal danke, dass ihr euch so viel mühe macht, ich finde das großartig!
Was bringt hier csp das Liveness erfüllt wurde?
View 5 more comments
Ganz wichtig : Bei Liveness Prüfungen niemals die Boolsche Prüfvariabe zurück auf false setzten. In der Liveness.prp prüfen wir per Temporallogik ab, ob die Variable jemals true wird. Da macht es keinen Sinn die Variable wieder zurückzusetzen. Also als false intitialisieren, im CS auf true setzten und dann prüfen.
Man kann die Variable danach auf false setzten, aber das macht keinen Sinn wie du bereits gesagt hast, aber wäre nicht falsch
Auf dem Ü-Blatt steht Bank.Withdraw(200,0) für p1... ist das nachträglich korrigiert worden oder richtig so?
Denke hier sollte Bw(200, 0) stehen, da ja im nächsten Zustand (rechts) p1 blockiert wurde, was ja nur der Fall ist wenn nicht genug Geld auf seinem Konto ist (also 150 < 200).
ICh glaube das es schon richtig ist, da q1 zuerst die 100 Euro überweisen muss, damit die reise starten kann. Deswegen wird p1 auch geblockt wenn man versucht p1 auszuführen da man 200 Braucht um die Reise zu starten (2 Persoen à 100 Euro
Es wird gesagt, dass Buffer (bzw. Queues) voll werden können, was für einen Erzeuger ein Problem darstellen könnte. Meines Wissens, haben Queues allerdings keine festgelegte Kapazität, außer dem interne Speicher. Ist mit dem vollen Zustand der interne Speicher gemeint oder sind "Queues" anders definiert? Es wäre schön, wenn mir jemand dies erklären könnte.