7. Vorlesung Betriebssysteme
|
|
|
- Etta Kohler
- vor 9 Jahren
- Abrufe
Transkript
1 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/62 7. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik
2 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 2/62 Heute Systemaufrufe (System Calls) Prozess Prozesskontext Benutzerkontext Hardwarekontext Systemkontext Prozessmodelle Prozesstabellen und Prozesskontrollblöcke Zustandslisten Prozesse erzeugen und löschen Prozesse erzeugen mit fork Prozesse ersetzen mit exec
3 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 3/62 Benutzermodus und Kernelmodus (1/2) x86-kompatible CPUs enthalten 4 Privilegienstufen zum Speicherschutz, um die Stabilität und Sicherheit zu erhöhen Ein Prozess kann immer nur in einem einzelnen Ring ausgeführt werden und ist nicht in der Lage, sich selbstständig aus diesem zu befreien Nur Prozesse in Ring 0 haben vollen Zugriff auf die Hardware und dürfen den vollständigen Befehlssatz der CPU nutzen Hier läuft nur der Betriebssystemkern und zum Start des Betriebssystems nötige Hardwaretreiber Im Kernelmodus kann auch physischer Speicher adressiert werden In Ring 3 laufen die Anwendungen Im Benutzermodus arbeiten die Prozesse nur mit virtuellem Speicher
4 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 4/62 Benutzermodus und Kernelmodus (2/2) Grund für die Existenz von Benutzermodus und Kernelmodus Anwendungen den Zugriff auf Hardware und andere wichtige Funktionalitäten erlaubt werden, obwohl diese nur dem Betriebssystem zur Verfügung stehen Speicherbereiche sollen getrennt sein, um die Sicherheit und Stabilität zu erhöhen Fehlerhafte Anwendungen können nicht direkt auf Speicherbereiche zugreifen, in denen das Betriebssystem ausgeführt wird
5 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 5/62 Systemaufrufe (1/2) Muss ein Prozess im Benutzermodus eine höher privilegierte Aufgabe erfüllen (z.b. Zugriff auf Hardware), kann er das dem Kernel durch einen Systemaufruf mitteilen Ein Systemaufruf ist ein Funktionsaufruf im Betriebssystem, der einen Sprung vom Benutzermodus in den privilegierten Kernelmodus auslöst (= Moduswechsel) Die Leistung eines Systemaufrufs wird im Kernel, also außerhalb des Adressraums des aufrufenden Prozesses, erbracht Moduswechsel Ein Prozess gibt die Kontrolle über die CPU an den Kernel ab und wird unterbrochen bis die Anfrage fertig bearbeitet ist Nach dem Systemaufruf gibt der Kernel die CPU wieder an den Prozess im Benutzermodus ab Der Prozess führt seine Abarbeitung an der Stelle fort, an der der Kontextwechsel zuvor angefordert wurde
6 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 6/62 Systemaufrufe (2/2) Die Menge der Systemaufrufe (System Calls) ist die Schnittstelle, die das Betriebssystem den Anwendungsprogrammen zur Verfügung stellt Über Systemaufrufe greifen Benutzerprozesse auf die Hardware zu Systemaufrufe erlauben es den Benutzerprogrammen u.a. neue Prozesse, Dateien und andere Betriebsmittel zu erzeugen und zu verwalten Einfach gesagt: Ein Systemaufruf ist eine Anfrage eines Prozesses an den Kernel, um einen Dienst des Kernels in Anspruch zu nehmen
7 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 7/62 Ein Beispiel für einen Systemaufruf: ioctl() Der Systemaufruf ioctl() ermöglicht es Programmen unter Linux/UNIX-Betriebssystemen gerätespezifische Befehle abzusetzen Die Syntax des Systemaufrufs ist: ioctl (Filedeskriptor, Aktionsanforderung, Parameter); Typische Einsatzszenarien von ioctl(): Formatierung einer Diskettenspur, Initialisieren eines Modems oder einer Soundkarte, usw. ioctl() ermöglicht die Kommunikation mit und Steuerung von: Zeichenorientierten Geräten (Maus, Tastatur, Drucker, Terminals,... ) Blockorientierten Geräten (Festplatten, CD-/DVD-Laufwerke,... ) Weitere Systemaufrufe unter Linux/UNIX: poll, select, mmap, writev, write, fsync, idle, umask, chroot, dup, pipe, exit,... Gute Übersicht über die Systemaufrufe unter Linux LINUX System Call Quick Reference von Jialong He
8 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 8/62 Vergleich zwischen Systemaufrufen und Interrupts Der Kernel besteht aus einer Reihe von Subsystemen Systemaufrufe sind die Schnittstelle zu den Anwendungen im Benutzermodus Die Behandlung der Interrupts ist die Schnittstelle zur Hardware über den architekturabhängigen Quelltext im Kernel und die Treiber
9 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 9/62 Systemaufrufe und Bibliotheken Direkt mit Systemaufrufen arbeiten ist unsicher und schlecht portabel Moderne Betriebssysteme stellen eine Bibliothek bereit, die sich logisch zwischen den Benutzerprozessen und dem Kern befindet Die Bibliothek ist zuständig für: Kommunikationsvermittlung der Benutzerprozesse mit dem Kernel Moduswechsel zwischen Benutzermodus und Kernelmodus Vorteile, die der Einsatz einer Bibliothek mit sich bringt: Erhöhte Portabilität, da kein oder nur sehr wenig Bedarf besteht, dass die Anwendungen direkt mit dem Kern des Betriebssystems kommunizieren Erhöhte Sicherheit, da die Anwendungen nicht selbst den Wechsel in den Kernelmodus durchführen können Beispiele für eine solche Bibliotheken: Standard C Library (UNIX), GNU C-Bibliothek glibc (Linux), C Library Implementationen (BSD) und Microsoft C/C++ Runtime Library
10 Schritt für Schritt (1/6) read(fd, buffer, nbytes); Bevor die Bibliotheksfunktion für read (nbytes aus der Datei fd lesen) aufgerufen wird, die dann wiederum den Systemaufruf read ausführt, legt das Benutzerprogramm in Schritt 1-3 die Parameter auf den Stack In Schritt 4 erfolgt der Sprung in die Bibliotheksfunktion Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
11 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Schritt für Schritt (2/6) read(fd, buffer, nbytes); Die Bibliotheksfunktion speichert in Schritt 5 die Nummer des Systemaufrufs im Accumulator Register EAX der CPU Die Parameter das Systemaufrufs speichert die Bibliotheksfunktion in den Registern EBX, ECX und EDX
12 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Schritt für Schritt (3/6) read(fd, buffer, nbytes); In Schritt 6 wird der Softwareinterrupt (Exception) 0x80 (dezimal: 128) ausgelöst, um vom normalen Benutzermodus in den privilegierten Kernelmodus zu wechseln Der Softwareinterrupt unterbricht die Programmausführung im Benutzer-Modus und erzwingt das Ausführen eines Exception-Handlers im Kernel-Modus
13 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Schritt für Schritt (4/6) read(fd, buffer, nbytes); Der Linux-Kernel verwaltet eine Liste (System Call Table) mit allen ihm bekannten Systemaufrufen Jedem Systemaufruf wird dort eine eindeutige Nummer und eine Kernel-interne Funktion zugeordnet Der aufgerufene Exception-Handler ist eine Funktion im Kernel, die das Register EAX ausliest
14 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Schritt für Schritt (5/6) read(fd, buffer, nbytes); Wenn sich im Register EAX eine gültige Systemaufruf-Nummer befindet, ruft die Funktion Exception-Handler in Schritt 7 die entsprechende Kernel-Funktion aus der System Call Table mit den in den Registern EBX, ECX und EDX liegenden Argumenten auf In Schritt 8 startet der Systemaufruf Ist der Systemaufruf abgeschlossen, wird der Exception-Handler erfolgreich abgeschlossen
15 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Schritt für Schritt (6/6) read(fd, buffer, nbytes); In Schritt 9 wird die Kontrolle an die Bibliothek zurückgegeben werden, die den Softwareinterrupt auslöste Diese Funktion kehrt danach in Schritt 10 zum Benutzerprogramm so zurück, wie es auch eine normale Funktion getan hätte Damit der Systemaufruf beendet werden kann, muss das Benutzerprogramm in Schritt 11 genau wie nach jedem Funktionsaufruf den Stack aufräumen Das Benutzerprogramm kann jetzt ganz normal weiterarbeiten
16 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Beispiel für einen Systemaufruf unter Linux Systemaufrufe werden wie Bibliotheksfunktionen aufgerufen Der Mechanismus ist bei allen Betriebssystemen ähnlich In einem C-Programm ist kein Unterschied erkennbar #include <syscall.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> int main(void) { long ID1, ID2; // Direkter Systemaufruf ID1 = syscall(sys_getpid); printf ("syscall(sys_getpid)=%ld\n", ID1); // Von der glibc ausgeführter Systemaufruf ID2 = getpid() printf ("getpid()=%ld\n", ID2); } return(0);
17 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Auswahl an Systemaufrufen Prozessmanagement Dateimanagement Verzeichnisund Dateimanagement Verschiedenes fork Neuen Kindprozess erzeugen waitpid Auf Beendigung eines Kindprozesses warten execve Einen Prozess durch einen anderen ersetzen. PID beibehalten exit Prozess beenden open Datei zum Lesen/Schreiben öffnen close Offene Datei schließen read Daten aus einer Datei in den Puffer einlesen write Daten aus dem Puffer in eine Datei schreiben lseek Dateilesezeiger bewegen stat Status einer Datei ermitteln mkdir Neues Verzeichnis erzeugen mdir Leeres Verzeichnis entfernen link Neuen Eintrag (Link) auf eine Datei erzeugen unlink Verzeichniseintrag löschen mount Dateisystem einhängen umount Eingehängtes Dateisystem entfernen chdir Aktuelles Verzeichnis wechseln chmod Dateirechte für eine Datei ändern kill Signal an einen Prozess schicken time Zeit seit dem 1.Januar 1970
18 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Systemaufrufe unter Linux Die Liste mit den Namen der Systemaufrufe des Linux-Kernels befindet sich im Quelltext von Kernel 2.6.x in: /usr/src/linux/arch/i386/kernel/syscall_table.s Anleitung, wie man einen eigenen Systemaufruf unter einem Kernel 2.6.x realisiert:
19 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Definition: Prozess Ein Prozess ist ein Programm, dass sich in Ausführung bzw. Bearbeitung befindet (lat. procedere = voranschreiten) Prozesse sind dynamische Objekte und repräsentieren sequentielle Aktivitäten in einem Computersystem Ein Prozess umfasst außer dem Programmcode den Prozesskontext und seit UNIX einen geschützten Prozessadressraum: Der Prozesskontext wird wesentlich durch den Inhalt der Register in der CPU und die Daten im Hauptspeicher bestimmt Der Prozessadressraum ist eine Liste von Speicherstellen (virtueller Speicher), in denen der Prozess lesen und schreiben darf Auf einem Computersystem sind immer mehrere Aktivitäten (Prozesse) in Ausführung Der Prozessor wird also im raschen Wechsel zwischen den Aktivitäten hin- und hergeschaltet
20 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Der Prozesskontext Drei Arten von Kontextinformationen speichert das Betriebssystem: Benutzerkontext Daten des Prozesses im zugewiesenen Adressraum (virtuellen Speicher) Hardwarekontext Register in der CPU und Seitentabelle Systemkontext Informationen, die das Betriebssystem über einen Prozess speichert Die Informationen im Hardwarekontext und Systemkontext werden vom Betriebssystem im Prozesskontrollblock verwaltet
21 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Hardwarekontext Der Hardwarekontext umfasst die Inhalte der Register in der CPU zum Zeitpunkt der Prozess-Ausführung und die Seitentabelle Register, deren Inhalt bei einem Kontextwechsel gesichert werden muss: Befehlszähler (Program Counter) Stackpointer zeigt auf das oberste Element des Stacks Basepointer kann auf einen Platz im Stack zeigen Basisregister zur Adressierung der Anfangsadresse einer Datenstruktur Grenzregister zur Adressierung der Endadresse einer Datenstruktur Akkumulator enthält Ergebnisse der Recheneinheit (ALU) Diese Informationen sind wichtig, wenn ein Prozess im Rahmen des Multitaskings bei einem Kontextwechsel durch einen anderen Prozess unterbrochen wird
22 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Systemkontext Der Systemkontext sind die Informationen, die das Betriebssystem über einen Prozess speichert Beispiele sind: Eintrag in der Prozesstabelle Prozessnummer (PID) Prozesszustand Information über Eltern- oder Kindprozesse Prioritäten Identifier Zugriffsrechte auf Ressourcen Quotas Zur Verfügung stehende Menge der einzelnen Ressourcen Laufzeit Geöffnete Dateien Zugeordnete Geräte
23 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesse Jeder Prozess hat seinen eigenen Prozesskontext, der von den Kontexten der anderen Prozesse meist unabhängig ist Gibt ein Prozess den Prozessor ab, wird ihr Kontext, also der Inhalt der CPU-Register an einer sicheren Stelle gerettet (zwischengespeichert) Erhält der Prozess wieder den Zugriff auf die CPU, wird der Inhalt des Kontext wiederhergestellt und die Register werden mit den zuvor gespeicherten Daten geladen Prozessmanagement und Prozessinteraktion machen den nicht-monopolisierten, geschützten Zugriff auf CPU und Speicher erst möglich Jeder Prozess befindet sich zu jedem Zeitpunkt in einem bestimmten Zustand Der Zustand gibt an, ob der Prozess gerade auf der CPU ausgeführt wird bzw. ausgeführt werden kann = Zustandsdiagramm der Prozesse
24 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesszustände Frage Ein Prozess wird zu Beginn der Programmausführung erzeugt und bei der Terminierung des Programms beendet Die Ausführung eines Prozesses kann zur Erzeugung bzw. Beendigung weiter Prozesse führen Jeder Prozess befindet sich zu jedem Zeitpunkt in einem Zustand Wie viele unterschiedliche Zustände es gibt, hängt vom Prozessmodell des Betriebssystems ab Wie viele Prozesszustände braucht ein Prozessmodell mindestens?
25 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Das 2-Zustands-Prozessmodell Prinzipiell genügen zwei Prozesszustände rechnend: Einem Prozess wurde die CPU zugeteilt nicht rechnend: Der Prozess wartet auf die Zuteilung der CPU Da die nicht-zuteilung der CPU für einen Prozess verschiedene Ursachen haben kann, kann das Prozessmodell praktisch beliebig verfeinert werden nicht rechnend Zuteilung der CPU Entzug der CPU assign resign rechnend Start Terminierung
26 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 2-Zustands-Prozessmodell (Implementierung) Die Prozesse im Zustand nicht rechnend müssen in einer Warteschlange gespeichert werden, in der sie auf ihre Ausführung warten Dieses Modell beschreibt auch das Verhalten des Dispatchers Aufgabe des Dispatchers ist die Umsetzung der Zustandsübergänge Die Bestimmung der Reihenfolge, welcher Prozess als nächstes Zugriff auf die CPU erhält, regelt das verwendete Scheduling-Verfahren
27 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Konzeptioneller Fehler des 2-Zustands-Prozessmodells Das 2-Zustands-Prozessmodell geht davon aus, dass alle Prozesse immer zur Ausführung bereit sind Das ist unrealistisch! Es gibt fast immer Prozesse, die blockiert sind Mögliche Gründe, warum Prozesse blockiert sind: Warten auf die Eingabe oder Ausgabe eines E/A-Geräts Warten auf das Ergebnis eines anderen Prozesses Warten auf eine Reaktion des Benutzers Lösung: Die nicht rechnenden Prozesse müssen in zwei Gruppen unterschieden werden Prozesse die bereit (ready) sind Prozesse die blockiert (blocked) sind = 3-Zustands-Prozessmodell
28 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 3-Zustands-Prozessmodell Jeder Prozess befindet sich in einem der folgenden 3 Zustände rechnend (running): Der Prozess besitzt den Zugriff auf die CPU und führt auf dieser Instruktionen aus bereit (ready): Der Prozess könnte unmittelbar Instruktionen auf der CPU ausführen und wartet aktuell auf die Zuteilung der CPU blockiert (blocked): Der Prozess kann momentan nicht weiter ausgeführt werden und wartet aktuell auf das Eintreten eines Ereignisses oder einer Bedingung Dabei kann es sich z.b. um eine Nachricht eines anderen Prozesses oder eines Eingabe-/Ausgabegeräts oder aber um das Eintreten eines bestimmten Synchronisationsereignisses handeln
29 Prinzip des 3-Zustands-Prozessmodells (1/2) add: Prozesserzeugung durch einen Programmstart oder einen anderen Prozess und Einordnung in die Liste der Prozesse im Zustand bereit retire: Der aktuell rechnende Prozess terminiert Alle durch den Prozess belegten Ressourcen werden freigegeben assign: Die CPU wird einem Prozess im Zustand bereit zugeteilt, der nun mit der CPU arbeiten kann und in den Zustand rechnend wechselt Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
30 block: Der rechnende Prozess wartet auf eine Nachricht oder ein Synchronisationsereignis und wechselt in den Zustand blockiert resign: Dem rechnenden Prozess wird wegen einer Entscheidung des Schedulers die CPU entzogen und er wechselt in den Zustand bereit ready: Die Bedingung, wegen der der Prozess blockiert wurde, ist nun erfüllt und der Prozess wechselt in den Zustand bereit Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prinzip des 3-Zustands-Prozessmodells (2/2)
31 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Das 3-Zustands-Prozessmodell Implementierung (1/2) Eine Implementierung könnte auf zwei Warteschlangen basieren Warteschlange für die Prozesse im Zustand bereit Warteschlange für die blockierten Prozesse
32 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Das 3-Zustands-Prozessmodell Implementierung (2/2) Mehrere Warteschlangen für die blockierten Prozesse
33 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Das 5-Zustands-Prozessmodell Es kann empfehlenswert sein, das 3-Zustands-Prozessmodell um zwei weitere Prozesszustände zu erweitern neu (new): Der Prozess (Prozesskontrollblock) ist erzeugt, wurde aber vom Betriebssystem noch nicht der Menge (Warteschlange) der Prozesse zugefügt, die unmittelbar Instruktionen auf der CPU ausführen könnten und auf die Zuteilung der CPU warten exit (exit): Der Prozess (Prozesskontrollblock) existiert noch, wurde vom Betriebssystem aber aus der Menge (Warteschlange) der ausführbaren Prozesse entfernt Grund für die Existenz der Prozesszustände neu und exit: Auf manchen Systemen ist die Anzahl der ausführbaren Prozesse limitiert, um Ressourcen (Speicher) zu sparen und den Grad des Mehrprogrammbetriebs festzulegen
34 Prinzip des 5-Zustands-Prozessmodells Ereignis eingetreten ready blockiert (blocked) Warten auf Ereignis block bereit Zuteilung der CPU assign rechnend (ready) Entzug der CPU resign (running) enter exit neu (new) beendet (exit) add retire Start Terminierung Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
35 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Das 6-Zustands-Prozessmodell Ist nicht genügend physischer Hauptspeicher für alle laufenden Prozesse verfügbar, was häufig der Fall ist, müssen Teile von Prozessen oder ganze Prozesse ausgelagert werden Swapping = Vorgang des Auslagerns Das Betriebssystem lagert Prozesse aus, die im Zustand blockiert sind Ausgelagerte Prozesse werden in eine Warteschlange auf die Festplatte geschrieben Durch freigewordenen Platz können Prozesse in der Warteschlange der ausgelagerten Prozesse oder neue Prozess in den Speicher geladen und von der CPU ausgeführt werden Es macht also Sinn, das 5-Zustands-Prozessomodell um den Prozesszustand suspendiert (suspended) zu erweitern
36 Prinzip des 6-Zustands-Prozessmodells suspendiert (suspended) suspendieren blockiert Warten auf Ereignis Ereignis eingetreten (blocked) block ready aktivieren bereit Zuteilung der CPU assign rechnend (ready) Entzug der CPU resign (running) enter exit neu (new) beendet (exit) add retire Start Terminierung Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
37 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Optimierung des 6-Zustands-Prozessmodells Wurde ein Prozess ausgelagert (suspendiert), ist es besser, den frei gewordenen Platz im Hauptspeicher zu verwenden, um einen ausgelagerten Prozess zu aktivieren, als einen neuen Prozess zu nehmen Dieses Vorgehen macht aber nur Sinn, wenn der aktivierte Prozess nicht mehr blockiert ist Was im 6-Zustands-Prozessmodell fehlt, ist die Möglichkeit, die ausgelagerten Prozesse in blockierte und nicht-blockierte Prozesse zu unterscheiden = 7-Zustands-Prozessmodell
38 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prinzip des 7-Zustands-Prozessmodells
39 Prozessmodell von Linux/UNIX Unter Linux/UNIX-Betriebssystemen gilt das 9-Zustands-Prozessmodell Der Zustand rechnend (running) wird unterteilt in die Zustände benutzer rechnend (user running) für Prozesse im Benutzermodus kernel rechnend (kernel running) für Prozesse im Kernelmodus Der Zustand bereit (ready) wird unterteilt in die Zustände bereit (ready) für Prozesse, die neu in den Speicher geladen oder aufgeweckt wurden verdrängt (preempted) für Prozesse, die durch einen Timeout oder eine Vorrangunterbrechung in ihrer Ausführung unterbrochen wurden Eine Verdrängung kann nur erfolgen, wenn ein Prozess gerade vom Kernelmodus in den Benutzermodus wechselt Ist ein Prozess im Kernelmodus, kann er nicht verdrängt werden Einige Prozesszustände haben unter Linux/UNIX andere Namen Der Prozesszustand exit heißt zombie Der Prozesszustand suspendiert heißt swapped Der Prozesszustand blockiert heißt asleep Der Prozesszustand neu heißt created Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
40 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prinzip des 9-Zustands-Prozessmodells
41 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozessverwaltung Das Betriebssystem führt Buch über die laufenden Prozesse Es muss wissen, welche Prozesse aktuell bearbeitet werden müssen Es muss wissen, welche Eigenschaften die Prozesse haben Wird ein Prozess angehalten, muss er zu einem späteren Zeitpunkt in dem Zustand, in dem er gestoppt wurde, wieder gestartet werden Alle wichtigen Informationen über den Prozess müssen für die Dauer der Unterbrechung zwischengespeichert werden Hat ein Prozess zum Zeitpunkt der Unterbrechung Dateien geöffnet, muss für jede Datei der Zeiger der aktuellen Position innerhalb der Datei gespeichert werden In der Prozesstabelle speichert das Betriebssystem alle Informationen zu allen Prozessen des Systems gesammelt Einzige Ausnahme: Der Inhalt des Adressraums (Benutzerkontext) wird nicht in der Prozesstabelle gespeichert Die Prozesstabelle wird als Array oder verkettete Liste realisiert Für jeden Prozess existiert eine eigene Tabelle, der Prozesskontrollblock
42 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesstabelle und Prozesskontrollblöcke (1/2) Jeder Prozess hat eine Prozessidentifikation (Process Identifier), die PID, zur eindeutigen Identifikation :~$ ps PID TTY TIME CMD 1876 pts /3 00: 00: 04 bash 2411 pts /3 00: 00: 00 ps Im Prozesskontrollblock jedes Prozesses befindet sich: Die Prozessidentifikation (PID) Der aktuelle Prozesszustand (rechnend, blockiert, bereit) Inhalt der Prozessorregister (Befehlszähler, Stack Pointer, usw.) Eine Liste mit zugeordneten Bereichen im Hauptspeicher Vom Prozess geöffnete Daten und zugeordnete Peripheriegeräte Verwaltungs-/Schedulinginformationen (Priorität, Laufzeit, usw.) TTY = Teletypewriter, PTS = Pseudo Terminal, CMD = Command
43 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesstabelle und Prozesskontrollblöcke (2/2) Der Prozesskontrollblock enthält die Informationen, die nötig sind, wenn ein Prozess vom Zustand rechnend in die Zustände bereit oder blockiert übergeht, um nach der Unterbrechung ein nahtloses Weiterlaufen des Prozesses zu garantieren Prozesstabelle... Prozesskontrollblöcke Prozessidentifikation (PID) Zustand Registerinhalte offene Dateien zugeordnete Peripherie Verwaltungsinformationen
44 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Zustandslisten bereit-liste Außer der Prozesstabelle und den Prozesskontrollblöcken führt das Betriebssystem verkettete Listen für die Prozesse mit den Zuständen bereit und blockiert Die Liste der Prozesse mit dem Zustand bereit enthält alle Prozesse, die unmittelbar ausgefüht werden können, aber auf die Zuteilung des Prozessors warten Die Prozesse in der bereit-liste können nach verschiedenen Kriterien, u.a. Prozessprioritäten oder Wartezeit, sortiert werden Die Priorität (anteilige Rechenleistung) hat unter Linux einen Wert von -20 bis +19 (in ganzzahligen Schritten). -20 ist die höchste Priorität und 19 die niedrigste Priorität. Die Standardpriorität ist 0. Normale Nutzer können Prioritäten von 0 bis 19 vergeben. Der Systemverwalter (root) darf auch negative Werte vergeben.
45 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Zustandslisten blockiert-liste Für die Prozesse im Zustand blockiert gibt es mehrere Listen Für jedes Ereignis existiert eine eigene Liste mit den Prozessen, die auf das Ereignis warten
46 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Konzeptionelle Prozessverwaltung Quelle: Eduard Glatz, Betriebssysteme, dpunkt Verlag, 2010
47 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Zustandsübergänge Für einen Zustandsübergang eines Prozesses wird der Prozesskontrollblock des betreffenden Prozesses aus der alten Zustandsliste entfernt und in die neue Zustandsliste eingefügt Für Prozesse im Zustand rechnend existiert keine eigene Liste Es gibt aber eine Variable des Betriebssystems, die auf den Prozesskontrollblock des aktuell rechnenden Prozesses zeigt Beim Übergang eines Prozesses in den Zustand rechnend werden die Registerinhalte des Prozessors aus dem Prozesskontrollblock geladen Beim Übergang aus dem Zustand rechnend in einen anderen Zustand werden die Registerinhalte des Prozessors in den Prozesskontrollblock gesichert (gerettet)
48 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesse erzeugen und löschen Einen Prozess erzeugen Freie Prozessidentifikation (PID) belegen Neuen Prozesskontrollblock anlegen Felder des Prozesskontrollblocks mit Anfangswerten füllen Notwendige Speicherbereiche reservieren und initialisieren Prozess in die Prozesstabelle einfügen Prozesskontrollblock in die bereit-zustandsliste einfügen Einen Prozess löschen Prozesskontrollblock aus der aktuellen Zustandsliste entfernen Prozess aus der Prozesstabelle löschen Vom Prozess belegte Betriebsmittel freigeben: belegte Speicherbereiche geöffnete Dateien reservierte Peripherie... Prozessidentifikation (PID) freigeben
49 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesse unter Linux/UNIX erzeugen mit fork (1/2) Der Systemaufruf fork() ist die einzige Möglichkeit, einen neuen Prozess zu erzeugen Ruft ein Prozess fork() auf, wird eine identische Kopie als neuer Prozess gestartet Der aufrufende Prozess heißt Vaterprozess oder Elternprozess Der neue Prozess heißt Kindprozess Der Kindprozess hat nach der Erzeugung den gleichen Programmcode Auch die Befehlszähler haben den gleichen Wert, verweisen also auf die gleiche Stelle im Programmcode Geöffnete Dateien und Speicherbereiche des Elternprozesses werden für den Kindprozess kopiert und stehen ihm nun getrennt zur Verfügung Die Speicherbereiche von Kindprozess und Elternprozess sind, wie bei allen anderen Prozessen auch, streng voneinander getrennt Beide besitzen ihren eigenen Prozesskontext
50 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesse unter Linux/UNIX erzeugen mit fork (2/2) Ruft ein Prozess fork() auf, wird eine exakte Kopie erzeugt Die Prozesse unterscheiden sich nur in den Rückgabewerten von fork() Im Elternprozess ist der Rückgabewert die PID des Kindprozesses Im Kindprozess gibt fork() immer 0 zurück Im Fehlerfall gibt fork() immer -1 zurück void main () { int rueckgabewert = fork (); if ( rueckgabewert < 0) { // fork war nicht erfolgreich // Speicher oder Prozesstabelle sind voll... } if ( rueckgabewert > 0) { // Hier arbeitet der Elternprozess... } if ( rueckgabewert == 0) { // Hier arbeitet der Kindprozess... } }
51 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozessbaum Durch das Erzeugen immer neuer Kindprozesse mit fork() entsteht ein beliebig tiefer Baum von Prozessen (= Prozesshierarchie) Das Kommando pstree gibt die laufenden Prozesse unter Linux/UNIX als Baum entsprechend ihrer Vater-/Sohn-Beziehungen aus Im Prozessbaum ist zu sehen: init, der Elternprozess aller Prozesse Die Vater-/Sohn-Beziehungen der Prozesse pstree init-+-xprt -acpid... -gnome-terminal-+-4*[bash] -bash---su---bash -bash-+-gv---gs -pstree -xterm---bash---xterm---bash -xterm---bash---xterm---bash---xterm---bash -xterm---bash -gnome-pty-helpe -{gnome-terminal} -4*[gv---gs]
52 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Informationen über Prozesse unter Linux/UNIX ps -af UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root Nov10? 00:00:00 init user Nov10? 00:00:05 xfce4-terminal user Nov10 pts/0 00:00:00 bash root Nov10 pts/3 00:00:00 su root Nov10 pts/3 00:00:00 bash user :45 pts/1 00:00:00 gv SYS_WS0708.ps user :45 pts/1 00:00:10 gs -sdevice=x11 user :28 pts/0 00:00:00 xterm user :28 pts/4 00:00:00 bash user :28 pts/4 00:00:00 xterm user :28 pts/5 00:00:00 bash user :29 pts/4 00:00:00 xterm user :29 pts/6 00:00:00 bash user :29 pts/4 00:00:00 xterm user :29 pts/7 00:00:00 bash user :31 pts/5 00:00:00 ps -AF RSS (Resident Set Size) = Belegter physischer Speicher (ohne Swap) SZ = Größe des Speicherabbilds (Core Image) zum Wiederherstellen TIME = Rechenzeit auf der CPU PSR = Prozessor, dem der Prozess zugewiesen ist
53 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Unabhängigkeit von Eltern- und Kindprozess (1/2) Dieses Beispiel zeigt, dass Eltern- und Kindprozess unabhängig voneinander arbeiten und unterschiedliche Speicherbereiche verwenden void main () { int i; if ( fork ()) // Hier arbeitet der Vaterprozess for ( i = 0; i < ; i ++) printf ("\n Vater : %i", i); else // Hier arbeitet der Kindprozess for ( i = 0; i < ; i ++) printf ("\n Kind : %i", i); }
54 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Unabhängigkeit von Eltern- und Kindprozess (2/2) Ausgabe Kind : 0 Kind : 1... Kind : Vater: 0... Vater: Kind : Kind : Vater: Vater: Kind : In der Ausgabe sind die Prozesswechsel zu sehen Anhand des Wertes der Schleifenvariablen i sieht man, dass der Kindprozess bei seiner Erzeugung eine eigene Kopie des Speicherbereichs für die Variablen bekommt Eltern- und Kindprozess sind vollständig unabhängig voneinander und das Ergebnis der Ausführung ist nicht reproduzierbar
55 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Die PID-Nummern von Eltern- und Kindprozess (1/3) In diese Beispiel wird ein Kindprozess erzeugt Kindprozess und Vaterprozess geben beide ihre eigene PID und die PID des Vaters aus void main () { int pid_des_kindes ; pid_des_kindes = fork (); // Es kam zu einem Fehler --> Programmabbruch if ( pid_des_kindes < 0) { perror ("\n Es kam bei fork () zu einem Fehler!"); exit (1); } // Vaterprozess if ( pid_des_kindes > 0) { printf ("\n Vater : Die PID dieses Prozesses ist : %i", getpid ()); printf ("\n Vater : Die PID des Vaters ist %i", getppid ()); } // Kindprozess if ( pid_des_kindes == 0) { printf ("\n Kind : Die PID dieses Prozesses ist : %i", getpid ()); printf ("\n Kind : Die PID des Vaters ist %i", getppid ()) } }
56 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Die PID-Nummern von Eltern- und Kindprozess (2/3) Die Ausgabe ist üblicherweise mit dieser vergleichbar: Kind: Die PID dieses Prozesses ist: 6438 Kind: Die PID des Vaters ist 6437 Vater: Die PID dieses Prozesses ist: 6437 Vater: Die PID des Vaters ist 4972 Gelegentlich kann man folgendes Ereignis beobachten: Vater: Die PID dieses Prozesses ist: 7122 Vater: Die PID des Vaters ist 4972 Kind: Die PID dieses Prozesses ist: 7123 Kind: Die PID des Vaters ist 1 Hier wurde der Elternprozess vor dem Kind-Prozess beendet und darum hat init den Kind-Prozess adoptiert
57 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Die PID-Nummern von Eltern- und Kindprozess (3/3) Die Funktion getppid() liefert die PID des Elternprozesses zurück Wird der Elternprozess vor dem Kind beendet, kann getppid() die PID des Elternprozesses nicht mehr zurückgeben Der erste Prozess unter Linux/UNIX ist init Er hat die PID 1 Alle laufenden Prozesse stammen von init ab Er ist der Vater aller Prozesse Wird der Elternprozess eines Prozesses beendet, bekommt er init als neuen Elternprozess zugeordnet Elternlose Prozesse werden im Zweifelsfall immer von init adoptiert Das ist nur logisch, da eh alle Prozesse von init abstammen
58 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Prozesse ersetzen mit exec Der Systemaufruf exec() ersetzt einen Prozess durch einen anderen Es findet eine Verkettung statt Im Gegensatz zu fork(), wird bei exec() der aufrufende Prozess beendet und ein neuer Prozess gestartet Der neue Prozess erbt sogar die PID des aufrufenden Prozesses Will man aus einem Prozess heraus ein Programm starten, ist es nötig, zuerst mit fork() einen neuen Prozess zu erzeugen und diesen mit exec() zu ersetzen Wie ist es möglich, dass in einer Shell ein Programm ausgeführt wird? Die Shell erzeugt mit fork() eine identische Kopie von sich selbst Im neuen Prozess wird mit exec() das eigentliche Programm gestartet Wird vor einem Aufruf von exec() kein neuer Prozess mit fork() erzeugt, geht der Elternprozess verloren
59 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Beispiel zum Systemaufruf exec ps -f UID PID PPID C STIME TTY TIME CMD user May18 pts/2 00:00:00 bash user :26 pts/2 00:00:00 ps -f user@server:~$ bash user@server:~$ ps -f UID PID PPID C STIME TTY TIME CMD user May18 pts/2 00:00:00 bash user :26 pts/2 00:00:00 bash user :26 pts/2 00:00:00 ps -f user@server:~$ exec ps -f UID PID PPID C STIME TTY TIME CMD user May18 pts/2 00:00:00 bash user :26 pts/2 00:00:00 ps -f user@server:~$ ps -f UID PID PPID C STIME TTY TIME CMD user May18 pts/2 00:00:00 bash user :27 pts/2 00:00:00 ps -f
60 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Ein weiteres Beispiel zu exec # include <stdio.h> # include < unistd.h> int main () { int pid ; pid = fork (); // Wenn die PID!=0 --> Elternprozess if ( pid ) { printf ("... Elternprozess...\ n"); printf ("[ Eltern ] Die PID des Elternprozesses ist %d\n", getpid ()); printf ("[ Eltern ] Die PID des Kindprozesses ist %d\n", pid ); } // Wenn die PID =0 --> Kindprozess else { printf ("... Kindprozess...\ n"); printf ("[ Kind ] Die PID des Kindprozesses ist %d\n", getpid ()); printf ("[ Kind ] Die PID des Elternprozesses ist %d\n", getppid ()); } // Aktuelles Programm durch " date " ersetzen execl ("/ bin / date ", "-u", NULL ); } printf ("[%d ] Programmende \n", getpid ()); return 0;
61 Erklärung zu dem exec Beispiel Alternative Programmpfade werden mit fork() und exec() beschritten Für den Elternprozess ist pid 0 Aus diesem Grund wird der if-teil des if-else-konstrukts ausgeführt Für den Kindprozess ist pid = 0 Aus diesem Grund wird der else-teil des if-else-konstrukts ausgeführt Der Kindprozess wird nach der Ausgabe seiner PID mit getpid() und der PID seines Elternprozesses mit getppid() durch das Programm date ersetzt Der Systemruf exec() existiert nicht selbst als C-Funktion Es existieren mehrere verschiedene Varianten der Funktion exec() Eine dieser Varianten ist execl() user@server:~$ exec-beispiel...kindprozess... [Kind] Die PID des Kindprozesses ist [Kind] Die PID des Elternprozesses ist Do 26. Apr 00:11:08 CEST Elternprozess... [Eltern] Die PID des Elternprozesses ist [Eltern] Die PID des Kindprozesses ist [28729 ]Programmende Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62
62 Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS /62 Drei Möglichkeiten, einen neuen Prozess zu erzeugen Prozessvergabelung (forking): Ein laufender Prozess startet mit fork() einen neuen, identischen Prozess und läuft danach selbst weiter Prozessverkettung (chaining): Ein laufender Prozess startet mit exec() einen neuen Prozess und beendet (terminiert) sich damit selbst Prozesserzeugung (creation): Ein laufender Prozess startet mit fork() einen neuen, identischen Prozess, der sich selbst mit exec() durch einen neuen Prozess ersetzt
Systemsoftware (SYS)
5.Vorlesung Systemsoftware (SYS) Christian Baun [email protected] Hochschule Mannheim Fakultät für Informatik Institut für Robotik 2.11.2007 Wiederholung vom letzten Mal Redundant Array of independent
Betriebssysteme (BTS)
5.Vorlesung Betriebssysteme (BTS) Christian Baun [email protected] Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 30.3.2007 Wiederholung vom letzten Mal Redundant Array of
7. Foliensatz Betriebssysteme
Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 1/51 7. Foliensatz Betriebssysteme Prof. Dr. Christian Baun Frankfurt University of Applied Sciences
5.Vorlesung Betriebssysteme Hochschule Mannheim
Christian Baun 5.Vorlesung Betriebssysteme Hochschule Mannheim SS2011 1/41 5.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun Karlsruher Institut für Technologie Steinbuch Centre for Computing
7.Vorlesung Grundlagen der Informatik
Dr. Christian Baun 7.Vorlesung Grundlagen der Informatik Hochschule Darmstadt WS1112 1/44 7.Vorlesung Grundlagen der Informatik Dr. Christian Baun Hochschule Darmstadt Fachbereich Informatik [email protected]
6.Vorlesung Betriebssysteme Hochschule Mannheim
Christian Baun 6.Vorlesung Betriebssysteme Hochschule Mannheim SS2011 1/40 6.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun Karlsruher Institut für Technologie Steinbuch Centre for Computing
Lösung von Übungsblatt 7
Lösung von Übungsblatt 7 Aufgabe 1 (Systemaufrufe) 1. x86-kompatible CPUs enthalten 4 Privilegienstufen ( Ringe ) für Prozesse. Markieren Sie in der Abbildung (deutlich erkennbar!) den Kernelmodus und
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard
Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch
Klausur Betriebssysteme
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme 5.2.2016 Die Dauer der Klausur beträgt 90 Minuten. Es sind keine Unterlagen und Hilfsmittel erlaubt. Bitte bearbeiten Sie die Aufgaben soweit wie
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
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
Was machen wir heute? Betriebssysteme Tutorium 3. Organisatorisches. Prozesskontrollblock (PCB) Programmieraufgaben. Frage 3.1.a
Was machen wir heute? Betriebssysteme Tutorium 3 Philipp Kirchhofer [email protected] http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1
Systemnahe 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
Teil 3: Konzepte von Betriebssystemen
Teil 3: Konzepte von Betriebssystemen Inhalt: Einführung Prozesse Speicherverwaltung Virtueller Speicher 1 Definition eines Betriebssystems Was ist ein Betriebssystem? einfache Definition: Als Betriebssystem
Technische Informatik 1
Technische Informatik 1 7 Prozesse und Threads Lothar Thiele Computer Engineering and Networks Laboratory Betriebssystem 7 2 7 3 Betriebssystem Anwendung Anwendung Anwendung Systemaufruf (syscall) Betriebssystem
U7 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
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)
7.Vorlesung Betriebssysteme Hochschule Mannheim
Christian Baun 7.Vorlesung Betriebssysteme Hochschule Mannheim SS2011 1/70 7.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun Karlsruher Institut für Technologie Steinbuch Centre for Computing
Klausur 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
Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
Prozesse, Logs und Systemverwaltung
Prozesse, Logs und Systemverwaltung Linux-Kurs der Unix-AG Zinching Dang 31. Januar 2018 Übersicht Wiederholung & Vertiefung: Benutzer & Gruppen Prozesse Log-Dateien Befehle & Optionen Zusammenfassung
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
Prozesse, Logs und Systemverwaltung
Prozesse, Logs und Systemverwaltung Linux-Kurs der Unix-AG Zinching Dang 31. Januar 2017 Übersicht Wiederholung & Vertiefung: Benutzer & Gruppen Prozesse Log-Dateien Befehle & Optionen Zusammenfassung
(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?
SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 2 2014-04-28 bis 2014-05-02 Aufgabe 1: Unterbrechungen (a) Wie unterscheiden sich synchrone
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
Abschlussklausur. Betriebssysteme. Bewertung: 22. November Name: Vorname: Matrikelnummer:
Abschlussklausur Betriebssysteme 22. November 2016 Name: Vorname: Matrikelnummer: Mit meiner Unterschrift bestätige ich, dass ich die Klausur selbständig bearbeite und dass ich mich gesund und prüfungsfähig
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
Einführung. Anwendung. logischer Adreßraum. Kontrollfluß (Thread) = CPU führt Instruktionen aus. Was charakterisiert einen Kontrollfluß?
Kontrollflüsse Einführung 1 Motivation Kontrollfluß Anwendung logischer Adreßraum Kontrollfluß (Thread) = führt Instruktionen aus Was charakterisiert einen Kontrollfluß? Programmzähler Registerinhalte
Prozesse. Netzwerk - Programmierung. Alexander Sczyrba Madis Rumming
Netzwerk - Programmierung Prozesse Alexander Sczyrba [email protected] Madis Rumming [email protected] Übersicht Prozesse fork() Parents und Children system() und exec()
Systemsoftware (SYS) Fakultät für Informatik WS 2007/2008 Christian Baun. Übungsklausur
Hochschule Mannheim Systemsoftware (SYS) Fakultät für Informatik WS 2007/2008 Christian Baun Übungsklausur Aufgabe 1: Definieren Sie den Begriff der Systemsoftware. Nennen Sie die Aufgaben und Komponenten
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
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?...................
Musterlösung der Abschlussklausur Betriebssysteme
Musterlösung der Abschlussklausur Betriebssysteme 22. November 2016 Name: Vorname: Matrikelnummer: Mit meiner Unterschrift bestätige ich, dass ich die Klausur selbständig bearbeite und das ich mich gesund
Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft
Prozeß: drei häufigste Zustände Prozeß: anatomische Betrachtung jeder Prozeß verfügt über seinen eigenen Adreßraum Sourcecode enthält Anweisungen und Variablen Compiler überträgt in Assembler bzw. Binärcode
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
Netzwerk-Programmierung. Prozesse. Alexander Sczyrba Michael Beckstette.
Netzwerk-Programmierung Prozesse Alexander Sczyrba Michael Beckstette {asczyrba,[email protected] 1 Übersicht Prozesse fork() Parents und Childs system() und exec() 2 Prozesse moderne Betriebssysteme
Fakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit
Kapitel 3 Nebenläufigkeit 136 Inhalt Motivation Unterbrechungen (Interrupts) (Software-) Prozesse Threads Interprozesskommunikation (IPC) 137 Links: Literatur Maurice Herlihy, Nir Shavit, The Art of Multiprocessor
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
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
Tafelübung zu BS 2. Threadsynchronisation
Tafelübung zu BS 2. Threadsynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/~os/
Klausur 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
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
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
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,
Geräteverwaltung: Einführung
Geräteverwaltung: Einführung Die Ziele einer Geräteverwaltung sind: Einfache Softwareschnittstelle Gleiche Software Schnittstellen für alle Geräte eines Gerätetyps z.b.: unabhängig vom Soundkartenhersteller
Prozesse und Threads. Prozess. Trace. Einfachstes Prozessmodell. Traces
Prozesse und s Begriffe und Konzepte Prozesszustände Kontrollstrukturen des BS Prozesse BS s Peter Puschner 1 Vorlesung Betriebssysteme, Prozesse; WS 05/06 2 Prozess Animated Spirit of a program ausführbares
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,
Lösung von Übungsblatt 8
Betriebssysteme (SS201) Lösung von Übungsblatt 8 Aufgabe 1 (Unterbrechungen) 1. Was sind Interrupts? Interrupts sind externe Unterbrechungen. Sie werden durch Ereignisse außerhalb des zu unterbrechenden
Übung 1 - Betriebssysteme I
Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits
Ein- und Ausgabegeräte
Blockorientiert Jeder Block kann unabhängig gelesen und geschrieben werden. Festplatten, CD-ROMs, USB-Sticks, etc. Zeichenorientiert Keine Struktur, nicht adressierbar, Daten werden als Folge von Zeichen
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in
Überlegungen beim Entwurf eines Betriebssystems
Überlegungen beim Entwurf eines Betriebssystems Schnelligkeit Schutz und Sicherheit Korrektheit Wartbarkeit Kommerzielle Faktoren Standards und offene Systeme Schnelligkeit Es ist schwierig, Kenngrößen
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
Zusammenfassung 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
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
4. Speicherverwaltung
Tafelübung zu BSRvS1 4. Speicherverwaltung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
Lösungsvorschlag zur 10. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 10. Übung 1 Präsenzübungen 1.1 Wissensfragen Versuchen Sie diese Aufgabe erst
Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a
Was machen wir heute? Betriebssysteme Tutorium 10 Philipp Kirchhofer [email protected] http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1
G 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
Grundlagen der Informatik für Ingenieure I. 5. Prozessverwaltung - Einführung
Background: 5. Prozessverwaltung - Einführung 5.1 Wichtige Komponenten eines Prozessors 5.2 Betriebsstrategien von Rechensystemen 5.2.1 Aktivitätsträger, Prozesse, Threads 5.2.1.1 Prozesszustände 5.2.1.2
Prozesse: Prozesskontrollblock, -zustände, -umschaltung
Prozesse: Prozesskontrollblock, -zustände, -umschaltung Vorweg sollte geklärt werden, was Prozess bedeutet, wenn man im Kontext über Betriebssystemen davon redet Ein Prozess ist ein Programm während der
1 pulsierender Speicher
1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die
Übungsblatt 1. (Stapel- bzw. Batchbetrieb)
Übungsblatt 1 Die Übungsblätter enthalten theoretische und praktische Übungen. Für die Bearbeitung der praktischen Übungen benötigen Sie eine UNIX-Shell. Weit verbreite ist die Bash [1]. Das Apple Mac
Leichtgewichtsprozesse
Leichtgewichtsprozesse häufiger Prozeßwechsel stellt in einem Betriebssystem eine hohe Belastung dar; auch erfordert die Generierung eines neuen Prozesses viele System-Resourcen in vielen Anwendungen werden
Übung zu Grundlagen der Betriebssysteme. 6. Übung
Übung zu Grundlagen der Betriebssysteme 6. Übung 20.11.2012 Prozess & Programm Erläutern Sie den Begriff Prozess und unterscheiden Sie die Begriffe Prozess und Programm voneinander. Verwaltet ein in Ausführung
Prozesse und Logs Linux-Kurs der Unix-AG
Prozesse und Logs Linux-Kurs der Unix-AG Andreas Teuchert 27./28. Juni 2012 Prozesse unter Linux gestartete Programme laufen unter Linux als Prozesse jeder Prozess hat eine eindeutige Prozess-ID (PID)
