Beispiel Block 2. Oliver Höftberger SS Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes

Größe: px
Ab Seite anzeigen:

Download "Beispiel Block 2. Oliver Höftberger SS Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes"

Transkript

1 Beispiel Block 2 Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes Oliver Höftberger SS 2013 Slides by Benedikt Huber 1

2 fork, exec, exit und wait Prozess erzeugen Programmabbild ersetzen Programm beenden Auf Ende eines Prozesses warten 2

3 Prozesseigenschaften Linux (1) Zustand Scheduling Identifikation Speicherverwaltung Signale Running, Stopped, Priorität, CPU-Zeit, PID, Owner, Gruppe, Pointer auf MMU Info Mask, Pending Prozessverwandschaften Parents, Siblings 4/9/2013 3

4 Prozesseigenschaften Linux (2) Process Control Block Register, PC, Statuswort, Segmentregister, Page Table Info Kernelstack Dateideskriptorentabelle Berechtigungen, Accounting Information Timerverwaltung Interprozesskommunikation Siehe: sched.h / struct task_struct 4/9/2013 4

5 Prozesshierarchie Jeder Prozess hat Vaterprozess Ausnahme: init Jeder Prozess hat eine eindeutige ID (pid_t) init acpid ahc_dv_0 ahc_dv_1 bash clock-applet crond cups-config-dae cupsd 2*[dbus-daemon-1] dbus-launch dhcpd gdm-binary gdm-binary X gdmgreeter gdm-binary... 2*[sendmail] sesam_server sesam_server sesam_server... smbd 5*[smbd] sshd sshd sshd bash pine sshd sshd bash pine.. 5

6 Erstellen von Prozessen Prozesse werden üblicherweise mit fork(2) erzeugt. Weitere Möglichkeit: clone(2) In der Übung ist ausschließlich fork(2) zu verwenden exec(3) überschreibt den aktuellen Prozess durch ein anderes Programm. wait(3) wartet auf die Terminierung eines Kindes 6

7 fork() / exec() / wait() fork() erzeugt neuen Prozess exec*( program ) ersetzt image eines Prozesses durch neues Programm exit(status) beendet Prozess wait*(&status) wartet auf Beendigung des Kindprozesses fork parent wait initialize child context fork child exit exec 7

8 fork() Erzeugt einen neuen Prozess Neuer Prozess ist eine identische Kopie des aufrufenden Prozesses (bis auf PID, Locks,...) Erzeugender Prozess ist Vater des erzeugten Prozesses Beide Prozesse laufen parallel und führen dasselbe Programm aus fork parent wait initialize child context fork child exit exec 8

9 fork() Vaterprozess npid = fork() PC Vor dem fork Nach dem fork Vaterprozess Kindprozess npid = fork() PC npid = fork() PC 9

10 fork() Unterscheidung zwischen Vater- und Kindprozess durch den Rückgabewert von fork(): -1 0 >0 im Fehlerfall im Kindprozess (child) im aufrufenden Prozess (parent) 10

11 fork() Kindprozess erbt von Elternprozess offene Dateien (gemeinsamer Zugriff!) Dateipuffer Signaldefinitionen momentane Variablenwerte Jedoch gilt: Variablen sind lokal (keine Beeinflussung) Signale können lokal umgesetzt werden Kommunikation (IPC) via Pipes, Sockets, Shared Memory,... 11

12 C-Interface #include <sys/types.h> #include <unistd.h> pid_t fork(void); 12

13 Verwendung von fork() pid_t pid;... switch (pid= fork()) { case -1: bail_out( can t fork ); break; case 0: /* child: ChildProcess() */... exit(exit_success); break; default: /* parent: ParentProcess() */... break; } 13

14 clone(2), vfork(2) clone() wird von fork(2), vfork(2) aufgerufen. clone() erlaubt Kontrolle über die zu duplizierenden Eigenschaften (Linux spezifisch, nicht portabel!) vfork(): blockiert bis exec(), das Kind darf keine Variablen mehr ändern, und nur noch exec() ausführen. Veraltet, nicht mehr empfohlen clone(), vfork() ist kein Teil des Stoffes! 14

15 exec() fork parent fork child Erlaubt es einem Prozess, ein anderes Programm auszuführen Startet ein neues Programm innerhalb eines Prozesses PID bleibt gleich initialize child context exec wait exit 15

