1 - Speicher-/Nachrichten-Kommunikation [ID:28159]
50 von 399 angezeigt

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

Teil einer Videoserie :
Teil eines Kapitels:
Interprozesskommunikation

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.

Folien zum Video.

Tags

betriebssysteme operating systems
Einbetten
Wordpress FAU Plugin
iFrame
Teilen