Betriebssysteme (BS)



Ähnliche Dokumente
Betriebssysteme (BS)

Betriebssysteme (BS) Prozesse. Olaf Spinczyk.

Betriebssysteme (BS)

Betriebssysteme (BS) Inhalt. Prozesse. Olaf Spinczyk.

Betriebssysteme (BS) Prozesse. Olaf Spinczyk.

Betriebssysteme (BS) Prozesse. Olaf Spinczyk.

Dämon-Prozesse ( deamon )

Prozesse. Stefan Janssen. Alexander Sczyrba

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

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Prozesse und Logs Linux-Kurs der Unix-AG

2A Basistechniken: Weitere Aufgaben

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

U7 POSIX-Prozesse U7 POSIX-Prozesse

Systemnahe Programmierung in C Übungen Jürgen Kleinöder, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2011 U7.fm

Übung: Verwendung von Java-Threads

EasyWk DAS Schwimmwettkampfprogramm

Prozesse und Logs Linux-Kurs der Unix-AG

Formular»Fragenkatalog BIM-Server«

Computeria Solothurn

Installation / Aktualisierung von Druckertreibern unter Windows 7

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

Datensicherung. Beschreibung der Datensicherung

L A TEX, Linux, Python

icloud nicht neu, aber doch irgendwie anders

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

FastViewer Remote Edition 2.X

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

5 Speicherverwaltung. bs-5.1 1

Einführung in die Programmierung

Partitionieren in Vista und Windows 7/8

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

G 5. Übung. G-1 Überblick. Besprechung 3. Aufgabe. Infos zur Aufgabe 5: fork, exec. Rechenzeiterfassung. Ü SoS I G.1

Tipps und Tricks zu Netop Vision und Vision Pro

SelfLinux cron

4D Server v12 64-bit Version BETA VERSION

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Local Control Network

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker

Internet online Update (Internet Explorer)

Zwischenablage (Bilder, Texte,...)

zur WinIBW Version 2.3

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Werkzeuge der Informatik UNIX

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Herzlich Willkommen bei der nfon GmbH

Professionelle Seminare im Bereich MS-Office

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Installation OMNIKEY 3121 USB

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Führen Sie zum Einstieg in die Materie einige Systemdiagnosen durch. Benutzen Sie dabei winmsd.exe.

SANDBOXIE konfigurieren

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Tutorial -

Step by Step Webserver unter Windows Server von Christian Bartl

Workshop: Eigenes Image ohne VMware-Programme erstellen

ARAkoll 2013 Dokumentation. Datum:

ICS-Addin. Benutzerhandbuch. Version: 1.0

Anleitung über den Umgang mit Schildern

Zentrale Installation

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Übungen Programmieren 1 Felix Rohrer. Übungen

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Carolo Knowledge Base

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Der große VideoClip- Wettbewerb von Media Markt.

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Programmierkurs Java

Installationsanleitung

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Einstieg in die Informatik mit Java

Software Engineering Klassendiagramme Assoziationen

Hallo, Anmeldung auf der Office-Webplattform: Seite 1 von 7 Office 365 Pro Plus

Technische Dokumentation SilentStatistikTool

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Internet Explorer Version 6

Der SD-Kartenslot befindet sich an der rechten Gehäuseseite unterhalb der rechteckigen hellgrauen Gummiabdeckung.

Kurzanleitung GigaMove

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

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Backup der Progress Datenbank

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Neue Funktionen im GUI für PC-DMIS V3.x 4.x Seite 1 von 8

10.6 Programmier-Exits für Workitems

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Transkript:

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/ 1 Inhalt Wiederholung Prozesse konkret: UNIX-Prozessmodell Shells und E/A UNIX-Philosophie Prozesserzeugung Signale Prozesszustände Leichtgewichtige Prozessmodelle Gewicht von Prozessen Leichtgewichtige Prozesse Federgewichtige Prozesse Systeme mit leichtgewichtigen Prozessen Windows NT Linux Silberschatz, Kap.... 3.1-3.3: Process Concept 21.4: Linux Tanenbaum, Kap.... 2.1: Prozesse 10.1-10.3: UNIX u. Linux Silberschatz, Kap. 4: Multithreaded Progr. Tanenbaum, Kap. 2.2: Threads BS: 03 Prozesse 2

