Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

Erzeuger-Verbraucher-Problem, Demo der Standardlösung; BS 1 - SoSe2020 - FH SWF - 2020-05-14 #10

Hans-Georg Eßer41:11 590 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 227 Zeilen
Herunterladen
  1. ja wir wollen uns die musterlösungen zum erzeuger verbraucher problemen anschauen die musterlösungen verwendet zwei zimmer vorn und einen mutter gesehen die auf
  2. der linken seite den code es wird initialisiert ein mutiges auch als immer vor vom typ her mit ex wird auf 1 etabliert und dann zweimal vor dem tee
  3. und voll und wir haben hier code für einen producer und für einen consumer die implementierung ist im wesentlichen symmetrisch zueinander also der producer
  4. erzeugt in der endlosschleife immer zunächst ein neues item muss dann ein zimmer voran fordern den mut ex anfordern
  5. dann kriegt der zugriff auf einen puffer kann etwas in den puffer reinschreiben und dann gibt er die angeforderten ressourcen wieder frei symmetrisch dazu
  6. consumer fred macht auch eine endlosschleife fordert auch ein zimmer vor aber an anderen und einen mutig sun entfernt dann einen eintrag und gibt
  7. dann ressourcen wieder frei wobei man hier aufpassen muss die raid und signal aufrufe jeweils für den sommer vor sind immer entgegengesetzt also es wird
  8. hiermit weight mtm power user wird der cmt angefordert aber es wird am ende mit 0 praktisch eine ressource für den kulissen immer vor zurückgegeben
  9. und das wollen wir uns anschauen an einem konkreten beispiel wie das funktioniert die auf der rechten seite können sie sehen ich habe hier einen
  10. wasser vorbereitet der 55 bereiche hat wo was rein geschrieben werden kann also quasi eine liste mit fünf elementen platz für fünf daten elemente und dieser
  11. puffer ist als ringhoffer implementiert das heißt der reihe nach wenn sie da jetzt was rein schreiben wollen würde das so aussehen ja ein erster eintrag
  12. landet hier in dem ersten feld ein zweiter eintrag im zweiten dann kommen in das dritte in das wörter in das fünfte und jetzt ist an der stelle
  13. der waffe erst mal voll wenn es jetzt weitergehen sollte dann wäre hier vorne wie die exposition die geschrieben wird das heißt um das irgendwie sinnvoll
  14. nutzen zu können muss zunächst mal wieder etwas rausgenommen werden also wir nehmen jetzt mal an dass hier die ersten zwei einträge schon wieder
  15. gelesen worden und die im puffer entsprechend wieder frei sind dann könnt ihr jetzt weitergeschrieben werden ein sechstes element würde dann hier nach
  16. vorne geschrieben und ein siebtes würde hier eingeschrieben dann wäre der profis schon wieder voll und wenn sie das so angucken dann sehen
  17. sie relativ schnell wahrscheinlich dass wenn man einfach nur so auf den punkt das dann unklar ist an welcher stelle jetzt weiter geschrieben beziehungsweise
  18. weiter gelesen werden kann und das löst man indem man also zeiger einsetzt die die aktuelle lese und schreib position angeben
  19. der rote zeiger hier mit einem w dran das ist der schreib zeige ja derzeit die nächste schreibt position also wenn das nächste mal was in dem buch geschrieben
  20. wird wo das hin geschrieben werden soll und der lese zeiger zeigt wo das nächste mal gelesen wird und am anfang ist so ein puffer natürlich leer
  21. es hat am anfang noch keinen sinn den leser zeiger auf irgendwas zu setzen deswegen dass ich den mal so nach rechts zeigen dass solche praktischen null
  22. pointer darstellen und der schreibt zeiger der zeigt hier auf das erste element und jetzt schauen wir einfach mal wieder producer arbeitet wir lassen
  23. mal den pro user loslegen und es wird dann im laufe der vorführung in dem system wird klar was da passiert also zunächst mal gucken wir uns die
  24. initialisierung an wir haben hier den semafo mt der gibt an wie viele freie plätze ist im puffer gibt und der wirt initialisiert auf die größe des puffers
  25. wir haben 5 1 frage das heißt es wird initialisiert auf den wert 5 und das stelle ich so da hier mit fünf münzen ja das ist jetzt
  26. der wert im sommer vor der firma vorfall der gibt an wie viele plätze im puffer belegt sind das wird initialisiert hier auf der linken seite im code auf den
  27. wert null und der micex wird initialisiert auf eins der mode ex das werden wir nachher noch sehen der ist dafür da dass exklusiver zugriff auf den
  28. puffer garantiert werden kann okay es geht dann also los der producer den lassen wir erst mal laufen in der endlosschleife der produziert jetzt
  29. zunächst mal ein item das ist dann hier vorhanden diese silbernen oder silberfarbenen münzen das sind die die items die produziert und später wieder
  30. verbraucht werden und damit er jetzt arbeiten kann muss er zum einen mit wait mt eine ressource anfordern das heißt also einen freien platz im wasser und
  31. das klappt natürlich beim ersten mal völlig problemlos er bekommt diese ressource weil er also mit wait den sie immer vor wert um 1 reduziert mtv hat
  32. also jetzt ein wert nur noch von 4 und ist praktisch dieser bereich reserviert wenn man so viel ja das wird über den sommer vor selber
  33. natürlich nicht sichergestellt aber so funktioniert unsere implementierung dann kommt der aufruf weight watchers und der mut ex ist hier verfügbar
  34. ja es nicht vergeben an irgendeinen anderen thread deswegen bekommt er den auch wenn wir jetzt dieses bild haben also der producer hat den notwendigen
  35. selber vor bekommen na also eine instanz davon hat den mut ex bekommt vorher das item hat er ohnehin schon produziert dann ist jetzt
  36. der zugriff auf den buzzer möglich und es wird jetzt mit enter item das item eingetragen und ist jetzt an dieser stelle
  37. und mit dem eintrag verbunden ist dass der reihe eine position nach rechts geschoben wird das heißt er zeigt jetzt auf das nächste
  38. freie feld wo was eingetragen werden kann dann wird mit signale mut ex der mutec zurückgegeben
  39. es ist also jetzt wieder verfügbar der wert geht wieder rauf auf 1 in der firma vor basierten implementierung des motivs und es wird jetzt hier aufgerufen
  40. das heißt diese münze hier die geht jetzt nicht zurück in das empty feld sondern die geht jetzt in dieses feld und das ist auch sinnvoll denn es ist ja
  41. jetzt einer eines dieser felder im wasser ist jetzt gefüllt und wenn wir das jetzt noch mal durchlaufen lassen also hier sind wir am
  42. ende des ersten durchlaufs angekommen wir machen jetzt einen zweiten durchlauf das heißt es geht wieder weight mt der firma vor wird angefordert dann way tags
  43. der montags wird angefordert jetzt habe ich vergessen ganz am anfang wurde natürlich ein neues item produziert dann haben wir wieder die
  44. situation das passt wir können weiter arbeiten und können das item hier eintragen der reporter wieder weiter geschoben und
  45. dann wird der montags zurückgegeben und es wird das signal von aufgerufen das heißt hier sind jetzt zwei münzen im symbol der hat das sind mehr zwei war ja
  46. auch zwei felder gefüllt sind so jetzt nehmen wir an dass parallel mal ein consumer startet der consumer wie gesagt arbeitet ähnlich nur dass der
  47. erst den zugriff auf dem wasser praktisch herstellen muss um dann an altem rauszuholen und das sieht dann so aus der macht in
  48. wakfu das heißt er fordert von hier etwas an bekommt das auch macht dann ein weight watchers holt sich also hier den mut ex für den exklusiven zugriff auf
  49. den buzzer und jetzt ruft darin weitem auf unterstem ich hätte nach dem ersten schreibvorgang hätte ich hier den laserpointer auch positionieren sollen
  50. weil da steht natürlich auf anfang ja das ringreiten holt jetzt dieses item aus dem koffer raus und schiebt den laserpointer 1 nach rechts
  51. er zeigt es auf die nächste lese position so und wenn wir jetzt hier mittendrin annehmen dass wir einfach mal umschalten auf den pro user damit man
  52. das mal im mischbetrieb oder im parallelbetrieb sieht dann würde jetzt der polizei wieder seinen nächsten durchlauf starten das heißt der holt
  53. sich mit wait mt hier so eine münze um also ein freien slot nutzen zu können und jetzt ist das nächste was er macht mut ex das heißt er will den exklusiven
  54. zugriff auf dem wasser haben und das funktioniert jetzt nicht weil der mut ex der ist belegt der konsum us red hat den mut ex das heißt was hier
  55. jetzt passiert wenn max aufgerufen wird ist das web wird blockiert da kann der kann den mut ex nicht bekommen deswegen geht es da erst mal
  56. nicht weiter gut wir nehmen dann an das wieder zurück geschaltet wird auf den consumer zweck der hat ja das item hier raus geholt und wird es dann irgendwie
  57. verarbeiten das kommt erst nach der freigabe dh der consumer führt jetzt signale mut ex aus und das signal mit ex würde
  58. normalerweise dazu führen dass wir den wieder hier nach oben bringen ja das würde praktisch bedeuten dass der mut ex wert wieder auf eins gesetzt wird von
  59. null auf eins aber wir haben ja eine warteschlange wir haben nämlich hier diesen track der blockiert wurde
  60. und deswegen bewirkt jetzt das signal mutig etwas andere ist nämlich dass der mut ex weitergereicht wird an den ersten schritt in der warteschlange
  61. das heißt das sieht dann so aus der mode wird einfach da geschoben der pro user hat danach den mut und die blockade kann aufgehoben werden
  62. denn blockiert war der producer ja nur weil er darauf gewartet hat hier den magix zu kriegen und den hat er jetzt bekommen und damit ist erstmal gut
  63. hier fehlt wieder das item das vorher produziert worden ist jedenfalls der könnte weiter laufen macht es aber erstmal nichts denn wir sind ja im
  64. moment noch im consumer swat und der hat gerade mit signale mut ex den mut zurückgegeben jetzt machen auch ein sticker und mt das
  65. heißt hier diese münze gewandert zurück in den bereich und das heißt es sind jetzt wieder einfällt mehr frei das zur verfügung steht
  66. genau und dann würde der consumer jetzt das item verbrauchen das heißt dann können wir das hier entfernen und damit startet
  67. dann der consumer auch die nächste runde wir nehmen an dass jetzt mal wieder zum producer zurück geschaltet wird der war ja stehengeblieben an der stelle
  68. wo er den mut ex bekommen hat das heißt jetzt wird das item eingetragen mit ente item unterschreibt zeiger wird vorgeschoben und dann wird
  69. der mut ex zurück gegeben und es wird sie knurrt voll aufgerufen also wird es voll hier um 1 erhöht und wir lassen jetzt jetzt mal weiter laufen in der
  70. schleife den producer bis praktische buffer komplett gefüllt ist ja wie sieht das also aus es ist immer der gleiche ablauf zunächst an item produzieren
  71. einen freien platz anfordern mit wait mt den mut ex anfordern mit weight watchers dann das item eintragen zum eintragen gehört dass
  72. der schreib zeiger nach rechts geschoben wird dann den mut es zurückgeben und mit signal von den vorfällen um 1 erhöhen nächste runde
  73. ein item generieren wieder mit mtn platz anfordern den mut ex anfordern das item eintragen in schreibt zeiger nach rechts jetzt haben wir hier einen übertrag weil
  74. das ganze jahr an rimbacher ist ja wandert der schreib zeiger jetzt hier nach vorne so rückgabe des mittags und signale von der firma vor wird auf vier
  75. erhöht und einen durchlauf schaffen wir noch es wird wieder also ersten produzieren dann mit wait mt hier den letzten anfordern das bedeutet dass
  76. jetzt der sommer vorwert von mtv auf null runter gegangen ist den mut ex anfordern eintragen und den reit zeiger nach rechts schieben
  77. als teil des eintrages und wenn sie sich die situation anschauen dann sehen sie jetzt reiht und ried zeiger zeigen auch die selbe position also dieses feld hier
  78. wäre das nächste schreibt fällt da steht allerdings noch was drin denn das ist auch das nächste rietveld es ist also an der stelle schon erkennbar bevor es
  79. jetzt irgendwie weitergehen kann muss erst dieser platz irgendwie wieder freigegeben werden und na ja wir lassen den producer weiterlaufen der gibt mut
  80. ex zurück und macht sich 0 0 damit ist jetzt hat jetzt der sommer vor von den maximalwert angenommen und der immer fremd ist auf null
  81. und wenn jetzt in der schleife das nächste mal ein item produziert wird das wäre jetzt ein sechstes album das offensichtlich oben keinen platz hat
  82. dann passiert folgendes nach der produktion des a teams wird wieder weight mt aufgerufen und da gibt es aber nichts
  83. ja es gibt keinen freien slot deswegen haben wir das gleiche wie vorhin beim 6 das network blockiert das heißt jetzt kann es erst dann
  84. weitergehen wenn der konsum was verbraucht hat und ja das machen wir jetzt mal wir lassen den consumer eine schleife
  85. durchlaufen der macht dann macht dann webmatrix und dann endlich einen ruf item und der ruf item macht genau das was wir brauchen dann nimmt jetzt hier
  86. von der nächsten schreibt position die im moment noch belegt ist nimmt er dieses item raus und schiebt den leser circa 1 nach rechts und damit ist schon
  87. klar ab jetzt wäre es praktisch möglich dass der producer weiterarbeiten könnte im moment kann das noch nicht weil er ist noch blockiert die blockade muss
  88. aufgehoben werden wie geht das vor sich das sehen wir hier zunächst mal wird mit sechs der mutec zurückgegeben
  89. und dann kommt signal mt und jetzt haben wir die gleiche geschichte wie vorhin das signal mt führt jetzt nicht dazu dass das hier zurückgegeben wird sondern
  90. wir geben praktisch dieses token direkt weiter an den producer weil der producer wartet ja auf offen mt hja und es steht praktisch in der warteschlange dafür und
  91. deswegen machen wir das einfach so das ding geht hier nach oben und die blockade wird aufgehoben so und genau der consumer verbraucht jetzt noch das
  92. item also er macht irgendwas damit und dann ist es wieder weg und jetzt können wir wieder umschalten auf dem producer der erst jetzt eine situation dass er
  93. wieder aufgeweckt wurde er kommt gerade aus diesem weight mt zurück er hat also eine ressource praktisch einen freien slot im wasser
  94. bekommen fordert jetzt wieder den montags an und kann das item eintragen in den freien slot der reporter wird nach rechts geschoben und das hat man
  95. wieder die gleiche situation wie kurz vorher weiterer reporter zeigen wieder auf den gleichen eintrag und damit geht es eine stelle nicht weiter und so wenn
  96. jetzt haben wir also gesehen wie praktisch zweimal der der producer den puffer im prinzip voll geschrieben hat jetzt gibt es natürlich noch die
  97. symmetrische situation dazu dass der puffer komplett geleert wird ich lass mal hier den pro user noch die letzte also die aktuelle schleife zu
  98. ende durchlaufen der macht mut und gibt damit den mut ex zurück und er macht signal voll und damit ist hier auch beim silber vorfuhr
  99. das bild komplett wir sehen also dass alle plätze belegt sind und jetzt wollen wir mal den consumer durchlaufen lassen so dass sich der puffer hier komplett
  100. lehrt und dann schauen wir auch wie damit umgegangen wird wenn wenn der prüfer vollständig leer ist und dann versucht wird zu lesen
  101. und das heißt also wir führen einfach die schleife links hier im consumer code die führen wir jetzt fünf mal aus und versuchen sein sechstes mal auszuführen
  102. es geht also los mit red bull das erfolgreich jd wood ex dann remove item das item wo der lese zeiger drauf zeigt wird herausgenommen so der lese zeiger
  103. geht eine position nach rechts dann signale mut ex mittags wird zurückgegeben signal mt hja die anzahl der freien slots wird von null auf eins
  104. gesetzt ab jetzt könnt ihr wieder an pro user irgendwas machen aber wir lassen nicht mehr weiterlaufen zunächst mal konsum leitung des item wird verbraucht
  105. so und ist dann weg nächster durchlauf weight noch gibt es belegte slots way tags der montags wird auch geholt dann
  106. das aktuelle team hier wird geholt der lese zeiger geht eine position nach rechts signale mut ex warnsignal mts gibt es zwei leere slots und konsumenten
  107. so und wir machen das ganze nochmal wait for tax rebates lese zeiger nach rechts schieben und ähnlich wie vorhin beim producer ist es jetzt auch beim
  108. verbraucher ja wir haben ein puffer der im kreis organisiert ist also geht er lese zeiger jetzt nach hier montags wird zurückgegeben signal mt die anzahl der
  109. freien slots wird um 1 erhöht das item wird konsumiert und noch ein durchlauf weight watchers ein item hier aus dem puffer lesen den zeiger dabei
  110. nach rechts schieben soutex zurückgeben dann signal mt und zweitem verbrauchen jetzt können wir es noch einmal machen
  111. konsum item so jetzt hat der lese zeiger zum schreib zeiger aufgeschlossen als wir den puffer komplett voll
  112. geschrieben hatten da war es so dass der schreibt zeiger von links an den lesezeichen bewegt hatte und die irgendwann auch das gleiche zeigten
  113. jetzt ist es gespiegelt das ganze jetzt war der lesezeit praktisch schneller und hat den schreib tage eingeholt zeigen beide auf ein leeres feld der mut ex
  114. wird zurückgegeben es wird signal mt aufgerufen und das item wird verbraucht und damit haben wir jetzt das bild der hofer ist komplett
  115. leer das ist praktisch wie in der stadt situation ja sie hat wieder den max mal wertvoll ist auf null der mut ex ist
  116. frei und im unterschied zu dem was wir vorher betrachtet haben wenn jetzt halt der consumer weitermachen würde dann wäre das nächste was der tod baitullah
  117. also er versucht von hier eine ressource zu kriegen und es geht nicht und deswegen sollte dann blockiert und auch da ist jetzt
  118. eben die einzige lösung wie es weitergehen kann dass das ein projekt oder der protoss das red drankommt und ein neues album
  119. produziert was eingetragen wird und das machen wir einmal und dann ist der teil aber auch durch ja dann haben wir praktisch die die beiden extremfälle
  120. voller puffer oder komplett leerer koffer und wii jeweils die spreads angehalten und wieder fortgesetzt werden haben wir einmal gesehen
  121. also wir lassen einmal den producer anfangen der produziert ein item dann macht dann weight mt bekommt das natürlich weil es gibt ja fünf leere
  122. slots macht mut ex trägt das alte mine damit verbunden ist dass der reporter wieder eins nach rechts bewegt wird dann vom single mode ex zurückgegeben und ist
  123. kommt signal voll und analog zu dem was wir eben gesehen haben diese münze wandert jetzt nicht in das fach sondern weil es eine warteschlange
  124. gibt und hier der consumer shrek darauf wartet dass also ein voller slot ein gefüllter slot zur verfügung steht wandert die münze einfach herunter und
  125. die blockade hier wird aufgehoben der producer würde dann in die nächste runde staaten ja und vielleicht wieder ein item produzieren aber hier sehen wir
  126. jetzt jetzt könnte der konsum weiter arbeiten weil er hat jetzt eine ressource bekommen und wenn sie also generell sich das schema anschauen von
  127. diesem code dann sehen sie die verwendung des mittags denke ich ist relativ klar der motek steuert den exklusiven zugriff auf den puffer als
  128. ganzes und der wird immer angefordert und wieder zurückgegeben und bei den senioren ist es so dass die verwendung
  129. ein bisschen ungewöhnlich ist denn es ist immer so dass der prognose mit wait auf eine ressource wartet von einem typ die von einem anderen thread
  130. bereitgestellt wird ja und das gehört ja auch da passt er auch zum zusammenspiel von producer und consumer der consumer kann ja nur dinge
  131. aus dem puffer rausnehmen die der producer vorher erzeugt hat und deswegen ist das hier spiegelbildlich immer wenn der producer mit wait mt offenen freien
  132. slot wartet dann kann kein anderer producer zum beispiel dafür sorgen dass es neue freie slots gibt sondern nur ein consumer kann das machen also entweder
  133. der wake ist direkt erfolgreich weil wir halt noch münzen drin sind oder aber es sind keine münzen mehr drin dann würde der producer blockiert und
  134. dann muss man warten ist der konsum einen durchlauf durch gelaufen ist und hier am ende mit signal mt dafür sorgt dass es wieder einen freien
  135. slot gibt und wenn wir dann eben in der warteschlange und pro user drin haben dann erhöhen wenn ich den zimmer vor wert von null auf eins sondern wir
  136. decken den den schlafenden oder blockierten slate auf und lassen den weiterarbeiten
  137. ja also das war der mechanismus mit den beiden zimmer foren und wenn sie sich jetzt fragen wofür haben wir eigentlich ein mutiges gebraucht ich habe es jetzt
  138. schon zweimal glaube ich gesagt der mode ist grundsätzlich dafür da den exklusiven zugriff auf den auf den puffer zu organisieren aber wofür
  139. braucht man das überhaupt wir haben eigentlich gar keine situation gehabt wo das wo das irgendwie wichtig gewesen wäre
  140. und tatsächlich wenn sie die beispiele die ich ihnen gezeigt habe hier wenn sie die noch mal wiederholen würden und dabei einfach den mut ex komplett
  141. ausblenden wenn ich immer was drauflegen so montags ist gar nicht da und sie streichen hier aus dem producer und aus dem consumer
  142. dieckow zeilen die irgendwas mit mut machen alle raus dann wird das alles immer noch funktionieren denn die einzigen stellen wo ist
  143. irgendwie probleme geben könnte während praktisch wenn sie gleichzeitig aus dem selben fach was lesen und was schreiben wollen
  144. das kann aber nicht passieren wenn die lese und die schreibt position die gleiche ist dann haben wir immer entweder die situation dass der puffer
  145. komplett voll ist und dann heißt das dass der producer craig schläft weil weil er halt nichts mehr bekannt bayer platz vorhanden ist oder aber es heißt
  146. dass wir den puffer komplett leer gemacht haben und dann wird der consumer schlafen gelegt also in dem szenario so wie wir es bisher uns angesehen haben
  147. braucht man mut text eigentlich gar nicht aber das ding ist etwas komplexer konstruiert es kann nämlich mehrere producer oder mehrere consumer oder
  148. beides geben ja und ich habe hier auf dem blatt papier schon einen zweiten producer mal angelegt und wenn wir das ganze mit zwei producer anlaufen lassen
  149. dann können sie erkennen wofür der motek wichtig ist das werde ich jetzt nur mit einem beispiel mal durchführen nehmen wir an wir haben eine multi
  150. threaded maschine also eine multi core maschine ja die zwei prozessorkerne hat wo also 240 parallel laufen können und wir haben zwei producer gestartet die
  151. sich wirklich zufälligerweise weil der scheduler halt die fresse passend gestartet hat zufällig genau parallel durch diesen code durcharbeiten
  152. das heißt beide machen produce a m also werden zwei items produziert zeitgleich dann machen beide waity katie heißt die brauchen praktisch im freien slot im
  153. wasser der bagger ist komplett leer lese und schreib position ist moment die gleiche und das heißt es ja fünf also können beide anfragen
  154. praktisch positiv beschieden werden ja beide kriegen zugriff auf die ressourcen und das empty wird natürlich von fünf auf drei runtergezählt weil zwei
  155. exemplare sozusagen vergeben worden sind und was wir jetzt das nächste das nächste wäre jetzt das beides versuchen wollen an der white
  156. position zu schreiben das item einzutragen und wenn wir jetzt den mut hexen nicht hätten dann würden die parallel diese
  157. center item ausführen und die center item sieht so aus dass die gucken was steht im reich zeiger drin der zeigt auf die auf das dritte feld da wurde bei der
  158. hinfahrt und dann würden die beide gleichzeitig versuchen ihr item hier rein zu schreiben dann würde da sowas entstehen das kann
  159. tatsächlich natürlich in der form ja so kann es nicht passieren sondern irgend einer von denen würde tatsächlich zuerst in den puffer schreiben und der
  160. andere wurde als zweiter schreiben und damit überschreiten ich mache das mag endlich in dem ich das hier so überlege und der untere eintrag
  161. der würde halt verloren gehen was würde dann passieren dann würden beide vielleicht sagen der reiter muss um einen nach rechts geschoben werden
  162. im rahmen dieser eintrage aktion und dann kriegen sie irgendwie sowas ja und dann würde würde der nächste durchgang starten also dass das wäre ein problem
  163. weil zum einen wäre hier ein eingetragener wert im koffer verloren gegangen und die ganze zählung ja wie viele einträge ist ein puffer gibt die
  164. es kommt auch irgendwie durcheinander also dass das wäre einfach ein fehler im ablauf und genau deswegen ich mach das mal rückgängig diesen
  165. fehlerhaften zugriff genau deswegen ist der wermut ex wichtig denn tatsächlich wird im kot ja jetzt der mode ex angefordert und dieser welt mit ex-coach
  166. der parallel in beiden sets in beiden produkt das netz läuft der kann eben tatsächlich nur einmal erfolgreich sein
  167. ja wir nehmen mal an dass er im linken sld erfolgreich ist das bedeutet der rechte krieg den mut wächst nicht der wird blockiert
  168. und dann geht es nur im linken swat weiter mit enter item das item wird eingetragen der reporter wird nach rechts geschoben und dann kommt direkt
  169. danach signal mutig und das heißt war der mut ex wird jetzt nicht hierhin zurück geschoben sondern wir haben ja hier den zweiten producer der in der
  170. warteschlange steht und der darauf wartet dass der dass er den mut ex bekommt der wird hier direkt weitergereicht und die sperre oder die
  171. blockade von dem zweiten größer wird aufgehoben so wie ich vorhin auch schon mal gesagt habe das ist jetzt nicht mit einem
  172. umschalten auf diesen zweiten sap verbunden weil das ist eine entscheidung die das get a trifft der sieht natürlich dass der streit jetzt wieder bereit ist
  173. also ausführt bereit aber das wird nicht direkt zu einem umschalten sondern ist läuft stattdessen hier der erste pro user weiter der macht
  174. dann noch ein signal fulda und trägt einen dass jetzt das erste feld hier gefüllt wurde und würde dann den nächsten durchlauf
  175. starten und vielleicht wird jetzt irgendwann umgeschaltet auf den anderen red spätestens wenn der der linke politiker hier versuchen würde das
  176. nächste mine zu tragen dann würdet ihr ja wieder den mut ex anfordern der nicht verfügbar ist weil er vergeben ist weil er hier in einem anderen thread ist und
  177. spätestens dann muss irgendwann dieser hier aktiviert werden und der kann jetzt auch weil er ja den mut ex bekommen hat seine item hand eintragen in zeige einen
  178. nach rechts schieben den mode ex zurückgeben und mit signal für die anzahl der gefüllten im sommer voraus zwei sätzen und dann
  179. ist das ganze praktisch abgearbeitet das heißt also wir brauchen die beiden zimmer vor um diese grenzfälle der puffer ist komplett voll oder der puffer
  180. ist komplett leer um die abzufangen nämlich die probleme die da entstehen können wenn man versucht in einen vollen puffer zu schreiben oder aus einem
  181. leeren koffer zu lesen und den mut ex brauchen wir wenn wir mehrere parallel arbeitende producer oder mehrere parallel arbeitende consumer haben damit
  182. die sich nicht in die quere kommen beim versuch dinge in dieselbe zelle zu schreiben oder aus derselben zelle zu lesen dass das wären die schwierigkeiten
  183. die ansonsten da auftreten können und damit ist das insgesamt eine korrekte lösung für das erzeuger verbraucher problem da können sie jetzt so viele
  184. producer und consumer trends wie sie wollen erzeugen und die werden immer korrekt arbeiten
  185. ich hatte jetzt ein paarmal die warteschlangen erwähnt ja wenn also das netz blockiert werden weil auf irgendwas gewartet wird entweder auf dem zimmer
  186. vor der offenen wert 0 steht oder auf den mut ex und da gibt es noch den begriff der starken silberfonds oder des starken mut ex im gegensatz zum
  187. schwachen zimmer vor oder schwachen mutig und da geht es darum wenn sie die starke variante haben dann wird die warteschlange wirklich als richtige
  188. warteschlange implementiert das heißt wenn sie mehrere threads haben die jetzt zum beispiel auf den gleichen motivs warten wenn sie an dass sie nicht nur
  189. zwei pro user sondern vielleicht zehn haben und alle zehn haben irgendwie in einer bestimmten reihenfolge ihre items produziert und versuchen alle zehn den
  190. mut es zu kriegen dann kriegt natürlich nur der erste demo tags und die anderen neun werden eine warteschlange eingereiht
  191. und wenn die reihenfolge in der die in der warteschlange aufgetaucht sind ja wenn die auch beachtet wird das heißt also wenn ja wenn wir hier
  192. den montags zugeordnet haben und wer wird jetzt zurückgegeben und dann wird ja aus der warteschlange einer ausgewählt der den mut es dann als
  193. nächster bekommt und wenn dabei die reihenfolge richtig berücksichtigt wird dann spricht man von einem starken mut ex oder bei den sommer vor und eben von
  194. einem starken selber vor und wenn das nicht berücksichtigt wird wenn das eher ein zufallsprinzip ist dann ist es schwach schwacher silber vor
  195. oder schwacher mutig und es kann trotzdem sinnvoll sein eine implementierung über einen schwachen montags oder den schwachen sommer fort
  196. zu machen weil das eventuell einfacher ist die datenstruktur ja für den für den kernel für den betriebssystemen kern zu verwalten dazu zeige ich ihnen eben noch
  197. dieses bild ja eine möglichkeit das immerfort zu verwalten ich denke mal eben noch einen teil hier also eine möglichkeit das ganze zu verwalten wäre
  198. ja dass man sagt ich habe eine datenstruktur selber vor irgendwo im kernel und wenn es jetzt mehrere prozesse oder stretch gibt die praktisch
  199. in der warteschlange eingereiht werden dann trage ich in dieser datenstruktur die prozess davon 1 jetzt ist es so wenn wir das ganze auf
  200. kernel ebene machen dann wollen wir in der regel solche datenstrukturen mit einer festen größe haben das heißt sie haben eine bestimmte
  201. anzahl slots hier nur zur verfügung um der prozessor dies einzutragen und wenn das voll wäre dann wären der stelle schluss und dann könnten sie
  202. keine weiteren einträge mehr vornehmen dass wir also ein bisschen unglücklich denn das läuft auf eine auf eine fehlerhafte implementierung hinaus oder
  203. wenn sie sagen es kann irgendwie 30.000 prozesse vielleicht geben im system dann müssten sie hier platz haben um 30.000 dies einzutragen für den extremen
  204. fall dass die alle auf den gleichen zimmer vor warten oder auf dem gleichen mut ex warten das ist natürlich quatsch
  205. deswegen wird man das dann in der regel nicht so implementieren wollen sondern man nimmt stattdessen etwas in dieser form eine dynamisch wachsende
  206. datenstruktur aus dem thema vor heraus wird zunächst nur auf einen eintrag gezeigt wurde ein prozessor drin steht das ist das erste listen element und
  207. wenn weitere in die warteschlange eingetragen werden dann erzeugen sie dynamisch weitere solche felder die jeweils als einfach verkettete liste auf
  208. das jeweils nächste element sagen das problem an der stelle ist halt das ist eben eine dynamische datenstruktur also jedes mal wenn sie neues element
  209. eintragen wollen müssen sie erstmal irgendwie den platz dafür beschaffen in einem normalen anwendungsprogramm ist es kein problem
  210. dann nutzen sie halt die mechanismen der der dynamischen speicherverwaltung um ein bisschen neuen platz zu generieren und und tragen dass ein und dann kann
  211. das beliebig wachsen aber im kernel ist es manchmal nicht so gern gesehen ja im betriebssystem kern wenn sie dynamisch wachsende datenstrukturen haben und
  212. deswegen gibt es eben noch die möglichkeit das ganz anders zu machen dass man sagt die seemer vor datenstruktur die speichert nur so eine
  213. statusinformationen und dass dieses status ist ein counter noch in dem counter steht praktisch drin wie groß ist die warteschlange also wie
  214. viele threads oder prozesse warten darauf ein exemplar von diesem zimmer vor bekommen zu können ja und dann haben sie irgendwo anders
  215. eine allgemeine prozess liste die besteht aus dem process control blocken oder aus dem swat control blocken eines trades sind und dann können sie da wenn
  216. so ein prozess so dass red jetzt wartet können sie eintragen okay der status ist blockiert wartet auf dem zimmer vor und dann müssen sie natürlich auch sagen
  217. auf welche das kann der mehrere zimmer vor im system geben so wie hier sehen wir vor diesem vorfall müssen sich also welcher von denen das ist und in dem
  218. beispiel wäre es eben so dass man dann hier in der prozesskontrolle blog eine id von diesem sommer vor angibt und dann haben sie eine lange liste von prozessen
  219. und wenn jetzt mehrere prozesse auf den gleichen zimmer vor warten dann gibt es halt mehrere einträge wo wo der gleiche sind zimmer frei die werte eingetragen
  220. ist aber die reihenfolge in der prozess liste die hat nichts damit zu tun in welcher reihenfolge die prozesse
  221. praktisch blockiert worden weil sie auf diesen sommer vor warten und wenn sie da jetzt nicht noch irgendwie zusätzlich über pointer ja die
  222. praktisch in der prozess liste irgendwie hin und her zeigen wenn sie dann nicht zusätzlich noch die reihenfolge mit speichern was aus performance gründen
  223. vielleicht nicht gewünscht ist dann kriegen sie eine struktur wo sie einfach in der prozess liste nach dem ersten prozess suchen müssen
  224. der hier dieses immer vor die eingetragen hat wenn sie also einen aus der warteschlange wecken die blockieren wollen und dann haben sie
  225. in schwachen silber vor denn der den sie da als erstes finden ist wahrscheinlich nicht der der als erster in die warteschlange aufgenommen
  226. wurde so soweit der über kurze überblick zum thema als solcher verbraucher problem ich hoffe sie fanden das nachvollziehbar
  227. geben sie gerne feedback dazu danke

Zum Nachlesen