16 Die exec() Familie (1) int execl(const char *path, const char *arg,...); int execlp(const char *file, const char *arg,...); int execle(const char *path, const char *arg,..., char * const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int fexecve(int fd, char *const argv[], char *const envp[]); 16

17 Die exec() Familie (2) Ersetzt aktuelles Programm durch das in der Datei path enthaltene exec*p - Variante sucht (wie Shell) in $PATH nach Programm mit dem spezifierten Namen Argumentübergabe beachten! Argumentliste muss mit NULL Zeiger enden Varianten mit variable Argumentanzahl (execl*) und Argumentarray (execv*) Variante execle: Environment kann verändert werden Variante fexecve: akzeptiert Dateideskriptor 17

18 execv(), execvp() #include <unistd.h> int execv(char *path, char *argv[] ); int execvp(char *filename, char *argv[] ); char *cmd[] = { "ls", "-l", (char *) 0 }; (void) execv ("/bin/ls", cmd); (void) execvp ("ls", cmd); bail_out ( can t exec ); 18

19 execl(), execlp() #include <unistd.h> int execl(char *path, char *arg0,..., char *arg_n,(char*)0); int execlp(char *filename, char *arg0,..., char *arg_n, (char*)0); (void) execl ( /bin/ls, ls, -l, (char*) 0 ); (void) execlp ( ls, ls, -l, (char*) 0 ); bail_out ( can t exec ); 19

20 exit() fork parent fork child Beendet den aktuellen Prozess Rückgabewert kann von Vaterprozess abgefragt werden Beim Beenden: Leeren der stdio Buffer Schließen offener Dateien Löschen von temporären Dateien (tmpfile(3)) Aufrufen von Exit-Handlern (atexit(3)) wait initialize child context exit exec 20

21 exit() void exit(int status); Status: 8-bit (0-255) Im C-Standard definierte Rückgabewerte exit(exit_success) exit(exit_failure) keine Fehler Fehler aufgetreten Weitere Rückgabewerte BSD: sysexits.h 21

22 wait() fork parent fork child Wartet bis Kindprozess terminiert Liefert PID und Status des beendeten Prozesses Wenn kein Kindprozess existiert, - 1 als Rückgabewert (auch bei EINTR) initialize child context exec wait exit 22

23 wait() Liefert PID und Status des terminierten Kindprozesses pid = wait(&status) Status beinhaltet Rückgabewert und Signalinformation WIFEXITED(status), WEXITSTATUS(status) WIFSIGNALED(status), WTERMSIG(status) See man 2 wait Nach dem Aufruf von wait wird der Kindprozess aus der Prozesstabelle entfernt 23

24 exit(): Zombies UNIX: Auch bereits terminierte Prozesse besetzen einen Eintrag in der Prozesstabelle falls kein Platz mehr frei ist, kann kein neuer Prozess mehr gestartet werden Der Kindprozess terminiert und der Vaterprozess hat noch nicht wait ausgeführt Der Kindprozess wird auf Zustand Zombie gesetzt Eintrag in der Prozesstabelle bleibt erhalten bis der Vaterprozess wait ausführt 24

25 exit(): Zombies #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { unsigned i = 0; while(++i) { pid_t pid = fork(); if(pid < 0) { bail_out( fork() ); } if(pid == 0) { exit(exit_success); } printf( We now have %d zombies \n",i); } } 25

26 exit(): Orphans UNIX: Auch bereits terminierte Prozesse besetzen einen Eintrag in der Prozesstabelle falls kein Platz mehr frei ist, kann kein neuer Prozess mehr gestartet werden Der Vaterprozess terminiert und der Kindprozess wurde noch nicht beendet Kind Prozess verwaist (orphan) und wird dem init Prozess vererbt Nach der Beendigung eines Orphans entfernt init den Prozesseintrag 26

27 C-Interface Stoppt Prozessausführung bis entweder Kindprozess terminiert oder ein Fehler auftritt ( busy waiting). #include <sys/wait.h> pid_t wait ( int * status ); int status; pid_t child_pid, pid;... while ((pid = wait(&status))!= child_pid ) { if (pid!= -1) continue; /* other child */ if (errno == EINTR) continue; /* interrupted */ bail_out( can t wait, 1 ); } if (WEXITSTATUS(status) == EXIT_SUCCESS )... 27

28 waitpid(): verwandter Call to wait() Warten auf das Terminieren eines Prozesses mit einer bestimmten Prozess ID: pid_t waitpid (pid_t pid, int *status, int options); waitpid(-1,&status,0) äquivalent zu wait waitpid(pid, &status, 0) wartet auf Kind mit PID pid waitpid(-1, &status, WNOHANG) blockiert nicht. 28

29 Wurde ein Kind beendet? Synchron waitpid(-1,&status, WNOHANG) Blockiert nicht, holt Exit-Status falls ein Kind beendet wurde (Polling) Asynchron Wenn ein Kind beendet wurde wird das Signal SIGCHLD an den Elternprozess gesendet. Installieren eines Signalhandlers (sigaction) für SIGCHLD Aufruf von wait im Signal Handler 29

30 Rückblende Teil 1 fork() - Kindprozess erzeugen exec() - neues Programm innerhalb eines Prozesses starten exit() den aktuellen Prozess beenden wait() - im Vaterprozess auf die Terminierung des Kindprozesses warten 30

31 Fallstricke int main( ) { fprintf(stdout, Hallo ); fork(); return 0; } Ausgabe: HalloHallo Warum? 31

32 Fallstricke Stream IO Hallo IO int main( ) { fprintf(stdout, Hallo ); fork(); return 0; } Stream IO Hallo IO OS fork Stream IO Hallo IO Ausgabe: HalloHallo Warum? OS 32

33 Fallstricke Stream IO <empty> Hallo IO int main( ) { OS fprintf(stdout, Hallo ); fork fflush(stdout); Stream IO Stream IO fork(); <empty> Hallo <empty> Hallo } return 0; IO IO Ausgabe: Hallo OS 33

34 Unnamed Pipes pipe() und dup() 34

35 Pipes Kommunikationskanal zwischen verwandten Prozessen Eigenschaften: Unidirektional (2 Pipes für Übertragung in beide Richtungen) Stream von Daten Implizite Synchronisation 35

36 Verwendung von Pipes (1) Pipe wird mittels eines Feldes von zwei Integer- Elementen deklariert int fildes[2]; Deskriptor fildes[0] ist Leseende Deskriptor fildes[1] ist Schreibende Nicht verwendete Enden müssen geschlossen werden Schreibender Prozess schließt das Leseende Lesender Prozess schließt das Schreibende 36

37 Verwendung von Pipes (1) Prozess write() p[1] ohne geschlossene Enden read() p[0] Kindprozess Vaterprozess write() p[1] p[1] write() read() p[0] p[0] read() 37

38 Verwendung von Pipes (1) geschlossene Enden Kindprozess Vaterprozess write() p[1] write() read() p[0] read() 38

39 Verwendung von Pipes (2) Öffnen einer Pipe mittels Systemaufruf pipe() fdopen() erstellt einen mit dem gegebenen Filedeskriptor assozierten Stream (FILE *) Verwendung von Funktionen, die auf Streams operieren z.b. fopen(), fclose() dup2() kann zum Umlenken von Dateien verwendet werden 39

40 C-Interface #include <limits.h> /* for PIPE_BUF */ #include <unistd.h> /* prototype */ int fildes[2]; if (pipe(fildes)!= 0) { bail_out( can t create pipe, 1 ); } 40

41 dup(2), dup2(2) dup() dupliziert einen File-Deskriptor. Der neue Deskriptor erhält die niedrigste nicht verwendete ID Duplizierter Deskriptor zeigt auf dieselbe open file description (file offset, file status flags) man 2 open dup2(old, new) Schließt Filedeskriptor mit ID new Dupliziert old, der neue Deskriptor erhält ID new 41

42 Umleiten der Standardein-/ausgabe Anwendung: Kommunikation mit Kommandozeilen-Utility, welches über Standardeingabe / Standardausgabe kommuniziert Strategie: Umleiten der Standardeingabe (0) oder Standardausgabe (1) in neuem Prozess Schließen des Filedeskriptors (z.b. fileno(stdin)) für Standard I/O Duplizieren eines offenen FDs (z.b. file_descr[0]) auf eben geschlossenen (fileno(stdin)) Schließen des duplizierten FDs (file_descr[0]) 42

43 C-Interface #include <fcntl.h> #include <sys/types.h> #include <unistd.h> int fd; fd = open( log.txt,o_wronly O_CREAT); dup2(fd, /* old descriptor */ fileno(stdout)); /* new descriptor */ close(fd); /* close old desc. */ (void) execlp( grep, grep, max, (char *) 0); 43

44 Synchronisation Lesen von leerer Pipe ist blockierend Schreiben auf volle Pipe ebenso Achtung: Blockiert wenn vergessen Pipe zu schließen Lesen von Pipe ohne offene Schreibenden liefert EOF Schreiben auf Pipe ohne offene Leseenden liefert SIGPIPE Signal 44

45 Pipes: Pitfalls Pipes eignen sich gut für unidirektionale Kommunikation Bidirektional: Zwei Pipes Fehleranfällige Synchronisation (deadlock) Synchronisation & Puffer fflush() verwenden Puffer konfigurieren (setbuf(3), setvbuf(3)) 45

46 Rückblende Kommunikation zwischen verwandten Prozessen mittels Pipes. Implizite Synchronisation Nicht verwendete Enden schließen Filestream für Filedeskriptor der Pipe mittels fdopen() Umlenken von Pipes mittels dup2() 46

Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes

Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes File Descriptors Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes Verweis auf Eintrag in Tabelle offener Dateien (file descriptor table) Standard

Mehr

Beispiel 2. Verwandte Prozesse: fork, exec, wait Interprozesskommunikation mit Unnamed Pipes. Denise Ratasich. 11. April Verwandte Prozesse IPC

Beispiel 2. Verwandte Prozesse: fork, exec, wait Interprozesskommunikation mit Unnamed Pipes. Denise Ratasich. 11. April Verwandte Prozesse IPC e eigenschaften Beispiel 2 e: fork, exec, wait Interprozesskommunikation mit Unnamed Denise Ratasich basierend auf Slides von Daniel Prokesch Institut für Technische Informatik Technische Universität Wien

Mehr

Was ist ein Prozess?

Was ist ein Prozess? Prozesse unter UNIX Definition Was ist ein Prozess? Zeitliche Abfolge von Aktionen Ein Programm, das ausgeführt wird Prozesshierachie Baumstruktur INIT-Prozess ist die Wurzel (pid=1) und wird beim Booten

Mehr

4.4 Prozesse. H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22

4.4 Prozesse. H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22 H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22 getpid Prozeß-Id ermitteln getppid Parent-Prozeß-Id ermitteln fork Duplizieren eines Prozesses exec-familie Prozeß-Überlagerung durch

Mehr

U6 POSIX-Prozesse. U6-1 Prozesse: Überblick. U6-1 UNIX-Prozesshierarchie. U6-2 POSIX Prozess-Systemfunktionen. Prozesse

U6 POSIX-Prozesse. U6-1 Prozesse: Überblick. U6-1 UNIX-Prozesshierarchie. U6-2 POSIX Prozess-Systemfunktionen. Prozesse U6 POSIX-Prozesse U6 POSIX-Prozesse U6-1 Prozesse: Überblick U6-1 Prozesse: Überblick Prozesse Prozesse sind eine Ausführumgebung für Programme POSIX-Prozess-Systemfunktionen POSIX-Signale haben eine Prozess-ID

Mehr

Fortgeschrittene I/O

Fortgeschrittene I/O Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Tafelübung zu BS 1. Prozesse verwalten

Tafelübung zu BS 1. Prozesse verwalten Tafelübung zu BS 1. Prozesse verwalten Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Eine Mini-Shell als Literate Program

Eine Mini-Shell als Literate Program Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2010/2011 1 / 18 2 / 18 fork und Daten Nach dem fork teilen sich Eltern- und Kindprozess zwar den Programmbereich

Mehr

Tafelübung zu BS 1. Prozesse verwalten

Tafelübung zu BS 1. Prozesse verwalten Tafelübung zu BS 1. Prozesse verwalten Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2015/bs/

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2016/17 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Aufgabenblatt 5 Musterlösung

Aufgabenblatt 5 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 5 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist

Mehr

Betriebssysteme (BS)

Betriebssysteme (BS) Betriebssysteme (BS) Prozesse Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund Olaf.Spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2011/bs/

Mehr

Interprozesskommunikation

Interprozesskommunikation Interprozesskommunikation Inhalt 1. Überblick... 2 2. Pipes... 5 3. Fifo...22 3.1. Übung IPC-2...39 Unix für Entwickler: Interprozesskommunikation Prof Dr. Alois Schütte 1/40 1. Überblick Hier werden die

Mehr

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Betriebssysteme (BS) Inhalt. Prozesse. Olaf Spinczyk.

Betriebssysteme (BS) Inhalt. Prozesse. Olaf Spinczyk. Betriebssysteme (BS) Prozesse http://ess.cs.tu-dortmund.de/de/teaching/ss2017/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Grundsätzliche Fragestellung. Grundsätzliche Fragestellung. Weitere Fallstricke. Bibliotheksfunktionen. ? Welche Art von Nebenläufigkeit liegt vor?

Grundsätzliche Fragestellung. Grundsätzliche Fragestellung. Weitere Fallstricke. Bibliotheksfunktionen. ? Welche Art von Nebenläufigkeit liegt vor? Übungen zu Systemprogrammierung (SP) Ü3 UNIX-Signale Christoph Erhardt, Jens Schedel, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Mehr

Lösung Übungszettel 6

Lösung Übungszettel 6 Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include

Mehr

Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke

Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke 1 Aufgabe 1 (15 Punkte) Prozesse, Signale und Interprozesskommunikation (a) 3 Punkte Was wird von dem folgenden Programm

Mehr

Betriebssysteme (BS)

Betriebssysteme (BS) Betriebssysteme (BS) Prozesse Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund Olaf.Spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2011/bs/

Mehr

Betriebssysteme. Kommunikation von Prozessen und Threads. Sommersemester Prof. Dr. Peter Mandl. Seite 1. Prof. Dr. Peter Mandl.

Betriebssysteme. Kommunikation von Prozessen und Threads. Sommersemester Prof. Dr. Peter Mandl. Seite 1. Prof. Dr. Peter Mandl. Kommunikation von Prozessen und Threads Sommersemester 2014 Seite 1 Gesamtüberblick 1. Einführung in 2. Betriebssystemarchitekturen und Betriebsarten 3. Interruptverarbeitung in n 4. Prozesse und Threads

Mehr

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

Aufbau einer Pipeline 124

Aufbau einer Pipeline 124 Pipelines 123 thales$ ypcat passwd cut -d: -f5 cut -d -f1 > sort uniq -c sort -rn head 97 Michael 89 Florian 82 Tobias 81 Alexander 80 Andreas 75 Thomas 75 Matthias 74 Daniel 62 Christian 61 Sebastian

Mehr

Kommunikation von Prozessen und Threads

Kommunikation von Prozessen und Threads Kommunikation von Prozessen und Threads Sommersemester 2015 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze

Mehr

Gute Software erkennt Fehler, führt eine angebrachte Behandlung durch und gibt eine aussagekräftige Fehlermeldung aus

Gute Software erkennt Fehler, führt eine angebrachte Behandlung durch und gibt eine aussagekräftige Fehlermeldung aus U7 POSIX-Prozesse und Signale U7 POSIX-Prozesse und Signale Besprechung Aufgaben 4 und 5 Fehlerbehandlung Prozesse POSIX-Prozess-Systemfunktionen POSIX-Signale Aufgabe 6 U7.1 U7-1 Fehlerbehandlung U7-1

Mehr

Parallele Sitzungen 225

Parallele Sitzungen 225 Parallele Sitzungen 225 Es gibt vier Ansätze, um parallele Sitzungen zu ermöglichen: Für jede neue Sitzung wird mit Hilfe von fork() ein neuer Prozess erzeugt, der sich um die Verbindung zu genau einem

Mehr

Systemprogrammierung

Systemprogrammierung Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm

Mehr

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

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

Mehr

3. Unix Prozesse. Betriebssysteme Harald Kosch Seite 57

3. Unix Prozesse. Betriebssysteme Harald Kosch Seite 57 3. Unix Prozesse Ein Prozeß ist die Umgebung eines laufenden Programms. Ein bißchen Analogie. Wer kocht gerne? Papa möchte mit Hilfe eines Rezeptes eine Torte für seine Tochter backen. Das Rezept ist das

Mehr

Betriebssysteme (BS) Prozesse. Olaf Spinczyk.

Betriebssysteme (BS) Prozesse. Olaf Spinczyk. Betriebssysteme (BS) Prozesse http://ess.cs.tu-dortmund.de/de/teaching/ss2015/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Malware. Carlo U. Nicola 09. Dezember Die Struktur eines (harmlosen) aber echten Virus-Programmes analysieren;

Malware. Carlo U. Nicola 09. Dezember Die Struktur eines (harmlosen) aber echten Virus-Programmes analysieren; FHNW: Labor Netzwerkssicherheit Malware Carlo U. Nicola 09. Dezember 2012 Ziel Die Ziele dieser Aufgabe sind: 1. Anhand der printf(...) C-Funktion erkennen, dass die (Un)-Sicherheit bereits implizit in

Mehr

Betriebssysteme, WS 2015/16, Hans-Georg Eßer

Betriebssysteme, WS 2015/16, Hans-Georg Eßer BS-D Betriebssysteme WS 215/16 Hans-Georg Eßer Foliensatz D: Interrupts System Calls v1.2, 215/8/2 Folie D-1 Übersicht A B C Folien D Einführung System Calls Shell Software-Verwaltung E Dateiverwaltung

Mehr

2Binden 3. und Bibliotheken

2Binden 3. und Bibliotheken 3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

Betriebssysteme (BS)

Betriebssysteme (BS) Betriebssysteme (BS) Prozesse Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund Olaf.Spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Netzwerk-Programmierung. Prozesse. Alexander Sczyrba Michael Beckstette.

Netzwerk-Programmierung. Prozesse. Alexander Sczyrba Michael Beckstette. Netzwerk-Programmierung Prozesse Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste@techfak.uni-bielefeld.de 1 Übersicht Prozesse fork() Parents und Childs system() und exec() 2 Prozesse moderne Betriebssysteme

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

Klausurdeckblatt. Name: Studiengang: Matrikelnummer:

Klausurdeckblatt. Name: Studiengang: Matrikelnummer: Klausurdeckblatt Name der Prüfung: Systemnahe Software II Datum und Uhrzeit: 21. Juli 2016, 10-12 Uhr Prüfer: Dr. Andreas F. Borchert Bearbeitungszeit: 120 Min. Institut: Numerische Mathematik Vom Prüfungsteilnehmer

Mehr

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2010

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2010 UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung Armin Wasicek SS 2010 Inhalt Kernel Struktur Prozessverwaltung Interprozesskommunikation Speicherverwaltung 2 UNIX Kernel Structure

Mehr

Programme und Prozesse

Programme und Prozesse Kapitel 2 Programme und Prozesse Ein Prozess ist ein laufendes Programm. Dies ist die allererste kurze Definition. In diesem Kapitel soll dies genauer betrachtet werden. Dies ist nicht POSIX standardisiert,

Mehr

Betriebssysteme (BS) Prozesse. Olaf Spinczyk.

Betriebssysteme (BS) Prozesse. Olaf Spinczyk. Betriebssysteme (BS) Prozesse http://ess.cs.tu-dortmund.de/de/teaching/ss2016/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Vorlesung Betriebssysteme I

Vorlesung Betriebssysteme I 1 / 34 Vorlesung Betriebssysteme I Thema 5: Aktivitäten Robert Baumgartl 29. November 2016 2 / 34 Prozesse Def. Ein Prozess ist ein in Ausführung befindliches Programm. Lebenszyklus: Erzeugung Abarbeitung

Mehr

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2011

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2011 UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung Armin Wasicek SS 2011 Inhalt Kernel Struktur Prozessverwaltung Interprozesskommunikation Speicherverwaltung 2 UNIX Kernel Structure

Mehr

Betriebssysteme - 2. Test

Betriebssysteme - 2. Test Betriebssysteme - 2. Test Einführung in Unix Wie ist ein UNIX System aufgebaut? Hardware (CPU, Speicher, ) Software (OS: Kernel + Treiber, Benutzerprogramme) Mehrbenutzer und Mehrprozessbetriebssystem

Mehr

Tafelübung zu BS 4. Dateioperationen

Tafelübung zu BS 4. Dateioperationen Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Lab 13: Multi Processor Systems II

Lab 13: Multi Processor Systems II Lab 13: Multi Processor Systems II 1. Können Sie sich erklären warum die Summe nicht 200% ergibt? Warum entspricht die Auslastung nicht 100% pro Prozessor? 100% ist die gesamte Auslastung vom System alle

Mehr

Systemnahe Software (Systemnahe Software II)

Systemnahe Software (Systemnahe Software II) Systemnahe Software (Systemnahe Software II) F. Schweiggert, A. Borchert, M. Grabert und J. Mayer 22. Mai 2006 Fakultät Mathematik u. Wirtschaftswissenschaften Abteilung Angewandte Informationsverarbeitung

Mehr

Prozesse. Netzwerk - Programmierung. Alexander Sczyrba Madis Rumming

Prozesse. Netzwerk - Programmierung. Alexander Sczyrba Madis Rumming 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()

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

Kap. 2. Prozesse. Version vom 05.10.2009. Kap. 2 - Inhalt. Definition Prozeßzustände Threads Scheduling Beispiele. Folie 2

Kap. 2. Prozesse. Version vom 05.10.2009. Kap. 2 - Inhalt. Definition Prozeßzustände Threads Scheduling Beispiele. Folie 2 Kap. 2 Prozesse Version vom 05.10.2009 Kap. 2 - Inhalt Definition Prozeßzustände Threads Scheduling Beispiele Folie 2 Definition I - Woraus bestehen Prozesse? Prozeß ist ein Programm in seiner Ausführung,

Mehr

Vorlesung Betriebssysteme I

Vorlesung Betriebssysteme I 1 / 38 Vorlesung Betriebssysteme I Thema 6: Kommunikation Robert Baumgartl 14. Dezember 2015 2 / 38 Einige Gedanken Kommunikation = Übertragung von Informationen zwischen Aktivitäten meist mit Synchronisation

Mehr

Kommunikationsmuster (T) Interprozesskommunikation (T) Kommunikation über Pipes (P) Parserspezifikation und -generierung (P)

Kommunikationsmuster (T) Interprozesskommunikation (T) Kommunikation über Pipes (P) Parserspezifikation und -generierung (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 19.11. Foliensatz 4 Kommunikationsmuster (T) Interprozesskommunikation (T) Kommunikation über Pipes (P) Parserspezifikation und -generierung

Mehr

f) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? (1 Punkt) close() bind() listen() open()

f) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? (1 Punkt) close() bind() listen() open() Aufgabe 1: (20 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort anzukreuzen. Falsche Beantwortung führt bei der einzelnen Frage zu Null Punkten. Lesen Sie die Frage genau, bevor

Mehr

3. Interrupts. Betriebssysteme I Hochschule München Hans-Georg Eßer SS Foliensatz 3 Interrupts

3. Interrupts. Betriebssysteme I Hochschule München Hans-Georg Eßer SS Foliensatz 3 Interrupts 19 19 22 22 22 22 22 14::18 14:27:41 1::1 1::1 12:46:44 12:46:44 12:48:41 12:54:44 15:27:35 15:27:35 16:37:11 16:37:11 16:38:1 1::1 1::1 17:43:26 17:43:26 17:53:39 18:43:26 19:43:26 1::1 1::1 :: 1::1 1::1

Mehr

Beispiel 3. Shared Memory und Explizite Synchronisation. Daniel Prokesch. 27. April 2015. Überblick. Shared Memory. Semaphore. Ressourcenverwaltung

Beispiel 3. Shared Memory und Explizite Synchronisation. Daniel Prokesch. 27. April 2015. Überblick. Shared Memory. Semaphore. Ressourcenverwaltung 3 e 3 und Explizite Synchronisation Daniel Prokesch Institut für Technische Informatik Technische Universität Wien 27. April 2015 1 2 3 e Bisher betrachtet... Implizite Synchronisation Blockierende Lese-

Mehr

Ausgewählte Themen. In diesem Teil werden ausgewählte Themen vorgestellt: Fehlerbehandlung Dämonen Zombies. Inhalt. 1. Fehlerbehandlung...

Ausgewählte Themen. In diesem Teil werden ausgewählte Themen vorgestellt: Fehlerbehandlung Dämonen Zombies. Inhalt. 1. Fehlerbehandlung... Ausgewählte Themen In diesem Teil werden ausgewählte Themen vorgestellt: Fehlerbehandlung Dämonen Zombies Inhalt 1. Fehlerbehandlung... 2 2. Dämonen... 5 3. Zombies...16 Unix für Entwickler: AusgewaehlteThemen

Mehr

U9-1 Prozesse: Überblick. U9-1 UNIX-Prozesshierarchie. U9-2 POSIX Prozess-Systemfunktionen. Prozesse sind eine Ausführumgebung für Programme

U9-1 Prozesse: Überblick. U9-1 UNIX-Prozesshierarchie. U9-2 POSIX Prozess-Systemfunktionen. Prozesse sind eine Ausführumgebung für Programme U9 POSIX-Prozesse und Signale U9 POSIX-Prozesse und Signale U9-1 Prozesse: Überblick U9-1 Prozesse: Überblick Besprechung Aufgabe 6 Prozesse POSIX-Prozess-Systemfunktionen POSIX-Signale Prozesse sind eine

Mehr

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Prozesshierarchie. Prozesse. UNIX-Prozesshierarchie

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Prozesshierarchie. Prozesse. UNIX-Prozesshierarchie Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 9 Sommersemester 2017 Inhalt Prozesse System-Schnittstelle Minimale Shell Einlesen von der Standard-Eingabe

Mehr

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1 Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,

Mehr

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen,

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen

Mehr

bereit (oder Zombie genannt). Normales Ende (exit) und synchrone und asynchrone Signal-Ereignisse, z.b.

bereit (oder Zombie genannt). Normales Ende (exit) und synchrone und asynchrone Signal-Ereignisse, z.b. Prof. Dr. Michael Jäger FB MNI Lösungsvorschlag zur Klausur Betriebssysteme vom 1.10.2014 Blau gekennzeichnete Textstellen sind beispielhafte Lösungen bzw. Antworten zu den Aufgaben. Rot gekennzeichnete

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden Dokument: gns_ipc_server.c, 1 - Seite 1 - - 1: 1 von 1 - Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden int main(int argc,

Mehr

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden Fallbeispiel Unix Betriebssysteme Hermann Härtig TU Dresden Wegweiser Geschichte und Struktur von Unix Vom Programm zum Prozess Unix-Grundkonzepte Dateien Prozesse Prozess-Kommunikation Signale Pipes Sockets

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen

Mehr

Betriebssysteme Kapitel E : Prozesse

Betriebssysteme Kapitel E : Prozesse Betriebssysteme Kapitel E : Prozesse 1 Inhalt Prozesse Zustand eines Prozesses» Kontext» Kontextswitch Prozessbeschreibungsblock PCB Zustandsübergänge» Zustandsdiagramm 2 Hinweis Ein Programm(code) kann

Mehr

Systemnahe Software WS 2006/2007

Systemnahe Software WS 2006/2007 Systemnahe Software WS 2006/2007 Andreas F. Borchert Universität Ulm 5. Februar 2007 Konkurrierende Zugriffe Prinzipiell erlaubt Unix den konkurrierenden Zugriff mehrerer Prozesse auf die gleiche Datei.

Mehr

Bash-Skripting Linux-Kurs der Unix-AG

Bash-Skripting Linux-Kurs der Unix-AG Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 07.01.2013 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian

Mehr

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 U9-2 Motivation von Threads U9-2 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller

Mehr

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

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

Übung zu Grundlagen der Betriebssysteme. 5. Übung

Übung zu Grundlagen der Betriebssysteme. 5. Übung Übung zu Grundlagen der Betriebssysteme 5. Übung 13.11.2012 Aufgabe 1 Erläutern Sie den Begriff Prozess und unterscheiden Sie die Begriffe Prozess und Programm voneinander. Ein Prozess ist ein aufgerufenes,

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 10. UNIX/Linux: Reaktion auf Fehler Wintersemester 2016/17 Reaktion auf Fehler: Übersicht Systemaufrufe: 1. Rückkehrwert: in den meisten (aber nicht in allen!)

Mehr

Systemprogrammierung.: unter Linux :.

Systemprogrammierung.: unter Linux :. Systemprogrammierung.: unter Linux :. Einführung in Linux 1. Das Filesystem 2. Prozesse 3. Unix Tools 4. Die Shell 1. Das Filesystem 1.1 Dateien 1.2 Ordner 1.3 Links 1.1 Dateien Alles im Filesystem sind

Mehr

Shared-Memory Programmiermodelle

Shared-Memory Programmiermodelle Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung

Mehr

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 User-Level Threads: Federgewichtige Prozesse Realisierung von Threads auf Anwendungsebene innerhalb eines Prozesses

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Prozesse. U5-5 UNIX-Prozesshierarchie

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Prozesse. U5-5 UNIX-Prozesshierarchie Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Wintersemester 2015/2016 Inhalt Prozesse System-Schnittstelle Minimale Shell Einlesen von

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Fallstudie: Semaphore und das MXP-Protokoll 196

Fallstudie: Semaphore und das MXP-Protokoll 196 Fallstudie: Semaphore und das MXP-Protokoll 196 Semaphore als Instrument zur Synchronisierung von Prozessen gehen auf den niederländischen Informatiker Edsger Dijkstra zurück, der diese Kontrollstruktur

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 25 2 / 25 Pipes Die Bash kennt drei Standard-Dateideskriptoren: Standard In (stdin) Standard-Eingabe,

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus 2. November 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität

Mehr

Concurrent programming Prinzipien und Einführung in Prozesse

Concurrent programming Prinzipien und Einführung in Prozesse LinuxFocus article number 272 http://linuxfocus.org Concurrent programming Prinzipien und Einführung in Prozesse by Leonardo Giordani About the author: Student an der Fakultät

Mehr

Prozesse in Unix

Prozesse in Unix Prozesse in Unix Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 7--5 Inhaltsverzeichnis Überblick. Start und Ende.................................. Die Funktionen atexit() und on_exit()..................

Mehr

Bash-Skripting Linux-Kurs der Unix-AG

Bash-Skripting Linux-Kurs der Unix-AG Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 13.06.2012 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian

Mehr

Betriebssysteme Teil 11: Interprozess-Kommunikation

Betriebssysteme Teil 11: Interprozess-Kommunikation Betriebssysteme Teil 11: Interprozess-Kommunikation 19.12.15 1 Übersicht Grundbegriffe Shared Memory Pipelines Messages Ports Sockets 2 Grundbegriffe Interprocess-Kommunikation = Austausch von Daten über

Mehr

Teil I Debuggen mit gdb

Teil I Debuggen mit gdb Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out

Mehr

Prozesse and Threads WS 09/10 IAIK 1

Prozesse and Threads WS 09/10 IAIK 1 Prozesse and Threads WS 09/10 IAIK 1 Prozesse Programm in Ausführung Mit einem Prozess verbunden: Adressraum Folge von Speicherstellen auf die der Prozess zugreifen kann Enthält ausführbares Programm,

Mehr

POSIX-Threads. Aufgabe 9 SP - Ü U10.1

POSIX-Threads. Aufgabe 9 SP - Ü U10.1 U10 10. Übung U10 10. Übung POSIX-Threads Aufgabe 9 U10.1 U10-1 Motivation von Threads U10-1 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller Adressraum, Rechte, Priorität,...)

Mehr

Betriebssysteme. Betriebssysteme

Betriebssysteme. Betriebssysteme Betriebssysteme Systemschnittstelle Systemaufrufe System Calls Shell Commands - Kontrollsprache Literatur: R. Brause Silberschatz et al. SS2001 Prof. H. D. Clausen - unisal 1 Shell: an OS interface Interaktiver

Mehr

Prozesse. Vorlesung Betriebssysteme I. Zustandsmodell eines Prozesses. Virtuelle vs. reale CPU. Zustandsübergänge cont d

Prozesse. Vorlesung Betriebssysteme I. Zustandsmodell eines Prozesses. Virtuelle vs. reale CPU. Zustandsübergänge cont d Prozesse Vorlesung Betriebssysteme I Thema 5: Aktivitäten Robert Baumgartl 29. November 2016 Def. Ein Prozess ist ein in Ausführung befindliches Programm. Lebenszyklus: Erzeugung Abarbeitung Beendigung

Mehr

Modul B-PRG Grundlagen der Programmierung 1

Modul B-PRG Grundlagen der Programmierung 1 Modul B-PRG Grundlagen der Programmierung 1 Teil 3: Betriebssysteme, Dateisysteme,Sicherheit V20: Prozesse Prof. Dr. R. Brause Adaptive Systemarchitektur Institut für Informatik Fachbereich Informatik

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

1. Aufgabenblatt Unix

1. Aufgabenblatt Unix Faculty of Computer Science Institute for System Architecture, Operating Systems Group Betriebssysteme und Sicherheit, WS 2012/13 1. Aufgabenblatt Unix Geplante Bearbeitungszeit: drei Wochen TEIL A GRUNDLEGENDE

Mehr

1. Aufgabenblatt Unix

1. Aufgabenblatt Unix Faculty of Computer Science Institute for System Architecture, Operating Systems Group Betriebssysteme und Sicherheit, WS 2013/14 1. Aufgabenblatt Unix Geplante Bearbeitungszeit: drei Wochen TEIL A GRUNDLEGENDE

Mehr