Inhalt Wiederholung Prozesse konkret: UNIX-Prozessmodell Shells und E/A UNIX-Philosophie Prozesserzeugung Signale Prozesszustände Leichtgewichtige Prozessmodelle Gewicht von Prozessen Leichtgewichtige Prozesse Federgewichtige Prozesse Systeme mit leichtgewichtigen Prozessen Windows NT Linux BS: 03 Prozesse 3 Wiederholung: Prozesse... sind Programme in Ausführung Dynamisch, nicht statisch Abwechselnde Folge von CPU-Stößen und E/A-Stößen benötigen Betriebsmittel des Rechners CPU, Speicher, E/A-Geräte haben einen Zustand READY, RUNNING, BLOCKED werden konzeptionell als unabhängige, nebenläufige Kontrollflüsse betrachtet unterliegen der Kontrolle des Betriebssystems Betriebsmittel-Zuteilung Betriebsmittel-Entzug BS: 03 Prozesse 4

Inhalt Wiederholung Prozesse konkret: UNIX-Prozessmodell Shells und E/A UNIX-Philosophie Prozesserzeugung Signale Prozesszustände Leichtgewichtige Prozessmodelle Gewicht von Prozessen Leichtgewichtige Prozesse Federgewichtige Prozesse Systeme mit leichtgewichtigen Prozessen Windows NT Linux BS: 03 Prozesse 5 UNIX (K. Thompson, D. Ritchie, 1968) Eine lange Geschichte... Ursprung: Bell Labs Alternative zu Multics Version 1 entstand auf einer DEC PDP 7 Assembler, 8K 18 Bit Worte Version 3 in C realisiert Quelle: Silberschatz, Operating System Concepts BS: 03 Prozesse 6

UNIX-Prozesse... sind primäres Strukturierungskonzept für Aktivitäten Anwendungsprozesse und Systemprozesse können leicht und schnell weitere Prozesse erzeugen Elternprozess Kindprozess bilden eine Prozess-Hierarchie: Der init-prozess liest aus der /etc/inittab die Liste der Terminals und startet für jedes das Programm getty, das die Einwahl über das Terminal mit Hilfe von login erlaubt. getty tty0 login bash swapper (PID 0) init (PID 1) getty tty1 pagedaemon (PID 2) getty tty2 Jeder UNIX-Prozess hat eine eindeutige Nummer (Prozess-ID, PID). Die PID des Elternprozesses heißt PPID.... grep Horst file.c Auch die Shell nutzt Prozesse: Jedes Kommando wird als firefox eigener Kindprozess ausgeführt. BS: 03 Prozesse 7 UNIX-Shells Schale (shell), die den Kern (kernel) umgibt Textbasierte Nutzerschnittstelle zum Starten von Kommandos: Suche im Dateisystem entsprechend $PATH (z.b. /usr/bin:/bin:...) olaf@xantos:~> which emacs /usr/bin/emacs Das Kommando which zeigt an, wo ein bestimmtes Kommando gefunden wird. Jedes ausgeführte Kommando ist ein eigener Kindprozess Typischerweise blockiert die Shell bis das Kommando terminiert Man kann aber auch Kommandos stoppen und fortsetzen ( job control ) oder sie im Hintergrund ausführen... BS: 03 Prozesse 8

