Moin moin liebe Leute, willkommen zum nächsten Video zur Folgerungsreihe Betriebssysteme.
Neues Kapitel, neues Kapitel soll sein Interprozesskommunikation. Im ersten
Teil gucken wir uns mal Speicherkommunikation beziehungsweise Nachrichtenkommunikation an.
Ja, wir befinden uns also in unserem Burger hier an dieser Stelle. Wir wollen zwischen zwei
Fäden oder zwischen zwei Prozessen kommunizieren. Jetzt allerdings das was hier so drin rein soll
in die Box ist praktisch das was Anwendungsprogramme brauchen um miteinander reden zu können. Das so im
Hinterkopf behalten. Es geht eigentlich um jetzt Anwendung und die Methoden die Anwendung zur
Verfügung gestellt kriegen, dass sie miteinander kommunizieren können. Ja, wir einordnen das mal
kurz ein. Danach in diesem Video kommt noch die Interprozesskommunikation über Speicher und
Nachrichten. Da seht ihr zwei verschiedene Varianten und das wird dann Teil vom nächsten
Video sein, dass man sich mal überlegt ja welche der beiden Varianten ist dann wohl die vielleicht
bessere beziehungsweise gibt es dann auch Alternativen dazu. Jo, fangen wir mal an mit einer
kleinen Einordnung. Ja, was heißt Kommunikation? Ganz kurz, nichts großes dabei. Ist mal logisch,
wie heißt es so schön, wenn A Information von B braucht, dann muss A so lange warten bis B die
Information bereitstellt. Das ist das was man so als Chaos Hall Prinzip bezeichnet. Das eine muss
vor dem anderen passieren. Wichtig hier Kommunikation ist nicht nur das bereitstellen der Daten. Also die
Daten kann ich irgendwo hin kopieren. Ja, aber ich muss auch noch irgendwie einen, man sagt immer
gerne so ein Event erzeugen, auf das der jeweils andere warten kann. Ich kann die Daten hinlegen und
ich signalisiere ein Event die Daten sind jetzt da und dieses Event das ist genauso wichtig wie
die Daten an sich. Gut, wie kann man das von der Idee her machen? Ja, zwei Varianten gibt es.
Send und Resif wäre natürlich was, das ist so, wenn man über Kommunikation redet, dann fällt einem
häufig Send und Resif als erstes ein. Da steckt dieses Event irgendwie mit drin. Ihr könnt euch
das vorstellen, so wie bei den amerikanischen Postkästen, wenn man einen Brief sendet und
er landet in der Mailbox, dann geht das Fähnchen hoch. Die eigentlichen Daten sind in der Mailbox,
in diesem Kästchen und die Fahne, das ist sozusagen diese Signalisierung dieses Events,
ja da liegt was drin, kannst du abholen. Jetzt muss man sich noch überlegen, wie implementiert
man sowas. Erste Variante, man kann es über Speicher versuchen. Speicher, so ganz einfache Idee,
der eine kopiert Daten in den Speicher und signalisiert dem anderen, da liegt was drin und
der andere lädt es aus dem Speicher wieder raus. Da gibt es allerdings dann verschiedene Varianten
das zu tun. Gucken wir uns an. Erstmal, wenn man sagt, wir wollen über gemeinsamen Speicher kommunizieren,
dann ist es erstmal logisch, man braucht gemeinsam Speicher. Das ist nicht notwendigerweise möglich.
Gehen wir mal durch, welche Möglichkeiten es gibt. Die einfachste Möglichkeit, wir haben einfach
Speicher und wir haben vielleicht sogar gar keine MMU, die den Speicher in irgendeiner Form schützt
oder wir benutzen die MMU nicht. So, oostubs, mpstubs, da sind alle Fäden im gleichen Adressraum.
Jeder kann auf jede Speicherzette zugreifen. Dann funktioniert es zum Beispiel. Es gibt natürlich
auch Systeme, ihr kennt das von Java zum Beispiel, wenn man dann eine passende Referenz auf ein Objekt
hat, Objekt ist natürlich Speicher, wenn man eine Referenz drauf hat, dann kann man über dieses
Objekt irgendwie Daten austauschen. Funktioniert typischerweise natürlich zwischen Threads. Ihr
kennt beispielsweise die PSthread Library. Da sind im selben Adressraum dann verschiedene Fäden und
die haben dann eben auch gemeinsam Speicher. Unter Umständen kann man sich auch gemeinsam Speicher
geben lassen vom Betriebssystem. Das gibt es zum Beispiel in der Windows Welt, das gibt es aber auch
in der Unix Welt. In der Unix Welt zum Beispiel das sogenannte System 5 Shared Memory Zeug. Kann man
einfach sagen, ich hätte gern so und so viel Shared Memory in meinen Adressraum eingeblendet.
Das kann der eine Prozess machen, das kann der andere Prozess machen und dann können sie über
diesen Shared Memory Bereich kommunizieren. Und das letzte, was häufig noch der Fall ist,
häufig hat man das Betriebssystem so gebastelt, dass das Betriebssystem immer eingeblendet ist
in allen Adressräumen von allen Prozessen. Das heißt die Prozesse im User Mode sind zwar schön
voneinander isoliert, aber wenn sie im Kern sind, dann haben sie den gleichen Speicher, den sie sehen.
Darüber kann man natürlich dann potenziell auch kommunizieren. Schön daran ist, kann man sich
vorstellen, ihr könnt einfach in den Speicher reinschreiben. Das kann man auch gegebenenfalls
Presenters
Zugänglich über
Offener Zugang
Dauer
00:48:50 Min
Aufnahmedatum
2021-01-15
Hochgeladen am
2021-01-18 19:28:50
Sprache
de-DE
13. Kapitel der Vorlesung Betriebssysteme.