00:27:16 Felix Gohla: Hier kann man nochmal sehen, dass die Statements nicht atomar sind: https://godbolt.org/z/ThjdM9 00:29:26 Stud_01: Kann das Lesen parallel laufen? Oder müssen parallele Threads aufeinander warten, wenn sie beide dasselbe lesen wollen. (Also hat die RAM mehrere Lesezeiger oder nicht?) 00:30:50 Stud_02: Wir waren uns sowohl in der Gruppe, als auch im Tutorium unsicher, inwiefern Parallelität Nebenläufigkeit nach sich zieht. Sind zwei Threads die echt gleichzeitig laufen aber nicht unterbrochen werden (keine Context-Wechsel) nebenläufig? 00:31:04 Stud_01: Wie funktioniert test_and_set dann? Es kann von beiden Threads wirklich gleichzeitig ausgeführt werden (Lesen läuft parallel sagen sie). 00:33:20 Andreas Grapentin: @Stud_02, ich würde argumentieren dass die parallelen Threads auch nebenläufig sind, selbst wenn sie nicht unterbrochen werden. 00:34:09 Stud_02: Alles klar, danke! 00:34:49 Felix Gohla: @Stud_01 Part I: Das kommt jetzt wieder etwas auf die Architektur drauf an. Wenn jede CPU auf etwas im persönlichen Cache zugreift, müssen die nicht warten. Wenn es aber um den Hauptspeicher geht… da ist das ganze etwas komplizierter. Der RAM an sich hat glaube ich nicht unbedingt mehrere Lesezeiger (außer es handelt sich irgendwie um Multi-Port-RAM). Da muss dann eine Reihenfolge festgelegt werden (berichtige mich bitte jemand, wenn das falsch sein sollte). 00:35:38 Andreas Grapentin: die CPUs gehen beim Speicherzugriff über die memory-management unit (MMU). diese wird ankommende Speicherzugriffe sequenziell beantworten. 00:36:03 Stud_03: Wieso haben wir dann hier eine Verletzung von Progress, wenn nie ein Thread in den kritischen Abschnitt kommt, weil sie sich direkt deadlocken? 00:36:22 Stud_04: @Andreas: Ändert sich das mit Dual- oder Quad-Channel-RAM? Oder geht es da um etwas anderes? 00:37:04 Andreas Grapentin: es gibt einen guten Artikel von Ulrich Drepper — “what every programmer should know about memory” 00:37:42 Andreas Polze: Hamacher, Vranesic, Zach, Computer Architecture 00:47:18 Stud_05: Wie wird dann der Zugriff auf den Bus geregelt? Dort wäre ja prinzipiell auch schon eine Race Condition möglich, wenn zwei Prozessoren gleichzeitig den Bus benutzen wollen? 00:48:13 Andreas Polze: Hamacher, Vranesic, Zaky 00:53:37 Stud_01: ist hier waiting gleich blocked? 00:56:17 Andreas Grapentin: ja. waiting heißt immer, dass man darauf wartet dass eine Bedingung zum weiterlaufen erfüllt wird 01:08:10 Stud_02: Wollen Sie vielleicht schnell eine Zoom Umfrage dazu machen? 01:08:27 Andreas Grapentin: ich würde eher im discord eine umfrage starten nach der VL