UNIX-Shells: Job Control olaf@xantos:~> emacs foo.c Ctrl-Z [1]+ Stopped emacs foo.c olaf@xantos:~> kate bar.c & [2] 19504 olaf@xantos:~> jobs [1]+ Stopped emacs foo.c [2]- Running kate bar.c & olaf@xantos:~> bg %1 [1]+ emacs foo.c & olaf@xantos:~> jobs [1]- Running emacs foo.c & [2]+ Running kate bar.c & Kommando wird gestartet die Shell blockiert Kommando wird gestoppt die Shell läuft weiter Durch das & am Ende wird kate im Hintergrund gestartet jobs zeigt alle gestarteten Kommandos an bg schickt ein gestopptes Kommando in den Hintergrund BS: 03 Prozesse 9 Standard-E/A-Kanäle von Prozessen Normalerweise verbunden mit dem Terminal, in dem die Shell läuft, die den Prozess gestartet hat: Standard-Eingabe Standard-Ausgabe Zum Lesen von Benutzereingaben (Tastatur) Textausgaben des Prozesses (Terminalfenster) Standard-Fehlerausgabe Separater Kanal für Fehlermeldungen (normalerweise auch das Terminal) Praktisch alle Kommandos akzeptieren auch Dateien als Ein- oder Ausgabekanäle (statt des Terminals) Shells bieten eine einfache Syntax, um die Standard-E/A- Kanäle umzuleiten... BS: 03 Prozesse 10

Standard-E/A-Kanäle umleiten Umleitung der Standard-Ausgabe in die Datei l1 mit > olaf@xantos:~> ls -l > l1 olaf@xantos:~> grep "Sep 2007" < l1 > l2 olaf@xantos:~> wc < l2 2 18 118 Umleitung der Standard-Eingabe auf die Datei l2 mit < Das gleiche noch etwas kompakter... olaf@xantos:~> ls -l grep "Sep 2007" wc 2 18 118 Mit (pipe) verbindet die Shell die Standard-Ausgabe des linken mit der Standard-Eingabe des rechten Prozesses. BS: 03 Prozesse 11 Die UNIX-Philosophie Doug McIlroy, der Erfinder der UNIX-Pipes, fasste die Philosophie hinter UNIX einmal wie folgt zusammen: "This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface." Für gewöhnlich wird das abgekürzt: Do one thing, do it well. BS: 03 Prozesse 12

UNIX-Prozesssteuerung: System Calls Ein erster Überblick... getpid (2) getppid (2) getuid (2) fork (2) liefert PID des laufenden Prozesses liefert PID des Elternprozesses (PPID) liefert die Benutzerkennung des laufenden Prozesses (UID) erzeugt neuen Kindprozess exit (3), _exit (2) beendet den laufenden Prozess wait (2) execve (2) wartet auf die Beendigung eines Kindprozesses lädt und startet ein Programm im Kontext des laufenden Prozesses BS: 03 Prozesse 13 UNIX-Prozesse im Detail: fork() System Call: pid_t fork (void) Dupliziert den laufenden Prozess (Prozesserzeugung!) Der Kindprozess erbt... Adressraum (code, data, bss, stack) Benutzerkennung Standard-E/A-Kanäle Prozessgruppe, Signaltabelle (dazu später mehr) Offene Dateien, aktuelles Arbeitsverzeichnis (dazu viel später mehr) Nicht kopiert wird... Process ID (PID), Parent Process ID (PPID) anhängige Signale, Accounting-Daten,... Ein Prozess ruft fork auf, aber zwei kehren zurück? BS: 03 Prozesse 14

