Vorlesung Betriebssysteme II

Ähnliche Dokumente
Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Vorlesung Betriebssysteme I

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Projektseminar Parallele Programmierung

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN

Systemnahe Programmierung in C/C++

Systemprogrammierung.: unter Linux :.

Verbessertes Konzept: Monitore

Parallel Programming: Message-Passing-Interface

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Programmieren von UNIX-Netzen

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Robotersteuerung. VL Mikrorechentechnik 2. SS 2013 Professur für Prozessleittechnik

Domänenmodell: Fadenkommunikation und -synchronisation

DBUS Interprozess-Kommunikation für Embedded-Plattformen

Betriebssysteme (BTS)

3. Grundlagen der Systemprogrammierung

Nebenläufige und verteilte Programme CS2301

Einführung in das parallele Programmieren mit MPI und Java

SS 08. Systemprogrammierung unter Linux. Client Server Projekt. Elektronische Tafel. Seite

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

Interprozesskommunikation (IPC)

Systemprogrammierung unter Linux eine Einführung S. 1

Seminar: Mobile Geräte QNX Einführung

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Betriebssysteme (BTS)

SS / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement

Man liest sich: POP3/IMAP

Parallele Programmierung mit MPI

Einführung in die Systemprogrammierung unter Linux

Monitore. Klicken bearbeiten

Verteilte Systeme CS5001

Einige Gedanken. Vorlesung Betriebssysteme I. Kategorisierung von IPC-Mechanismen. Beispiele für IPC-Mechanismen (Auswahl)

User Level Device Driver am Beispiel von TCP

CONCURRENCY MODELS. Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm. (c) Peter Sturm, Universität Trier

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

2. Prozesssynchronisation

Visualisierung paralleler bzw. verteilter Programme

Mutual Exclusion und Synchronisation. Peter Puschner Institut für Technische Informatik

iphone Push bei den VZ Netzwerken

2 Dieter an Mey, SunHPC 2002, Einleitung 10000, , ,000 10,000 1,000 0,100 0,010. 0,001 Cyber 175 Cyber 205

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt

Computational Biology: Bioelektromagnetismus und Biomechanik

Parallele Programmierung mit OpenMP

10. Vorlesung Betriebssysteme

Nebenläufigkeit. Fakultät für Informatik der Technischen Universität München. Echtzeitsysteme Lehrstuhl Informatik VI Robotics and Embedded Systems

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

SMTP-Verfahren POP-Verfahren IMAP-Verfahren

In Erlang(en) Concurrency Oriented Programming. Jan Hermanns

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 3

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil

Das nachfolgende Konfigurationsbeispiel geht davon aus, dass Sie bereits ein IMAP Postfach eingerichtet haben!

NEBEN - LÄUFIGE PROG RAM -

Steffen Heinzl Markus Mathes. Middleware in Java

Wiederholung: Beginn

11: Echtzeitbetriebssystem ucos-ii

Inhaltsverzeichnis Übersicht Prozesse

Ein Laufzeitsystem für hochgradig parallele Simulationen

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Thread-Erzeugung kostengünstiger als Prozesserzeugung Thread-Umschaltung kostengünstiger als Prozessumschaltung

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Rapid I/O Toolkit. Alexander Bernauer

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

PLC-5- und SLC-Prozessoren im DH+ Verbund (SLC 5/04 -Prozessoren)

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

Oracle Advanced Queuing AQ

Protected User-Level DMA in SCI Shared Memory Umgebungen

Einführung in die Parallelprogrammierung MPI Teil 1: Einführung in MPI

Technische Anforderungen. zum Empfang. von XML-Nachrichten

JMS Java Message Service

Programmierkurs: Delphi: Einstieg

Technische Beschreibung: EPOD Server

Tafelübung zu BS 4. Interprozesskommunikation

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

Dokumentation zur Anlage eines JDBC Senders

STRATO Mail Einrichtung Windows Live Mail

