1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.

Slides:



Advertisements
Ähnliche Präsentationen
A/a 8bit 7bit Fehlende Namen? Prinzip Reduzierung erlaubt Wir assuren nur was wir in Ausweisen lesen.
Advertisements

der Universität Oldenburg
Strukturen in C Spelz, Sievers, Bethke.
Klassen - Verkettete Liste -
Operating Systems Principles
Ein- und Ausgabe von Dateien
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
C Tutorium – Semaphoren –
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Threads Richard Göbel.
Dynamischer Speicher und Struktur
WHILE - Anweisung.
DO...WHILE Anweisung.
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
Spieleprogrammierung mit DirectX und C++
OpenMP Präsentation im Rahmen des Seminars
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Bs Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten.
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Optimierungstechniken für SMP- Architekturen.
Operating Systems Principles
Einführung in Visual C++
15.1 Synchronisation nebenläufiger Prozesse
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
3D Programmierung Version 12 - Highscores. Die vom Spieler erzielte Punktzahl wird mit 5 vorgegebenen Punktzahlen verglichen und, falls nötig, in die.
Einfach verkettete Listen
| AVS / Programmierung Kapitel 1: Programmierung Einführung Motivation – Entwicklung verteilter Anwendungen im Internet Welchen Dienst soll die Anwendung.
RTAI-Linux Echtzeiterweiterung für Linux
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmiersprache C 4
3.3 Speicher Latches SR-Latch 1-bit Speicher S Q Q R Q Q
Dynamische Datentypen
Prozess-synchronisation
Bs Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.

BMEVIEEA100 Grundlagen der Programmierung
Programmieren in C Dateien
1 // 13_2_ADT_Unger_Graph // ungerichteter, knotenmarkierter Graph als ADT // #include struct Knoten { public: void Erzeuge_Kn (int, char*); char* Get_Marke.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Echtzeitbetriebssysteme Übungen
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
CODA - Installation Installation der Binärdateien –Venus: Client-Programm –Vice: Server-Programm –Für Windows existiert eine Alpha-Version (Coda Client.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
1 // Verkettete Liste 3 // demonstriert verkettete Listen und // Rekursion // (mit Entfernen eines Listenelementes) // #include struct Liste { int Element;
Bs-61 6 Dateiverwaltung. bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
LINUX II Unit 9 Network File Server NFS. NFS Überblick ● Zugriff von lokalen Rechner über Netzwerk auf Dateien oder Ordnern auf entfernten Servern ● Entwickelt.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
1.Event Queue.
Arguments to main() int main(int argc, char *argv[]) { int i;
Seminar Programmierstil: Codierungsstandards
Shared Memory Programmierung: Grundlagen
 Präsentation transkript:

1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen völlig Fremden Prozessen Halbduplex wie Pipes -> kein mehrfaches Lesen Erzeugen mit –int mknod(char *pfadname, int mode, int dev); –oder int mkfifo(const char *pfadname, mode_t mode); Owner ID is set to the effective user ID of the process Group ID of the file is set to the group ID of the parent directory if the SetGroupID attribute (S_ISGID) of the parent directory is set. Otherwise, the group ID of the file is set to the effective group ID of the calling process. Permission- und Attribut-Bits werden entsprechend dem Mode-Flag gesetzt. Vorhandene schließen mit unlink("fifo0001");

2 Named Pipes Beispiel: Erzeugen, Schreiben und Lesen 1 #include int main() { int fd_fifo; /*handle for FIFO*/ char puffer[]="This text is for the fifo\n"; char buf[100]; unlink("/tmp/fifo0001.1"); /*We create a FIFO*/ if((mkfifo("/tmp/fifo0001.1", O_RDWR)) == -1) { fprintf(stderr, "Can't creat a fifo \n"); exit(0); } /*We open the fifo for read and write*/ if((fd_fifo=open("/tmp/fifo0001.1", O_RDWR)) == - 1) { fprintf(stderr, "Can't open the fifo.....\n"); exit(0); } write(fd_fifo,puffer,strlen(puffer)) ; if(read(fd_fifo, &buf, sizeof(buf)) == -1) fprintf(stderr, "Error! can't read from FIFO \n"); else printf("read now from FIFO : %s\n",buf); return 0;}

3 Named Pipes Beispiel: Erzeugen, Schreiben und Lesen 2 Mit ls –l kann die für die Named Pipe angelegte Datei angesehen werden: p tot tot 0 Jun 9 11:33 fifo0001|

4 Named Pipes Beispiel: Drucken #include #define BUF 8192 void an_den_drucker(char *text) { FILE *p; /*Pipe zum Tool lpr erstellen zum Schreiben auf lpr*/ p=popen("lpr","w"); if(p == NULL) { fprintf(stderr,"Konnte keine Pipe zu \'lpr\' erstellen!!\n"); exit(0); } /*An den Drucker schreiben*/ printf("Sende Auftrag an den Drucker......\n"); fprintf(p, "%s", text); fflush(p); pclose(p); } int main() { char puffer[BUF], inhalt[BUF]; int fd,n; inhalt[0]='\0'; if(mkfifo("fifo1.1", O_RDWR) < 0){ fprintf(stderr,"Konnte keine FIFO erzeugen!!\n"); exit(0); } /*Empfänger ließt nur aus der FIFO*/ fd=open("fifo1.1", O_RDONLY); if(fd == -1) {perror("open : "); exit(0); } /*Endlosschleife*/ while(1) { if(n=read(fd,puffer,BUF)) an_den_drucker(puffer); sleep(2); } return 0;}

5 Pipes vs. Shared Memory Mit Pipes können sowohl 1:1 als auch 1:n Synchronisationen gemacht werden Mit Shared Memory können m:n Synchronisationen realisiert werden Pipe Zugriffe sind nicht so schnell wie Shared Memory Zugriffe Pipes eignen sich für Prozesskommunikation zwischen verschiedenen Diensten Shared Memory eignet sich besser für schnelle Interaktion zwischen mehreren Prozessen oder Threads

6 Shared Memory und Synchronisation Ein Shared Memory Segment (SMS) ist im Prinzip eine Art globaler Variable zwischen mehreren Prozessen. Bei (pseudo-)parallelen Prozessen kann es jedoch passieren, dass mehrere Prozesse zugleich auf den Speicher schreiben, wodurch es zu einem inkonsistenten Zustand kommen kann. Für Synchronisationen zwischen mehreren Prozessen, die auf ein gemeinsames SMS zugreifen, ist ein Prozesssynchronisationsalgorithmus (Striktes Alternieren, Petersons) nötig, der Zugriffe auf das SMS beschränkend sperrt (sequentialisiert). Wird keine Prozesssynchronisation gemacht, so entstehen bei parallelen Schreibzugriffen auf das SMS inkonsistente Zustände aka Race Conditions (Hackers Liebling ;) In Datenbanken wird das ganze unter Transaktionsmechanismen behandelt.