Verwendung von fork()... /* includes */ int main () { int pid; printf( Elternpr.: PID %d PPID %d\n, getpid(), getppid()); pid = fork(); /* Prozess wird dupliziert! Beide laufen an dieser Stelle weiter. */ if (pid > 0) printf( Im Elternprozess, Kind-PID %d\n, pid); else if (pid == 0) printf( Im Kindprozess, PID %d PPID %d\n, getpid(), getppid()); else printf( Oh, ein Fehler!\n ); /* mehr dazu in der TÜ */ } olaf@xantos:~>./fork Elternpr.: PID 7553 PPID 4014 Im Kindprozess, PID 7554 PPID 7553 Im Elternprozess, Kind-PID 7554 BS: 03 Prozesse 15 Diskussion: Schnelle Prozesserzeugung Das Kopieren des Adressraums kostet viel Zeit Insbesondere bei direkt folgendem exec..() pure Verschwendung! Historische Lösung: vfork Der Elternprozess wird suspendiert, bis der Kindprozess exec..() aufruft oder mit _exit() terminiert. Der Kindprozess benutzt einfach Code und Daten des Elternprozesses (kein Kopieren!). Der Kindprozess darf keine Daten verändern. - teilweise nicht so einfach: z.b. kein exit() aufrufen, sondern _exit()! Heutige Lösung: copy-on-write Mit Hilfe der MMU teilen sich Eltern- und Kindprozess dasselbe Code- und Datensegment. Erst wenn der Kindprozess Daten ändert, wird das Segment kopiert. Wenn nach dem fork() direkt ein exec..() folgt, kommt das nicht vor. Heutzutage benutzen fork und vfork copy-on-write. BS: 03 Prozesse 16

UNIX-Prozesse im Detail: _exit() System Call: void _exit (int) Terminiert den laufenden Prozess und übergibt das Argument als exit status an den Elternprozess. Aufruf kehrt nicht zurück! Gibt die belegten Ressourcen des Prozesses frei. offene Dateien, belegter Speicher,... Sendet dem eigenen Elternprozess das Signal SIGCHLD. Die Bibliotheksfunktion exit (3) räumt zusätzlich noch die von der libc belegten Ressourcen auf Gepufferte Ausgaben werden beispielsweise herausgeschrieben! Normale Prozesse sollten exit (3) benutzen, nicht _exit. BS: 03 Prozesse 17 Diskussion: Verwaiste Prozesse (engl. orphan processes ) Ein UNIX-Prozess wird zum Waisenkind, wenn sein Elternprozess terminiert. Was passiert mit der Prozesshierarchie? init (PID 1) init (PID 1) getty tty0 login bash exit! firefox firefox init (PID 1) adoptiert alle verwaisten Prozesse. So bleibt die Prozesshierarchie intakt. BS: 03 Prozesse 18

UNIX-Prozesse im Detail: wait() System Call: pid_t wait (int *) Blockiert den aufrufenden Prozess bis ein Kindprozess terminiert. Der Rückgabewert ist dessen PID. Über das Zeigerargument erhält der Aufrufer u.a. den exit status. Wenn ein Kindprozess bereits terminiert ist, kehrt der Aufruf sofort zurück. BS: 03 Prozesse 19 Verwendung von wait()... /* includes, main() {... */ pid = fork(); /* Kindprozess erzeugen */ if (pid > 0) { int status; sleep(5); /* Bibliotheksfunktion: 5 Sek. schlafen */ if (wait(&status) == pid && WIFEXITED(status)) printf ("Exit Status: %d\n", WEXITSTATUS(status)); } else if (pid == 0) { exit(42); Ein Prozess kann auch von außen } getötet werden, d.h. er ruft nicht... exit auf. In diesem Fall würde WIFEXITED 0 liefern. olaf@xantos:~>./wait Exit Status: 42 BS: 03 Prozesse 20

Diskussion: Zombies Bevor der exit status eines terminierten Prozesses mit Hilfe von wait abgefragt wird, ist der ein Zombie. Die Ressourcen solcher Prozesse können freigegeben werden, aber die Prozessverwaltung muss sie noch kennen. Insbesondere der exit status muss gespeichert werden. olaf@xantos:~>./wait & olaf@xantos:~> ps PID TTY TIME CMD 4014 pts/4 00:00:00 bash 17892 pts/4 00:00:00 wait 17895 pts/4 00:00:00 wait <defunct> 17897 pts/4 00:00:00 ps olaf@xantos:~> Exit Status: 42 Beispielprogramm von eben während der 5 Sekunden Wartezeit. Zombies werden von ps als <defunct> dargestellt. BS: 03 Prozesse 21 Zombies... Film vom 1968 Regie: G. A. Romero Wikipedia: In 1999 the Library of Congress entered it it into the United States National Film Registry with other films deemed historically, culturally or aesthetically important. BS: 03 Prozesse 22