... Client 1. Request. Reply. Client 2. Server. Client n. Günther Bengel Grundkurs Verteilte Systeme 3. Auflage Vieweg Verlag 2004 ISBN

Programmierung mit C Zeiger

Beschreiben Sie stichwortartig, was die folgenden Kommandos bewirken.

Das nachfolgende Konfigurationsbeispiel geht davon aus, dass Sie bereits ein IMAP Postfach eingerichtet haben!

Rüdiger Brause. Betriebssysteme. Grundlagen und Konzepte. Dritte, überarbeitete Auflage Mit 170 Abbildungen. Springer

FAQ IMAP (Internet Message Access Protocol)

Verteilte Algorithmen TI5005

Repetitorium Informatik (Java)

Transmission Control Protocol (TCP)

VS3 Slide 1. Verteilte Systeme. Vorlesung 3 vom Dr. Sebastian Iwanowski FH Wedel

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 2

Interprozesskommunikation

Lotus Notes: Mail Lunchveranstaltung für Institutsmitarbeitende

Berichte aus der Medizinischen Informatik und Bioinformatik. Günther Schadow. Krankenhauskommunikation mit HL7

Installation und Benutzung AD.NAV.ZipTools

Nebenläufige Programme mit Python

Systemsoftware (SYS)

Schleifenprogrammierung in C/C++, Fortran und Pascal

Transkript:

1 / 15 Vorlesung Betriebssysteme II Thema 3: IPC Robert Baumgartl 20. April 2015

2 / 15 Message Passing (Nachrichtenaustausch) Prinzip 2 grundlegende Operationen: send(), receive() notwendig, wenn kein gemeinsamer Speicher (verteilte Systeme) auch mit gemeinsamem Speicher möglich (z.b. Mikrokerne) erforderliche Funktionalität: Synchronisierung (synchron/asynchron, d.h., blockierend / nichtblockierend) Adressierung des Kommunikationspartners Authentifizierung

Synchronisation mit Nachrichten 3 / 15 a) beide blockieren ( Rendezvous ) keine Pufferung notwendig, Kopieraufwand z.b. Server-Client-Interaktion implizite Empfangsbestätigung b) receive() blockiert, send() blockiert nicht ( No-Wait-Send ) explizite Empfangsbestätigung nötig c) beide blockieren nicht Modifikation: Blockierung mit Timeout statt vollständiger Blockierung

4 / 15 Adressierung direkt: Empfängerprozeß benannt indirekt: Nachricht an Datenstruktur gesendet, Empfänger holt Nachricht von DS ab (flexibler) Port Mail box Abbildung: Message Passing mit Port (m:1), z.b. Mach Abbildung: Message Passing mittels Mailbox (m:n)

5 / 15 Praxisbeispiele für Message Passing MPI - Message Passing Interface standardisierte Bibliothek zur Programmierung von Parallelrechnern und heterogenen Netzen Senden sowohl synchron als auch gepuffert, Empfang stets synchron > 150 Rufe

Einfaches MPI-Beispiel (2 Knoten, FORTRAN) 6 / 15 include mpif.h integer myrank, numprocs, ierr integer status(mpi_status_size) real side, square side = 7.0 square=0.0 C call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myrank, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) print *, I am node,myrank, out of,numprocs, nodes. if(myrank.eq.1) then square = side * side call MPI_SSEND(square,1,MPI_REAL,0,99,MPI_COMM_WORLD,ierr) endif if(myrank.eq.0) then print *, Before receive square is,square call MPI_RECV(square,1,MPI_REAL,1,99,MPI_COMM_WORLD,status,ierr) print *, After receive square is,square endif call MPI_FINALIZE(ierr) end

Anmerkungen 7 / 15 call MPI_SEND(square,1,MPI_REAL,0,99,MPI_COMM_WORLD,ierr) Sendepuffer Datentyp Ziel prozeß Communicator Fehlerzustand Anzahl zu sendender Einträge Tag Abbildung: Parameterbedeutung bei MPI_SEND Daten werden mittels sog. Communicators ausgetauscht; MPI_COMM_WORLD schliesst alle Knoten ein. MPI_COMM_RANK ermittelt für jeden Knoten den ID Tag (99) dient der Selektion von Kommunikationspartnern MPI_SSEND ist synchron, MPI_BSEND buffered; MPI_RECEIVE immer synchron

