Beispiel 2. Verwandte Prozesse: fork, exec, wait Interprozesskommunikation mit Unnamed Pipes. Denise Ratasich. 11. April Verwandte Prozesse IPC
|
|
- Britta Holst
- vor 7 Jahren
- Abrufe
Transkript
1 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 11. April
2 2 Beispiel 2 Überblick e eigenschaften e (fork) abbild (exec) Auf Beendigung eines es warten (wait)
3 image im Hauptspeicher e eigenschaften Quelle: Wilfried Elmenreich - Systemnahes ieren; C ierung unter Unix und Linux. Reichardt Verlag p. 55 3
4 4 Beispiel 2 eigenschaften Linux (1) e eigenschaften Zustand Running, Waiting,... Scheduling Priorität, CPU-Zeit,... Identifikation PID, Owner, Gruppe,... Speicherverwaltung Pointer auf MMU Info Signale Mask, Pending verwandtschaften Parents, Siblings
5 eigenschaften Linux (2) e eigenschaften Process Control Block Register, PC, Statuswort, Segmentregister, Page Info Kernelstack Dateideskriptorentabelle Berechtigungen, Accounting Information Timerverwaltung Interprozesskommunikation Siehe: struct task_struct in sched.h 5
6 hierarchie e eigenschaften Jeder hat Elternprozess Ausnahme: Init- (init, systemd) Jeder hat eine eindeutige ID (pid_t) hierarchie anzeigen: pstree(1) systemd-+-modemmanager---2*[{modemmanager}] -NetworkManager-+-dhclient -2*[{NetworkManager}] -abrt-dbus---{abrt-dbus} -2*[abrt-watch-log] -abrtd -acpid -agetty -alsactl -atd -auditd-+-audispd-+-sedispatch -{audispd} -{auditd} -automount---7*[{automount}] -avahi-daemon---avahi-daemon -chronyd -colord---2*[{colord}] -crond -cupsd -dbus-daemon -dnsmasq---dnsmasq -firewalld---{firewalld}.. 6
7 7 Beispiel 2 e eigenschaften e Überblick e werden üblicherweise mit fork(2) erzeugt exec(3) überschreibt das aktuelle image mit einem neuen image wait(3) wartet auf die Terminierung eines Kindes
8 e eigenschaften Interface fork / exec / exit / wait fork() erzeugt neuen (Kind-) exec*( programm ) ersetzt image eines es durch ein neues exit(status) beendet wait*(&status) wartet auf die Beendigung eines es 8
9 9 Beispiel 2 e eigenschaften fork Funktion fork() Erzeugt einen neuen Neuer ist eine identische Kopie des aufrufenden es bis auf PID, pending signals,... Erzeugender ist Elternprozess des erzeugten es e sind verwandt Beide e laufen parallel und führen dasselbe aus
10 e eigenschaften Vor fork() Nach fork() 10
11 11 Beispiel 2 e eigenschaften fork : #include <unistd.h> pid_t fork(void); Unterscheidung zwischen Eltern- und durch den Rückgabewert -1 im Fehlerfall 0 im (child) >0 im Elternprozess (parent)
12 12 Beispiel 2 e eigenschaften Beispiel pid_t pid = fork(); switch (pid) { case -1: (void) fprintf(stderr, "Cannot fork!\n"); exit(exit_failure); } case 0: // child tasks... break; default: // parent tasks... break;
13 e eigenschaften Eigenschaften erbt vom Elternprozess offene Dateien (gemeinsamer Zugriff!) Dateipuffer Signalbehandlung momentane Variablenwerte Jedoch gilt: Variablen sind lokal (keine Beeinflussung) Signalbehandlung kann rekonfiguriert werden Kommunikation () via, Sockets, Shared Memory,... 13
14 14 Beispiel 2 e eigenschaften exec Funktion exec() Erlaubt es einem, ein anderes auszuführen Startet ein neues innerhalb eines es PID bleibt gleich
15 e eigenschaften 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[]); 15
16 e eigenschaften Die exec() Familie (2) Ersetzt aktuelles durch das in der Datei path enthaltene exec*p Variante sucht (wie Shell) in $PATH nach mit dem spezifierten Namen Argumentübergabe beachten! 1. Argument ist name (argv[0]) Argumentliste muss mit NULL Zeiger enden Varianten mit variable Argumentanzahl (execl*) und Argumentarray (execv*) Variante execle: Environment 1 kann verändert werden Variante fexecve: akzeptiert Dateideskriptor 1 FYI: environ(7) 16
17 17 Beispiel 2 e eigenschaften Beispiel: execv(), execvp() #include <unistd.h> char *cmd[] = { "ls", "-l", (char *) 0 }; (void) execv ("/bin/ls", cmd); (void) execvp ("ls", cmd); error_exit("cannot exec")
18 e eigenschaften Beispiel: execl(), execlp() #include <unistd.h> (void) execl ( "/bin/ls", "ls", "-l", NULL ); // or (void) execlp ( "ls", "ls", "-l", NULL ); error_exit("cannot exec") 18
19 19 Beispiel 2 e eigenschaften Erinnerung: exit Funktion exit() Beendet den aktuellen Rückgabewert kann von Elternprozess abgefragt werden Beim Beenden Leeren der stdio-puffer Schließen offener Dateien Löschen von temporären Dateien (tmpfile(3)) Aufrufen von Exit-Handlern (atexit(3))
20 e eigenschaften exit normal : #include <stdlib.h> void exit(int status); Status: 8 bit (0-255) Im C-Standard definierte Rückgabewerte: exit(exit_success) keine Fehler exit(exit_failure) Fehler aufgetreten Weitere Rückgabewerte BSD: sysexits.h 20
21 21 Beispiel 2 e eigenschaften Auf warten wait Funktion wait() Wartet bis ein terminiert Liefert PID und Status des beendeten es
22 22 Beispiel 2 e eigenschaften Auf warten wait Auf Beendigung eines es warten #include <sys/wait.h> pid_t wait(int *status); Rückgabewert: PID des terminierten es, bzw. -1 im Fehlerfall ( errno, u.a. ECHILD) Status des es beinhaltet Exit-wert und Signalinformation WIFEXITED(status), WEXITSTATUS(status) WIFSIGNALED(status), WTERMSIG(status) Siehe wait(2) Nach dem Aufruf von wait() wird der aus der tabelle entfernt
23 e eigenschaften Auf warten Zombies und Orphans UNIX: Auch bereits terminierte e besetzen einen Eintrag in der tabelle Falls kein Platz mehr frei ist, kann kein neuer gestartet werden Zombie Der terminiert und der Elternprozess hat noch nicht wait aufgeführt Der wird auf den Zustand Zombie gesetzt gestartet werden Eintrag in der tabelle bleibt erhalten, bis der Elternprozess wait ausführt Orphan Der Elternprozess terminiert und der wurde noch nicht beendet Der verwaist und wird dem Init vererbt Nach Beendigung eines Orphans entfernt Init den eintrag 23
24 e eigenschaften Auf warten Beispiel: wait #include <sys/wait.h> int status; pid_t child_pid, pid;... while ((pid = wait(&status))!= child_pid) { if (pid!= -1) continue; // other child if (errno == EINTR) continue; // interrupted error_exit("cannot wait"); } if (WEXITSTATUS(status) == EXIT_SUCCESS) {... wait() stoppt ausführung bis entweder ein terminiert oder ein Fehler auftritt ( busy waiting) 24
25 e eigenschaften Auf warten waitpid() Auf Beendigung eines es mit einer bestimmten PID warten #include <sys/wait.h> pid_t waitpid(pid_t pid, int *status, int options); Beispiele: waitpid(-1, &status, 0); // aequivalent zu wait waitpid(cid, &status, 0); // wartet auf Kind mit PID cid waitpid(-1, &status, WNOHANG); // blockiert nicht 25
26 e eigenschaften Benachrichtigung bei Terminierung eines es Falls nicht blockiert werden soll Synchron waitpid(-1, &status, WNOHANG) Holt Exit-Status falls ein Kind beendet wurde Wiederholter Aufruf Polling Asynchron Wenn ein beendet wurde, wird das Signal SIGCHLD an den Elternprozess gesendet Installieren eines Signalhandlers (sigaction) Aufruf von wait im Signal-Handler 26
27 27 Beispiel 2 Fallstricke e eigenschaften int main(int argc, char **argv) { (void) fprintf(stdout, "Hallo"); } (void) fork(); return 0; Ausgabe: HalloHallo Warum?
28 Fallstricke e eigenschaften int main(int argc, char **argv) { (void) fprintf(stdout, "Hallo"); (void) fflush(stdout); (void) fork(); return 0; } Ausgabe: Hallo gilt für alle geöffneten Streams 28
29 29 Beispiel 2 e eigenschaften Debugging gdb Bevor fork ausgeführt wird: set follow-fork-mode [child parent] Zum Beispiel (debuggen von forktest): $ gdb -tui./forktest (gdb) break main (gdb) set follow-fork-mode child (gdb) run (gdb) next (gdb) : (gdb) continue (gdb) quit
30 e eigenschaften Überblick (Unnamed) Pipe = Unidirektionaler Interprozesskommunikationskanal Ermöglicht Kommunikation zwischen verwandten en Eigenschaften: Zugriff auf Lese- und Schreibende mittels Filedeskriptoren Stream von Daten gepuffert implizite Synchronisation 30
31 e eigenschaften Erzeugung Erzeugen einer Pipe #include <unistd.h> int pipe(int pipefd[2]); Die File-Deskriptoren des Lese- und des Schreibendes werden im übergebenen Integer-Array retourniert Deskriptor pipefd[0] ist Leseende Deskriptor pipefd[1] ist Schreibende Ein danach mit fork() erzeugter erbt die File-Deskriptoren gemeinsamer Zugriff Nicht verwendete Enden werden geschlossen Weitere Nutzung z.b. mittels Stream-IO (fdopen, etc.) 31
32 e eigenschaften Unnamed Illustration 32
33 e eigenschaften Unnamed Synchronisation Implizite Synchronisation Lesen von leerer Pipe ist blockierend Schreiben auf volle Pipe ebenso Lesen von Pipe ohne offene Schreibenden liefert EOF Schreiben auf Pipe ohne offene Leseenden erzeugt Signal SIGPIPE (bei Signalbehandlung: write() returniert -1 mit errno EPIPE) Deshalb immer nicht benötigte Enden schließen, um dieses Verhalten (EOF bzw. SIGPIPE/EPIPE) sicherzustellen. Außerdem: Kernel entfernt Pipe sobald alle Enden geschlossen sind 33
34 e eigenschaften Figure 5-2 illustrates the relationship between file descriptors, open file descriptions, Descriptor and i-nodes. In this diagram, two processes have a number of open file File descriptors. Process A File descriptor table fd 0 fd 1 fd 2 fd 20 fd flags file ptr Process B File descriptor table fd 0 fd 1 fd 2 fd 3 fd flags file ptr file offset Open file table (system-wide) status flags inode ptr I-node table (system-wide) file type file locks... Figure 5-2: Relationship between file descriptors, open file descriptions, and i-nodes Quelle: Michael Kerrisk - The Linux ing Interface, p
35 e eigenschaften Ein- und Ausgaben dup(), dup2() dup(oldfd) dupliziert den File-Deskriptor oldfd Der neue Deskriptor erhält die niedrigste, nicht verwendete ID, = Eintrag in der file descriptor table Duplizierter Deskriptor zeigt auf dieselbe open file description (file offset, status flags) siehe open(2) dup2(oldfd, newfd) Dupliziert oldfd, der neue Deskriptor erhält ID newfd Schließt vorher ggf. File-Deskriptor newfd 35
36 e eigenschaften Ein- und Ausgaben Anwendung Hauptanwendungsgebiet für Kommunikation mit Kommandozeilen-Utility über Standardeingabe und Standardausgabe Umleiten der Standardeingabe (0, STDIN_FILENO) oder Standardausgabe (1, STDOUT_FILENO) in neuem Schließen des Filedeskriptors für Standard I/O Duplizieren eines offenen Deskriptors (z.b. Pipeende) auf eben geschlossenen Schließen des duplizierten FDs 36
37 e eigenschaften Ein- und Ausgaben Beispiel #include <fcntl.h> #include <sys/types.h> #include <unistd.h> int fd; // TODO error handling! fd = open("log.txt", O_WRONLY O_CREAT); (void) dup2(fd, STDOUT_FILENO); (void) close(fd); // old descriptor // new descriptor (void) execlp("grep", "grep", "max", NULL); 37
38 e eigenschaften Unnamed Fallstricke eignen sich gut für unidirektionale Kommunikation Bidirektional: Zwei Fehleranfällige Synchronisation (deadlock) Synchronisation & Puffer fflush() verwenden Puffer konfigurieren (setbuf(3), setvbuf(3)) 38
39 Zusammenfassung e eigenschaften fork/exec/wait: Weitere e starten Unnamed : Kommunikation zwischen verwandten en Umleiten von Ein- und Ausgabe 39
40 Material e eigenschaften Wilfried Elmenreich: Systemnahes ieren C ierung unter Unix und Linux, Reichardt Verlag, Michael Kerrisk: A Linux and UNIX System ing Handbook, No Starch Press, man pages: fork(2), exec(3), wait(3), dup(2) gdb - Debugging Forks: Forks.html 40
Beispiel Block 2. Oliver Höftberger SS Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes
Beispiel Block 2 Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes Oliver Höftberger SS 2013 Slides by Benedikt Huber 1 fork, exec, exit und wait Prozess erzeugen Programmabbild
MehrBeispiel Block 2. Oliver Höftberger WS Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes
Beispiel Block 2 Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes Oliver Höftberger WS 2015 Based on slides by Benedikt Huber 1 fork, exec, exit und wait Prozess erzeugen
MehrBeispiel 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
MehrBeispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunika>on mit Unnamed Pipes. Benedikt Huber WS 2011/2012
Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunika>on mit Unnamed Pipes Benedikt Huber WS 2011/2012 1 Stream I/O Portable Ein/Ausgabe API (gepuffert) 2 Aufbau des
MehrSystemnahe Programmierung in C Übungen Jürgen Kleinöder, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2011 U7.fm
U7 POSIX-Prozesse U7 POSIX-Prozesse Prozesse POSIX-Prozess-Systemfunktionen Aufgabe 7 U7.1 U7-1 Prozesse: Überblick U7-1 Prozesse: Überblick Prozesse sind eine Ausführumgebung für Programme haben eine
MehrU7 POSIX-Prozesse U7 POSIX-Prozesse
U7 POSIX-Prozesse U7 POSIX-Prozesse Prozesse POSIX-Prozess-Systemfunktionen Aufgabe 6 U7.1 U7-1 Prozesse: Überblick U7-1 Prozesse: Überblick Prozesse sind eine Ausführumgebung für Programme haben eine
MehrG 5. Übung. G-1 Überblick. Besprechung 3. Aufgabe. Infos zur Aufgabe 5: fork, exec. Rechenzeiterfassung. Ü SoS I G.1
G 5. Übung G 5. Übung G-1 Überblick Besprechung 3. Aufgabe Infos zur Aufgabe 5: fork, exec Rechenzeiterfassung G.1 G-2 Hinweise zur 5. Aufgabe G-2 Hinweise zur 5. Aufgabe Prozesse fork, exec exit wait
MehrÜbungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014
Übungen zu Systemnahe Programmierung in C (SPiC) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014 Inhalt Prozesse System-Schnittstelle Aufgabe 7 Einlesen von der Standard-Eingabe
MehrTafelübung zu BS 1. Prozesse, Shell
Tafelübung zu BS 1. Prozesse, Shell 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/ss2012/bs/
MehrWas 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
MehrTafelübung zu BS 1. Prozesse, Shell
Tafelübung zu BS 1. Prozesse, Shell 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/ss2012/bs/
MehrTafelübung zu BSRvS 1 1. Prozesse, at
Tafelübung zu BSRvS 1 1. Prozesse, at 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/ss2009/bsrvs1/
MehrU3 UNIX-Signale U3 UNIX-Signale
U3 UNIX-Signale U3 UNIX-Signale Besprechung der Aufgabe 2: sister Nebenläufigkeit durch Signale Aktives Warten auf Ereignisse Probleme beim passiven Warten (auf Signale) Nachtrag zur Signalbehandlungsschnittstelle
MehrTafelübung zu BS 1. Prozesse, ToothBrush
Tafelübung zu BS 1. Prozesse, ToothBrush Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/
MehrTafelübung zu BS 1. Prozesse, ToothBrush
Tafelübung zu BS 1. Prozesse, ToothBrush Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/
MehrTafelü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/ss2014/bs
MehrFortgeschrittene 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Übungen zu Systemprogrammierung 2 (SP2)
Übungen zu Systemprogrammierung 2 (SP2) Ü 3 UNIX-Signale Christoph Erhardt, Jens Schedel, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrTafelü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/
MehrU6 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
MehrBetriebssysteme: UNIX-Operationen zur Prozesskontrolle
Betriebssysteme: UNIX-Operationen zur Prozesskontrolle Betriebssysteme: UNIX-Operationen zur Prozesskontrolle WS 2016/17 8. November 2016 1/1 Prozesse und Programme Programm Verschiedene Repräsentationen
MehrÜbungen zu Systemprogrammierung 2 (SP2)
Übungen zu Systemprogrammierung 2 (SP2) Ü3 UNIX-Signale Christian Eichler, Andreas Ziegler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
Mehr4.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
MehrTafelü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Übungsbesprechung Blatt 3 Vorlesung Betriebssysteme I (WS 2018/19) Operating Systems And Middleware Group
Übungsbesprechung Blatt 3 Vorlesung Betriebssysteme I (WS 2018/19) Operating Systems And Middleware Group 0. Zur Aufgabe 4 Was macht eine Shell? date wc Chart 2 Prozesserzeugung Chart 3 1. Prozesserzeugung
MehrÜbungen zu Systemprogrammierung 2 (SP2)
Übungen zu Systemprogrammierung 2 (SP2) Ü3 UNIX-Signale Christian Eichler, Andreas Ziegler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrGrundsä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
MehrLinux 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
MehrDas Signalkonzept (T) Signale und Signalbehandlung (P)
Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 10.12. Foliensatz 6 Das Signalkonzept (T) (P) Thomas Schaaf, Nils gentschen Felde Lehr- und Forschungseinheit für Kommunikationssysteme
MehrBetriebssysteme. A1- Prozesse. Olaf Spinczyk.
Betriebssysteme A1- Prozesse https://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Übungen zur Systemprogrammierung 1 Michael Golm, Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4,
23 Überblick über die 4. Übung Überblick über die 4. Übung Dateisystem: Systemaufrufe Aufgabe 2: qsort Infos zur Aufgabe 4: fork, exec 130 24 open / close read / write lseek chmod umask utime truncate
MehrBetriebssysteme. A1- Prozesse. Olaf Spinczyk.
Betriebssysteme A1- Prozesse https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,
Mehr1 wsort - Datenstrukturen (1. Möglichkeit) 3 Speicherverwaltung. Besprechung Aufgabe 2. dynamische Speicherallokation vs.
U4 4. Übung U4 4. Übung U4-1 Aufgabe 2: Sortieren mittels qsort U4-1 Aufgabe 2: Sortieren mittels qsort Besprechung Aufgabe 2 dynamische Speicherallokation vs. Stackallokation Fehlerbehandlung Speicheraufbau
MehrBetriebssysteme. Einführung C. Olaf Spinczyk.
Betriebssysteme Einführung C 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,
Mehr1 wsort - Datenstrukturen (1. Möglichkeit)
U4 4. Übung U4 4. Übung Besprechung Aufgabe 2 dynamische Speicherallokation vs. Stackallokation Fehlerbehandlung Speicheraufbau eines Prozesses Prozesse: fork, exec, wait Aufgabe 4 U4.1 U4-1 Aufgabe 2:
MehrKlausur Betriebssysteme I
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 18.3.2011 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit
MehrEine 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?...................
MehrProbeklausur 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
MehrAufgabenblatt 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
MehrInterprozesskommunikation
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
MehrPThreads. 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
MehrKlausurdeckblatt. 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
MehrU23 - 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
MehrProzesse. 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()
MehrDie Zustellung von Signalen 100
Die Zustellung von Signalen 100 Die vorangegangenen Beispiele werfen die Frage auf, wie UNIX bei der Zustellung von Signalen vorgeht, wenn der Prozess zur Zeit nicht aktiv ist, gerade ein Systemaufruf
MehrPROGRAMMIEREN 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
MehrNetzwerk-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
MehrAufbau 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
MehrAllgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer
Allgemeines Shell Programmierung Unix Shell Scripts Unix Ein shell script ist eine Textdatei, welche eine Liste von Befehlen (Standard Unix Befehle) beinhaltet. Diese Datei kann durch Aufrufen ausgeführt
MehrGute 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
MehrHomogene Multi-Core-Prozessor-Architekturen
Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009
MehrInstitut für Informatik der Ludwig-Maximilians-Universität München Systempraktikum Wintersemester 2009/2010 Prof. Dr. Dieter Kranzlmüller Dr. Thomas S
Institut für Informatik der Ludwig-Maximilians-Universität München Systempraktikum Wintersemester 2009/2010 Prof. Dr. Dieter Kranzlmüller Dr. Thomas Schaaf, Dr. Nils gentschen Felde Blatt 3 Grundlagen
Mehrfork () 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)
MehrBetriebssysteme (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,
MehrKommunikationsmuster (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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren
MehrInhalt. Ü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
MehrKlausur Systemprogrammierung I Februar Klausur Systemprogrammierung I Februar 2001
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
MehrBetriebssysteme (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/
MehrBetriebssysteme Teil 3: Systemaufrufe für Prozesse
Betriebssysteme Teil 3: Systemaufrufe für Prozesse 09.10.13 1 Literatur [3-1] Introduction To Unix Signals Programming http://users.actcom.co.il/~choo/lupg/tutorials/signals/signalsprogramming.html [3-2]
MehrZusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks
Zusammenfassung für CS-Prüfung 3 Seite 1 CS-Zusammenfassung für Prüfung 3 vom 24. 6. 2002 Deadlock Im Beispiel gibt es 3 Deadlocks Unterschied zwischen Blockieren, Verklemmen und Verhungenrn= -> Band 1
MehrMalware. 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
MehrAbbildung 3.1: Aufbau einer Pipeline
Kapitel 3 Pipelines Schreibender Prozeß Ringpuffer Lesender Prozeß Abbildung 3.1: Aufbau einer Pipeline Eine Pipeline ist ein unidirektionaler Kommunikationskanal (siehe Abbildung 3.1). Die schreibende
MehrProgramme 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,
MehrDie Mini Shell "Mishell"
Praktikum Mishell Die Mini Shell "Mishell" Frühlingssemester 2019 M. Thaler, J. Zeman Inhaltsverzeichnis 1 Einführung 2 1.1 Ziel................................... 2 1.2 Durchführung und Leistungsnachweis................
Mehrf) 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
MehrLösung zur Praktikumsaufgabe 9
Lösung zur Praktikumsaufgabe 9 Thema: Pipes 2. Zur Beendigung des Programmes sind verschiedene Ansätze denkbar. Wenn explizit auf eine bestimmtes Symbol (z. B. quit, Leerzeile) getestet wird, dann darf
MehrU3 UNIX-Signale U3 UNIX-Signale
U3 UNIX-Signale U3 UNIX-Signale Aufgabe 8: josh UNIX-Signale: Funktionsweise und Behandlung UNIX-API zur Signalbehandlung Unterbrechung blockierender Systemaufrufe Nebenläufigkeit durch Signalbehandlung
MehrThreads. 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)
MehrPROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN
PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 7. UNIX/Linux Pipes Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter Informationsaustausch: 5. 1.
MehrKlausur Betriebssysteme I
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 14.3.2008 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit
MehrTafelü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/
MehrMichael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/ / Tafelübung 5. Prozeß2 Prozeß3. Kernel
5. Tafelübung Lösung der ldir-aufgabe Erläuterung der jsh-aufgabe POSIX-Signale 46 IPC mit Signalen - Beispiele Ereignis ist eingetreten (SIGUSR1) Prozeß1 Prozeß2 Prozeß3 Prozeß4 kill-signal (SIGKILL)
MehrSystemprogrammierung
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
MehrTafelü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/
MehrBetriebssysteme, 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
MehrSystemnahe 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.
MehrKommunikation von Prozessen: Signale und Pipes
Netzwerk-Programmierung Kommunikation von Prozessen: Signale und Pipes Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de Kommunikation von Prozessen Parent- und Child-Prozess
MehrLö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
MehrTeil 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
MehrU9-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
MehrLösung zur Praktikumsaufgabe 1
Lösung zur Praktikumsaufgabe 1 Thema: Semaphore 1. Das Programm in Listing 1 zeigt eine beispielhafte Implementierung. Listing 1: Lösung der Aufgabe 1 (5children-unsync.c) #include #include
MehrBeispiel 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,
MehrPROGRAMMIEREN 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!)
Mehr3. 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
MehrLab 3 User Level Threads
Humboldt University Computer Science Department Operating Systems Principles Lab 3 User Level Threads Lab 2 Gesucht: eine einfache Shell 1. Bereitstellen einer Kommandozeile und Ausführen eines Programms
MehrBetriebssysteme (BS) Prozesse. Olaf Spinczyk.
Betriebssysteme (BS) Prozesse http://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,
MehrI 7. Übung. I-1 Überblick. Besprechung Aufgabe 5 (mysh) Online-Evaluation. Posix Threads. Ü SoS I I.1
I 7. Übung I 7. Übung I-1 Überblick Besprechung Aufgabe 5 (mysh) Online-Evaluation Posix Threads I.1 I-2 Evaluation I-2 Evaluation Online-Evaluation von Vorlesung und Übung SOS zwei TANs, zwei Fragebogen
MehrBetriebssysteme (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/
MehrProzesse 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,
MehrFILE *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 // ==
MehrShared-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