UNIX Prozesse im Detail: execve() System Call: int execve (const char *kommando, const char *args[ ], const char *envp[ ]) Lädt und startet das angegebene Kommando. Der Aufruf kehrt nur im Fehlerfall zurück. Der komplette Adressraum wird ersetzt. Es handelt sich aber weiterhin um denselben Prozess! Selbe PID, PPID, offenen Dateien,... Die libc biete einige komfortable Hilfsfunktionen, die intern execve aufrufen: execl, execv, execlp, execvp,... BS: 03 Prozesse 23 Verwendung von exec..()... /* includes, main() {... */ char cmd[100], arg[100]; while (1) { printf ("Kommando?\n"); scanf ("%99s %99s", cmd, arg); pid = fork(); /* Prozess wird dupliziert! Beide laufen an dieser Stelle weiter. */ if (pid > 0) { int status; if (wait(&status) == pid && WIFEXITED(status)) printf ("Exit Status: %d\n", WEXITSTATUS(status)); } else if (pid == 0) { execlp(cmd, cmd, arg, NULL); printf ("exec fehlgeschlagen\n"); }... } BS: 03 Prozesse 24

Diskussion: Warum kein forkexec()? Durch die Trennung von fork und execve hat der Elternprozess mehr Kontrolle: Operationen im Kontext des Kindprozesses ausführen Voller Zugriff auf die Daten des Elternprozesses Shells nutzen diese Möglichkeit zum Beispiel zur... Umleitung der Standard-E/A-Kanäle Aufsetzen von Pipes BS: 03 Prozesse 25 Signale Mit Hilfe von Signalen können Prozesse über Ausnahmesituation informiert werden ähnlich wie Hardwareunterbrechungen Beispiele: SIGINT SIGSTOP SIGWINCH SIGCHLD SIGSEGV SIGKILL... Prozess abbrechen (z.b. bei Ctrl-C) Prozess anhalten (z.b. bei Ctrl-Z) Fenstergröße wurde geändert Kindprozess terminiert Speicherschutzverletzung des Prozesses Prozess wird getötet Die Standardbehandlung (terminieren, anhalten,...) kann für die meisten Signale überdefiniert werden. siehe signal (2) BS: 03 Prozesse 26

UNIX-Prozesszustände ein paar mehr als wir bisher kannten... fork erzeugt CPU-Zuteilung verdrängt genug Speicher nicht genug Speicher im Benutzermodus laufend Rückkehr Systemaufruf, Unterbrechung Unterbrechung, U.-Rückkehr im Kern laufend exit Zombie Verdrängung CPU-Zuteilung Schlafen bereit, im Speicher Aufwecken schlafend, im Speicher Auslagerung Einlagerung Auslagerung Aufwecken bereit, ausgelagert schlafend, ausgelagert Bild in Anlehnung an M. Bach UNIX Wie funktioniert das Betriebssystem? BS: 03 Prozesse 27 Inhalt Wiederholung Prozesse konkret: UNIX-Prozessmodell Shells und E/A UNIX Philosophie Prozesserzeugung Signale Prozesszustände Leichtgewichtige Prozessmodelle Gewicht von Prozessen Leichtgewichtige Prozesse Federgewichtige Prozesse Systeme mit leichtgewichtigen Prozessen Windows NT Linux BS: 03 Prozesse 28