8 / 15 Praxisbeispiele für Message Passing Mikrokern L4 synchrone, ungepufferte IPC mit Timeouts für send() und receive(): 0 asynchrone IPC, blockierend, sonst µs-granularität http://os.inf.tu-dresden.de/l4/

9 / 15 Praxisbeispiele für Message Passing Pascal-FC Kanäle (channel of <type>) zur Kommunikation synchrone Operationen Send: <Kanal>! <Variable> Receive: <Kanal>? <Variable> vgl. Communicating Sequential Processes CSP (Hoare)

Erzeuger-Verbraucher-Problem mit Message Passing Pascal-FC program erzvermp ; var l i n k : channel of char ; process producer ; var l o c a l : char ; begin f o r l o c a l := a to z do begin ( produce item ) l i n k! l o c a l ; end end ; ( producer ) process consumer ; var l o c a l : char ; begin repeat begin l i n k? l o c a l ; ( consume item ) w r i t e l n ( read:, l o c a l ) ; end u n t i l l o c a l = z ; end ; ( consumer ) begin cobegin producer ; consumer coend end. 10 / 15

11 / 15 Praxisbeispiele für Message Passing Nachrichtenwarteschlangen in der System-V-IPC Syscall msgget msgctl msgrcv msgsnd Semantik Anlegen (und Zugriff) einer MQ Manipulation einer MQ Empfang einer Nachricht Senden einer Nachricht Wiederum gibt es eine zweite API: POSIX Message Queues (vgl. man mq_overview) Praktikum einfaches Beispiel: msgclient.c, msgserver.c, share.h (extern)

12 / 15 Shared Memory Idee: Mehr als einem Prozess Zugriff auf ein (wohldefiniertes) Stück Speicher gewähren. weicht das Prozess-Konzept ein wenig auf sehr effizient, da keine Daten transportiert werden müssen keine implizite Synchronisation (wie bei Sockets, Pipes oder Message Passing) Zugriff muss durch Prozesse selbst koordiniert werden (Semaphore, Bedingungsvariable, Monitore,......) Threads innerhalb ein- und desselben Prozesses nutzen per definitionem keinen Shared Memory

Systemrufe in der System-V-API 13 / 15 1. Anlegen des Segmentes mittels shmget() genau ein Prozess muss das Segment kreieren alle weiteren Prozesse müssen sich damit Zugriff verschaffen Größe (size) wird auf ein Vielfaches der Seitengröße aufgerundet Resultat: Identifikator des Segmentes 2. Einblenden des Segmentes mittels shmat() (attach) Einblende-Adresse wählbar oder durch das System vorgegeben Resultat: Zeiger auf den Beginn des Segmentes 3. Zugriff auf das Segment (über Zeigervariable; keine Systemrufe nötig)

Systemrufe in der System-V-API... continued 14 / 15 4. Ausblenden des Segmentes mittels shmdt() (detach) 5. Manipulation des Segmentes mittels shmctl() (control) wiederum unterschiedliche Kommandos für verschiedene Management-Aufgaben IPC_RMID - zum Zerstören markieren (Zerstörung erst nach letztem Detach) IPC_INFO - Abrufen systemweiter Limits bezüglich Shared-Memory-Segmente (Größe, Anzahl) SHM_LOCK - Verhinderung des Paging (Linux-spezifisch)

15 / 15 POSIX-API für Shared Memory wiederum gibt es eine zur System-V-IPC alternative API sehr eng an Syscalls für Dateien (open(), unlink()) angelehnt Ruf shm_open() shm_unlink() mmap() munmap() Semantik Anlegen/Öffnen eines Segmentes Löschen eines Segmentes Einblenden des Segmentes Ausblenden des Segmentes