Netzwerk - Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Advertisements

C Tutorium – Semaphoren –
Imperative Programmierung -Entwicklungswerkzeuge
Datenbankzugriff im WWW (Kommerzielle Systeme)
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Perl-Grundlagen Teile der Präsentation von A. Grupp,
Vorl. 6: Single- und Multitasking Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Programmierung 1 - Repetitorium
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
SOFTWARE.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Patrick Schmerlaib. Scriptsprachen: sind Programmiersprachen Verzichten auf Sprachelemente Vorteile: schnelle Erstellung kleiner Programme Flexible Sprache.
Betriebssysteme & BIOS
Proseminar Programmiersprachen Python
CGI (Common Gateway Interface)
PHP Basic.
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Unterprogramme in JAVA
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.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
1 Projekt1: Prozesse unter Unix Aufgabenstellung 2: Interprozessnachrichtentausch.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Betriebssysteme: Windows-OS
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
2.3 Implementierung von Prozessen
1.3 Verklemmungen Synchronisation löst Probleme – ist aber auch Gefahrenquelle: Prozeß wartet an Synchronisationspunkt – ist gesichert, daß er irgendwann.
Übung Betriebssysteme, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil II Prozesse / Systemaufrufe Fehlerbehandlung.
1 Vorlesung 6 Peter B. Ladkin Single- und Multitasking Peter B. Ladkin
A SHORT INTRODUCTION TO CONCURRENT EUCLID Entwicklung von Euclid 1976 Entwicklung von Euclid 1977 Entwicklung des „TORONTO Euclid“ 1977 Entwicklung.
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Windows, Mac oder doch Linux?
Objektorientierte Programmierung §Klassen §Objekte §Attribute §Eigenschaften §Methoden §Datenkapselung §Ereignisse §Vererbung §Entwicklungszeit §Laufzeit.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
Anatomie eines Computersystems Kernel, Treiber, Windows Manager und anderes Spielzeug Manuel Blechschmidt & Volker Grabsch CdE Sommerakademie 2006 Kirchheim.
Ablauf von Daten- verarbeitungsprozessen Gliederung: ● Zeitliche Steuerung von Abläufen – Druckauftragsverarbeitung – scheinbare Gleichzeitigkeit von Prozessen.
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
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung I/O Multiplexing Alexander Sczyrba
Netzwerk - Programmierung
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Concurrent Clients Alexander Sczyrba
Netzwerke - Protokolle
Netzwerk - Programmierung
Prof. Dr. Dieter Steinmann – Hochschule Trier
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Magische Wand Ein Spiel zum Thema: Betriebssysteme.
Netzwerk - Programmierung
Linux.
Aufgaben Semaphore Übersicht (Dijkstra)
Implementieren von Klassen
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Netzwerk - Programmierung Prozesse Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de

Übersicht Prozesse fork() Parents und Children system() und exec()

Prozesse moderne Betriebssysteme (UNIX-artige (Linux, OSX, Solaris,[Free— Net—Open]BSD, Windows ab NT/2000) sind multitasking-fähig: mehrere Programme können simultan ablaufen jedes in separatem Prozess das OS bestimmt den Wechsel zwischen den einzelnen Prozessen

Multitasking in Perl Perl unterstützt zwei Arten von Multitasking: Fork() basiert auf traditionellem UNIX Multiprozess-Modell erlaubt dem aktuellen Prozess, sich selbst zu klonen Ergebnis: zwei in fast jeder Hinsicht identische Prozesse Multithreading modernes Konzept eines Threads Aufgaben werden in einem einzigen Prozess gehalten einzelnes Programm kann aus nebeneinander ausgeführten Threads bestehen, von denen jeder unabhängig von den anderen läuft

fork() jedem Prozess im System wird eine eindeutige pos. Zahl zugeordnet: Prozess-ID oder PID Funktion fork() ist in allen UNIX Versionen von Perl verfügbar erzeugt ein exaktes Duplikat des aktuellen Prozesses, nach dem fork existieren parent und child child-Prozess übernimmt: aktuelle Werte aller Variablen Dateihandles (inkl. Daten in I/O-Puffern) weitere Datenstrukturen Voraussetzung: Parent und Child wissen, wer von ihnen wer ist

Welche Informationen liefert ps? Aufgabe Ermittle, wie viele Prozesse unter Deiner userid laufen. Verwende dazu den Befehl ps mit den entsprechenden Opionen (siehe man ps). Welche Informationen liefert ps? Der Befehl p[s]tree* gibt Informationen über Prozesse, ihre Kinder und Eltern in Baumstruktur aus. Welcher Prozess ist der Parent aller Prozesse? * Solaris/BSD – ptree, Linux/OSX – pstree → unter OSX nicht Teil des Systems

fork() $pid = fork verzweigt in einen neuen Prozess Rückgabewert im Parent-Prozess: PID des Child-Prozesses im Child-Prozess: 0 im Falles eines Fehlers: undef Vgl. perldoc -f fork

Hilfreiche Funktionen $pid = getppid() gibt PID des Parent-Prozesses zurück $$ enthält die PID des aktuellen Prozesses $pid = wait() wartet auf die Terminierung eines Child Prozesses und gibt die PID des terminierten Prozesses zurück

Beispiel fork() print "PID=$$\n"; my $child = fork(); die "cannot fork: $!" unless defined $child; if ($child == 0) { # child| my $ppid = getppid(); print "Child-Process: PID=$$, Parent=$ppid\n"; exit(0); }else { # Parent my $ppid = getppid(); print "Parent-Process: PID=$$, Child=$child, Parent=$ppid\n"; wait(); }

Zombies terminiert der Parent vor dem Child, wird dieser zum ’Waisenkind’ und vom Init-Prozess ’adoptiert’ ein Prozess, der terminiert ist, dessen Parent aber nicht darauf gewartet hat, wird Zombie genannt

Aufgabe ändere das fork()-Beispiel so, dass 1. das Child vom init-Prozess übernommen wird 2. das Child zu einem Zombie wird Benutze top, ps, p[s]tree um das Verhalten der Skripte zu analysieren

system() und exec() system() führt ein anderes Programm als Unterprozess aus wartet auf dessen Beendigung exec() ersetzt den aktuellen Prozess durch angegeben Befehl bei Erfolg kehrt der Aufruf nie zurück neuer Prozess hat die gleiche PID wie alter Prozess verwendet dieselben STDIN-, STDOUT-, STDERR-Dateihandles

Aufgabe Schreibe ein Programm, das alle 5 Sekunden die aktuelle Uhrzeit ausgibt.Verwende dazu: exec() date #!/usr/bin/env perl -w print "$$\n"; for($i=0;$i<5;$i++) { if (fork() == 0) { # child exec("date"); } else { # Parent wait(); Sleep(5); }