Das Gewicht von Prozessen Das Gewicht eines Prozesses ist ein bildlicher Ausdruck für die Größe seines Kontexts und damit die Zeit, die für einen Prozesswechsel benötigt wird. CPU-Zuteilungsentscheidung alten Kontext sichern neuen Kontext laden Klassische UNIX-Prozesse sind schwergewichtig. BS: 03 Prozesse 29 Leichtgewichtige Prozesse (Threads) Die 1:1-Beziehung zwischen Kontrollfluss und Adressraum wird aufgebrochen. Eng kooperierende Threads können sich einen Adressraum teilen (code + data + bss, nicht stack!). Vorteile: Aufwändige Operationen können in einen leichtgewichtigen Hilfsprozess ausgelagert werden, während der Elternprozess erneut auf Eingabe reagieren kann. - Typisches Beispiel: Webserver Programme, die aus mehreren unabhängigen Kontrollflüssen bestehen, profitieren unmittelbar von Multiprozessor-Hardware. Schneller Kontextwechsel, wenn man im selben Adressraum bleibt. Je nach Scheduler eventuell mehr Rechenzeit. Nachteil: Programmierung ist schwierig: Zugriff auf gemeinsame Daten muss koordiniert werden. BS: 03 Prozesse 30

Federgewichtige Prozesse (engl. User-Level Threads) Werden komplett auf der Anwendungsebene implementiert. Das Betriebssystem weiß nichts davon. Realisiert durch Bibliothek: User-Level Thread Package Vorteile: Extrem schneller Kontextwechsel: Nur wenige Prozessorregister sind auszutauschen. Ein Trap in den Kern entfällt. Jede Anwendung kann sich das passende Thread-Package wählen. Nachteile: Blockierung eines federgewichtigen Prozesses führt zur Blockierung des ganzen Programms. Kein Geschwindigkeitsvorteil durch Multi-Prozessoren. Kein zusätzlicher Rechenzeitanteil. BS: 03 Prozesse 31 Inhalt Wiederholung Prozesse konkret: UNIX-Prozessmodell Shells und E/A UNIX Philosophie Prozesserzeugung Signale Prozesszustände Leichtgewichtige Prozessmodelle Gewicht von Prozessen Leichtgewichtige Prozesse Federgewichtige Prozesse Systeme mit leichtgewichtigen Prozessen Windows NT Linux BS: 03 Prozesse 32

Threads in Windows (1) Prozess Globale und statische Daten Stack 1 Stack 2 Stack 3 Stack 4 Code Ein Prozess enthält 1 bis N Thread, die auf denselben globalen Daten operieren. BS: 03 Prozesse 33 Threads in Windows (2) Prozess: Umgebung und Adressraum für Threads Ein Win32-Prozess enthält immer mindestens 1 Thread Thread: Code ausführende Einheit Jeder Thread verfügt über einen eigenen Stack und Registersatz (insbesondere PC) Threads bekommen vom Scheduler Rechenzeit zugeteilt Alle Threads sind Kernel-Level Threads User-Level Threads möglich ( Fibers ), aber unüblich Strategie: Anzahl der Threads gering halten Überlappte (asynchrone) E/A BS: 03 Prozesse 34

Threads in Linux Linux implementiert POSIX Threads in Form der pthread-bibliothek Möglich macht das ein Linux-spezifischer System Call Linux System Call: int clone (int (*fn)(void *), void *stack, int flags, void *arg) Universelle Funktion, parametrisiert durch flags CLONE_VM Adressraum gemeinsam nutzen CLONE_FS Information über Dateisystem teilen CLONE_FILES Dateideskriptoren (offene Dateien) teilen CLONE_SIGHAND Gemeinsame Signalbehandlungstabelle Für Linux sind alle Threads und Prozesse intern Tasks Der Scheduler macht also keinen Unterschied BS: 03 Prozesse 35 Zusammenfassung Prozesse sind die zentrale Abstraktion für Aktivitäten in heutigen Betriebssystemen. UNIX-Systeme stellen diverse System Calls zur Verfügung, um Prozesse zu erzeugen, zu verwalten und miteinander zu verknüpfen. alles im Sinne der Philosophie: Do one thing, do it well. Leichtgewichtige Fadenmodelle haben viele Vorteile in UNIX-Systemen bis in die 90er Jahre nicht verfügbar in Windows von Beginn an (ab NT) integraler Bestandteil BS: 03 Prozesse 36