7. Foliensatz Betriebssysteme
|
|
|
- Hartmut Feld
- vor 8 Jahren
- Abrufe
Transkript
1 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 ( : Fachhochschule Frankfurt am Main) Fachbereich Informatik und Ingenieurwissenschaften
2 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 2/51 Lernziele dieses Foliensatzes Am Ende dieses Foliensatzes kennen/verstehen Sie... Was Systemaufrufe (System Calls) sind und wie sie funktionieren Was ein Prozess aus Sicht des Betriebssystems ist Welche Informationen der Prozesskontext im Detail enthält Benutzerkontext Hardwarekontext Systemkontext die Unterschiedlichen Prozesszustände anhand verschiedener Zustands-Prozessmodelle wie das Prozessmanagement mit Prozesstabellen, Prozesskontrollblöcken und Zustandslisten im Detail funktioniert welche Schritte Betriebssysteme beim Erstellen von Prozessen (via fork oder exec) oder Löschen von Prozessen durchführen was Forkbomben sind die Struktur von UNIX-Prozessen im Speicher Übungsblatt 7 wiederholt die für die Lernziele relevanten Inhalte dieses Foliensatzes
3 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 3/51 Benutzermodus und Kernelmodus x86-kompatible CPUs enthalten 4 Privilegienstufen Ziel: Stabilität und Sicherheit verbessern Jeder Prozess wird in einem Ring ausgeführt und kann sich nicht selbstständig aus diesem befreien Realisierung der Privilegienstufen Das Register CPL (Current Privilege Level) speichert die aktuelle Privilegienstufe Quelle: Intel Programmer s Reference Manual In Ring 0 (= Kernelmodus) läuft der Betriebssystemkern Hier haben Prozesse vollen Zugriff auf die Hardware Der Kern kann auch physischen Speicher (= Real Mode) adressieren In Ring 3 (= Benutzermodus) laufen die Anwendungen Hier arbeiten Prozesse nur mit virtuellem Speicher Moderne Betriebssysteme verwenden nur 2 Privilegienstufen (Ringe) Grund: Einige Hardware-Architekturen (z.b: Alpha, PowerPC, MIPS) enthalten nur 2 Stufen
4 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 4/51 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 Kernelmodus auslöst (= Moduswechsel) Moduswechsel Ein Prozess gibt die Kontrolle über die CPU an den Kernel ab und ist 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 Die Leistung eines Systemaufrufs wird im Kernel erbracht Also außerhalb des Adressraums des aufrufenden Prozesses
5 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 5/51 Systemaufrufe (2/2) Systemaufrufe (System Calls) sind die Schnittstelle, die das Betriebssystem den Prozessen im Benutzermodus zur Verfügung stellt Systemaufrufe erlauben den Prozessen im Benutzermodus u.a. Prozesse und Dateien zu erzeugen und zu verwalten und auf Hardware zuzugreifen Einfach gesagt... Ein Systemaufruf ist eine Anfrage eines Prozesses im Benutzermodus an den Kernel, um einen Dienst des Kernels zu nutzen Vergleich zwischen Systemaufrufen und Interrupts Interrupts (= Foliensatz 3) sind Unterbrechungen, die Ereignisse außerhalb von Prozessen im Benutzermodus auslösen
6 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 6/51 Ein Beispiel für einen Systemaufruf: ioctl() Mit ioctl() setzen Linux-Programme gerätespezifische Befehle ab Er ermöglicht Prozessen die Kommunikation mit und Steuerung von: Zeichenorientierten Geräten (Maus, Tastatur, Drucker, Terminals,... ) Blockorientierten Geräten (SSD/HDD, CD-/DVD-Laufwerk,... ) Syntax: ioctl (Filedeskriptor, Aktionsanforderung, Integer-Wert oder Zeiger auf Daten); Einige typische Einsatzszenarien von ioctl(): Diskettenspur formatieren Modem oder Soundkarte initialisieren CD auswerfen Gute Übersicht über die Systemaufrufe unter Linux LINUX System Call Quick Reference von Jialong He Gute Übersicht über die Systemaufrufe unter Windows Windows X86 System Call Table (NT/2000/XP/2003/Vista/2008/7/8) von Mateusz Jurczyk
7 Systemaufrufe und Bibliotheken Bildquelle: Wikipedia Direkt mit Systemaufrufen arbeiten ist unsicher und schlecht portabel Moderne Betriebssysteme enthalten eine Bibliothek, 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 Benutzerprozesse direkt mit dem Kernel kommunizieren Erhöhte Sicherheit, da die Benutzerprozesse nicht selbst den Wechsel in den Kernelmodus durchführen können Beispiele für solche Bibliotheken C Standard Library (UNIX), GNU C-Bibliothek glibc (Linux), C Library Implementationen (BSD), Native API ntdll.dll (Windows) Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 7/51
8 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 8/51 Schritt für Schritt (1/4) read(fd, buffer, nbytes); In Schritt 1-3 legt der Benutzerprozess die Parameter auf den Stack In Schritt 4 ruft der Benutzerprozess die Bibliotheksfunktion für read (= nbytes aus der Datei fd lesen und in buffer speichern) auf Die Bibliotheksfunktion speichert in Schritt 5 die Nummer des Systemaufrufs im Accumulator Register EAX Die Parameter das Systemaufrufs speichert die Bibliotheksfunktion in den Registern EBX, ECX und EDX Quelle dieses Beispiels Moderne Betriebssysteme, Andrew S. Tanenbaum, 3.Auflage, Pearson (2009), S.84-89
9 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 9/51 Schritt für Schritt (2/4) read(fd, buffer, nbytes); In Schritt 6 wird der Softwareinterrupt (Exception) 0x80 (dezimal: 128) ausgelöst, um vom Benutzermodus in den Kernelmodus zu wechseln Der Softwareinterrupt unterbricht die Programmausführung im Benutzermodus und erzwingt das Ausführen eines Exception-Handlers im Kernelmodus Der Kernel verwaltet eine Liste (System Call Table) mit allen Systemaufrufen Jedem Systemaufruf ist dort eine eindeutige Nummer und eine Kernel-interne Funktion zugeordnet
10 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Schritt für Schritt (3/4) read(fd, buffer, nbytes); Der aufgerufene Exception-Handler ist eine Funktion im Kernel, die das Register EAX ausliest Die Exception-Handler-Funktion ruft 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
11 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Schritt für Schritt (4/4) read(fd, buffer, nbytes); In Schritt 9 gibt der Exception-Handler die Kontrolle an die Bibliothek zurück, die den Softwareinterrupt auslöste Diese Funktion kehrt danach in Schritt 10 zum Benutzerprozess so zurück, wie es auch eine normale Funktion getan hätte Um den Systemaufruf abzuschließen, muss der Benutzerprozess in Schritt 11 genau wie nach jedem Funktionsaufruf den Stack aufräumen Der Benutzerprozess kann jetzt weiterarbeiten
12 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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 1 # include < syscall.h> 2 # include < unistd.h> 3 # include <stdio.h> 4 # include <sys / types.h> 5 6 int main ( void ) { 7 unsigned int ID1, ID2 ; 8 9 // Systemaufruf 10 ID1 = syscall ( SYS_getpid ); 11 printf (" Ergebnis des Systemaufrufs : %d\n", ID1 ); // Von der glibc aufgerufener Systemaufruf 14 ID2 = getpid (); 15 printf (" Ergebnis der Bibliotheksfunktion : %d\n", ID2 ); return (0) ; 18 } $ gcc SysCallBeispiel.c -o SysCallBeispiel $./SysCallBeispiel Ergebnis des Systemaufrufs: 3452 Ergebnis der Bibliotheksfunktion: 3452
13 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Auswahl an Systemaufrufen Prozessverwaltung Dateiverwaltung Verzeichnisverwaltung 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 Dateipositionszeiger positionieren stat Status einer Datei ermitteln mkdir Neues Verzeichnis erzeugen rmdir Leeres Verzeichnis entfernen link Neuen Verzeichniseinträg (Link) auf eine Datei erzeugen unlink Verzeichniseintrag löschen mount Dateisystem in die hierarchische Verzeichnisstruktur einhängen umount Eingehängtes Dateisystem aushängen chdir Aktuelles Verzeichnis wechseln chmod Dateirechte für eine Datei ändern kill Signal an einen Prozess schicken time Zeit seit dem 1. Januar 1970
14 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Systemaufrufe unter Linux Die Liste mit den Namen der Systemaufrufe im Linux-Kernel... befindet sich im Quelltext von Kernel 2.6.x in der Datei: arch/x86/kernel/syscall_table_32.s befindet sich im Quelltext von Kernel 3.x und 4.x in diesen Dateien: arch/x86/syscalls/syscall_64.tbl arch/x86/syscalls/syscall_32.tbl arch/x86/syscalls/syscall_32.tbl... 1 i386 exit sys_exit 2 i386 fork sys_fork 3 i386 read sys_read 4 i386 write sys_write 5 i386 open sys_open 6 i386 close sys_close... Anleitungen, wie man eigene Systemaufrufe für Kernel 2.6.x realisiert
15 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozess und Prozesskontext Wir wissen bereits... Ein Prozess (lat. procedere = voranschreiten) ist eine Instanz eines Programms, das ausgeführt wird Prozesse sind dynamische Objekte und repräsentieren sequentielle Aktivitäten im Computer Auf Computern sind immer mehrere Prozesse in Ausführung Die CPU wird im raschen Wechsel zwischen den Prozessen hin- und hergeschaltet Ein Prozess umfasst außer dem Quelltext noch seinen Kontext 3 Arten von Kontextinformationen speichert das Betriebssystem: Benutzerkontext Daten im zugewiesenen Adressraum (virtuellen Speicher) = Foliensatz 5 Hardwarekontext Register in der CPU Systemkontext Informationen, die das Betriebssystem über einen Prozess speichert Die Informationen im Hardwarekontext und Systemkontext verwaltet das Betriebssystem im Prozesskontrollblock
16 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Hardwarekontext Der Hardwarekontext umfasst die Inhalte der Register in der CPU zum Zeitpunkt der Prozess-Ausführung Register, deren Inhalt bei einem Prozesswechsel gesichert werden muss: Befehlszähler (Program Counter, Instruction Pointer) enthält die Speicheradresse des nächsten auszuführenden Befehls Stackpointer enthält die Speicheradresse am Ende des Stacks Basepointer zeigt auf eine Adresse im Stack Befehlsregister (Instruction Register) speichert den aktuellen Befehl Akkumulator speichert Operanden für die ALU und deren Resultate Page-table base Register Adresse wo die Seitentabelle des laufenden Prozesses anfängt Page-table length Register Länge der Seitentabelle des laufenden Prozesses Einige dieser Register wurden in Foliensatz 3 und Foliensatz 5 vorgestellt
17 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Systemkontext Der Systemkontext sind die Informationen, die das Betriebssystem über einen Prozess speichert Beispiele: Eintrag in der Prozesstabelle Prozessnummer (PID) Prozesszustand Information über Eltern- oder Kindprozesse Priorität Identifier Zugriffsrechte auf Ressourcen Quotas Zur Verfügung stehende Menge der einzelnen Ressourcen Laufzeit Geöffnete Dateien Zugeordnete Geräte
18 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozesstabelle und Prozesskontrollblöcke Jeder Prozess hat seinen eigenen Prozesskontext, der von den Kontexten anderer Prozesse unabhängig ist
19 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozesswechsel Bildquelle: cs471w/spring10/lectures/processes.htm Beim Prozesswechsel wird der Kontext (= Inhalt der CPU-Register) im Prozesskontrollblock gespeichert Erhält ein Prozess Zugriff auf die CPU, wird sein Kontext mit dem Inhalt des Prozesskontrollblocks wiederhergestellt Jeder Prozess ist zu jedem Zeitpunkt in einem bestimmten Zustand = Zustandsdiagramm der Prozesse
20 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozesszustände Wir wissen bereits... Jeder Prozess befindet sich zu jedem Zeitpunkt in einem Zustand Wie viele unterschiedliche Zustände es gibt, hängt vom Zustands-Prozessmodell des Betriebssystems ab Frage Wie viele Prozesszustände braucht ein Prozessmodell mindestens?
21 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 2-Zustands-Prozessmodell Prinzipiell genügen 2 Prozesszustände rechnend: Einem Prozess wurde die CPU zugeteilt untätig (idle): Die Prozesse warten auf die Zuteilung der CPU
22 2-Zustands-Prozessmodell (Implementierung) Die Prozesse im Zustand untätig müssen in einer Warteschlange gespeichert werden, in der sie auf ihre Ausführung warten Die Liste wird nach Prozesspriorität oder Wartezeit sortiert 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. Dieses Modell zeigt auch die Arbeitsweise des Dispatchers Aufgabe des Dispatchers ist die Umsetzung der Zustandsübergänge Die Ausführungsreihenfolge der Prozesse legt der Scheduler fest, der einen Scheduling-Algorithmus (siehe Foliensatz 8) verwendet Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51
23 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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: 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 untätigen Prozesse werden in 2 Gruppen unterschieden Prozesse die bereit (ready) sind Prozesse die blockiert (blocked) sind = 3-Zustands-Prozessmodell
24 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 3-Zustands-Prozessmodell (1/2) Jeder Prozess befindet sich in einem der folgenden Zustände: rechnend (running): Der Prozess hat 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 auf das Eintreten eines Ereignisses oder die Erfüllung einer Bedingung Dabei kann es sich z.b. um eine Nachricht eines anderen Prozesses oder eines Eingabe-/Ausgabegeräts oder um das Eintreten eines Synchronisationsereignisses handeln
25 3-Zustands-Prozessmodell (2/2) add: Prozesserzeugung und Einordnung in die Liste der Prozesse im Zustand bereit retire: Der rechnende Prozess terminiert Belegte Ressourcen werden freigegeben dispatch: Die CPU wird einem Prozess im Zustand bereit zugeteilt, der nun in den Zustand rechnend wechselt block: Der rechnende Prozess wartet auf eine Nachricht oder ein Synchronisationsereignis und wechselt in den Zustand blockiert timeout: Dem rechnenden Prozess wird wegen einer Entscheidung des Schedulers die CPU entzogen und er wechselt in den Zustand bereit ready: Der Grund, warum der der Prozess blockiert ist, existiert nicht mehr und der Prozess wechselt in den Zustand bereit Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51
26 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 3-Zustands-Prozessmodell Realisierung (1/2) Eine Implementierung könnte auf 2 Warteschlangen basieren Warteschlange für Prozesse im Zustand bereit Warteschlange für Prozesse im Zustand blockiert Mehreren Warteschlangen für die blockierten Prozesse sind sinnvoll
27 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 3-Zustands-Prozessmodell Realisierung (2/2) Mehrere Warteschlangen für blockierte Prozesse So macht es Linux in der Praxis Beim Zustandsübergang wird der Prozesskontrollblock des Prozesses aus der alten Zustandsliste entfernt und in die neue Zustandsliste eingefügt Für Prozesse im Zustand rechnend existiert keine eigene Liste
28 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 5-Zustands-Prozessmodell Es ist empfehlenswert, das 3-Zustands-Prozessmodell um 2 weitere Prozesszustände zu erweitern neu (new): Der Prozess (Prozesskontrollblock) ist erzeugt, wurde aber vom Betriebssystem noch nicht in die Warteschlange für Prozesse im Zustand bereit eingefügt exit: Der Prozess ist fertig abgearbeitet oder wurde beendet, aber sein Prozesskontrollblock existiert aus verschiedenen Gründen noch Grund für die Existenz der Prozesszustände neu und exit: Auf manchen Systemen ist die Anzahl der ausführbaren Prozesse limitiert, um Speicher zu sparen und den Grad des Mehrprogrammbetriebs festzulegen
29 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 6-Zustands-Prozessmodell Ist nicht genügend physischer Hauptspeicher für alle Prozesse verfügbar, müssen Teile von Prozessen ausgelagert werden = Swapping Das Betriebssystem lagert Prozesse aus, die im Zustand blockiert sind Dadurch steht mehr Hauptspeicher den Prozessen in den Zuständen rechnend und bereit zur Verfügung Es macht also Sinn, das 5-Zustands- Prozessmodell um den Prozesszustand suspendiert (suspended) zu erweitern
30 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 7-Zustands-Prozessmodell Wurde ein Prozess suspendiert, ist es besser, den frei gewordenen Platz im Hauptspeicher zu verwenden, um einen ausgelagerten Prozess zu aktivieren, als ihn einem neuen Prozess zuzuweisen Das ist nur dann sinnvoll, wenn der aktivierte Prozess nicht mehr blockiert ist Im 6-Zustands-Prozessmodell fehlt die Möglichkeit, die ausgelagerten Prozesse zu unterscheiden in: blockierte ausgelagerte Prozesse nicht-blockierte ausgelagerte Prozesse
31 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozessmodell von Linux/UNIX (etwas vereinfacht) 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 Ein Zombie-Prozess ist fertig abgearbeitet (via Systemaufruf exit), aber sein Eintrag in der Prozesstabelle existiert so lange, bis der Elternprozess den Rückgabewert (via Systemaufruf wait) abgefragt hat
32 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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 Zeile im Programmcode Geöffnete Dateien und Speicherbereiche des Elternprozesses werden für den Kindprozess kopiert und sind unabhängig vom Elternprozess Kindprozess und Elternprozess besitzen ihren eigenen Prozesskontext
33 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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() 1 # include <stdio.h> 2 # include < unistd.h> 3 # include < stdlib.h> 4 5 void main () { 6 int rueckgabewert = fork (); 7 8 if ( rueckgabewert < 0) { 9 // Hat fork () den Rü ckgabewert -1, ist ein Fehler aufgetreten. 10 // Speicher oder Prozesstabelle sind voll } 13 if ( rueckgabewert > 0) { 14 // Hat fork () einen positiven Rückgabewert, sind wir im Elternprozess. 15 // Der Rü ckgabewert ist die PID des neu erzeugten Kindprozesses } 18 if ( rueckgabewert == 0) { 19 // Hat fork () den Rü ckgabewert 0, sind wir im Kindprozess } 22 }
34 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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 $ 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]
35 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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) in kb SZ = Größe des Speicherabbilds (Core Image) des Prozesses. Das beinhaltet Textsegment, Heap und Stack TIME = Rechenzeit auf der CPU PSR = Dem Prozess zugewiese CPU
36 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Unabhängigkeit von Eltern- und Kindprozess Das Beispiel zeigt, dass Eltern- und Kindprozess unabhängig voneinander arbeiten und unterschiedliche Speicherbereiche verwenden 1 # include <stdio.h> 2 # include < unistd.h> 3 # include < stdlib.h> 4 5 void main () { 6 int i; 7 if ( fork ()) 8 // Hier arbeitet der Vaterprozess 9 for (i = 0; i < ; i ++) 10 printf ("\n Vater : %i", i); 11 else 12 // Hier arbeitet der Kindprozess 13 for (i = 0; i < ; i ++) 14 printf ("\n Kind : %i", i); 15 } Kind : 0 Kind : 1... Kind : Vater : 0... Vater : Kind : Kind : Vater : Vater : Kind : In der Ausgabe sind die Prozesswechsel zu sehen Der Wert der Schleifenvariablen i beweist, dass Eltern- und Kindprozess unabhängig voneinander sind Das Ergebnis der Ausführung ist nicht reproduzierbar
37 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Die PID-Nummern von Eltern- und Kindprozess (1/2) 1 # include <stdio.h> 2 # include < unistd.h> 3 # include < stdlib.h> 4 5 void main () { 6 int pid_des_kindes ; 7 8 pid_des_kindes = fork (); 9 10 // Es kam zu einem Fehler --> Programmabbruch 11 if ( pid_des_kindes < 0) { 12 perror ("\n Es kam bei fork () zu einem Fehler!"); 13 exit (1) ; 14 } // Vaterprozess 17 if ( pid_des_kindes > 0) { 18 printf ("\n Vater : PID : %i", getpid ()); 19 printf ("\n Vater : PPID : %i", getppid ()); 20 } // Kindprozess 23 if ( pid_des_kindes == 0) { 24 printf ("\n Kind : PID : %i", getpid ()); 25 printf ("\n Kind : PPID : %i", getppid ()); 26 } 27 } Das Beispiel erzeugt einen Kindprozess Kindprozess und Vaterprozess geben beide aus: Eigene PID PID des Vaters (PPID)
38 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Die PID-Nummern von Eltern- und Kindprozess (2/2) Die Ausgabe ist üblicherweise mit dieser vergleichbar: Vater : PID : Vater : PPID : 3904 Kind : PID : Kind : PPID : Gelegentlich kann man folgendes Ereignis beobachten: Vater : PID : Vater : PPID : 3904 Kind : PID : Kind : PPID : 1 Der Elternprozess wurde vor dem Kind-Prozess beendet Wird der Elternprozess vor dem Kindprozess beendet, bekommt er init als neuen Elternprozess zugeordnet Elternlose Prozesse werden immer von init adoptiert init (PID 1) ist der erste Prozess unter Linux/UNIX Alle laufenden Prozesse stammen von init ab = init = Vater aller Prozesse
39 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Prozesse ersetzen mit exec Der Systemaufruf exec() ersetzt einen Prozess durch einen anderen Es findet eine Verkettung statt Der neue Prozess erbt 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 Wird vor einem Aufruf von exec() kein neuer Prozess mit fork() erzeugt, geht der Elternprozess verloren Schritte einer Programmausführung in der Shell: Die Shell erzeugt mit fork() eine identische Kopie von sich selbst Im neuen Prozess wird mit exec() das eigentliche Programm gestartet
40 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 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 $ bash $ 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 $ 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 $ 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 Durch das exec hat ps -f die Bash ersetzt und deren PID (12751) und PPID (1772) übernommen
41 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Ein weiteres Beispiel zu exec 1 # include <stdio.h> 2 # include < unistd.h> 3 4 int main () { 5 int pid ; 6 pid = fork (); 7 8 // Wenn die PID!=0 --> Elternprozess 9 if ( pid ) { 10 printf ("... Elternprozess...\ n"); 11 printf ("[ Eltern ] Eigene PID : %d\n", getpid ()); 12 printf ("[ Eltern ] PID des Kindes : %d\n", pid ); 13 } 14 // Wenn die PID =0 --> Kindprozess 15 else { 16 printf ("... Kindprozess...\ n"); 17 printf ("[ Kind ] Eigene PID : %d\n", getpid ()); 18 printf ("[ Kind ] PID des Vaters : %d\n", getppid ()); // Aktuelles Programm durch " date " ersetzen 21 // " date " wird der Prozessname in der Prozesstabelle 22 execl ("/ bin / date ", " date ", "-u", NULL ); 23 } 24 printf ("[%d ] Programmende \n", getpid ()); 25 return 0; 26 } Der Systemruf exec() existiert nicht als Bibliotheksfunktion Aber es existieren mehrere Varianten der Funktion exec() Eine Variante ist execl() Hilfreiche Übersicht über die verschiedene Varianten der Funktion exec()
42 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Erklärung zum exec Beispiel $./ exec_beispiel... Elternprozess... [ Eltern ] Eigene PID : [ Eltern ] PID des Kindes : [25492 ] Programmende... Kindprozess... [ Kind ] Eigene PID : [ Kind ] PID des Vaters : Di 24. Mai 17:16:48 CEST 2016 $./ exec_beispiel... Elternprozess... [ Eltern ] Eigene PID : [ Eltern ] PID des Kindes : [25499 ] Programmende... Kindprozess... [ Kind ] Eigene PID : [ Kind ] PID des Vaters : 1 Di 24. Mai 17:17:15 CEST 2016!!! Update!!! Der Kindprozess wird nach der Ausgabe seiner PID mit getpid() und der PID seines Elternprozesses mit getppid() durch date ersetzt Wird der Elternprozess vor dem Kindprozess beendet, bekommt der Kindprozess init als neuen Elternprozess zugeordnet Seit Linux Kernel 3.4 (2012) und Dragonfly BSD 4.2 (2015) können auch andere Prozesse als PID=1 neue Elternprozesse eines verweisten Kindprozesses werden new-parent-process-when-the-parent-process-dies/ #177361
43 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 3 Möglichkeiten um einen neuen Prozess zu erzeugen Prozessvergabelung (forking): Ein laufender Prozess erzeugt mit fork() einen neuen, identischen Prozess Prozessverkettung (chaining): Ein laufender Prozess erzeugt mit exec() einen neuen Prozess und beendet (terminiert) sich damit selbst, weil er durch den neuen Prozess ersetzt wird Prozesserzeugung (creation): Ein laufender Prozess erzeugt mit fork() einen neuen, identischen Prozess, der sich selbst mit exec() durch einen neuen Prozess ersetzt
44 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Spaß haben mit Forkbomben Eine Forkbombe ist ein Programm, das den Systemaufruf fork in einer Endlosschleife aufruft Ziel: So lange Kopien des Prozesses erzeugen, bis kein Speicher mehr frei ist Das System wird unbenutzbar Forkbombe in Python 1 import os 2 3 while True : 4 os. fork () Forkbombe in C 1 # include < unistd.h> 2 3 int main ( void ) 4 { 5 while (1) 6 fork (); 7 } Forkbombe in PHP 1 <? php 2 while ( true ) 3 pcntl_fork (); 4?> Einzige Schutzmöglichkeit: Maximale Anzahl der Prozesse und maximalen Speicherverbrauch pro Benutzer limitieren
45 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (1/6) Standardmäßige Aufteilung des virtuellen Speichers auf einem Linux-System mit 32-Bit-CPU 1 GB sind für das System (Kernel) 3 GB für den laufenden Prozess Das Textsegment enthält den ausführbaren Programmcode (Maschinencode) Kann von mehreren Prozessen geteilt werden Muss also nur einmal im physischen Speicher vorgehalten werden Ist darum üblicherweise nur lesbar (read only) Liest exec() aus der Programmdatei Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
46 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (2/6) Der Heap wächst dynamisch und besteht aus 2 Teilen: 1 Datensegment 2 BSS Das Datensegment enthält initialisierte Variablen und Konstanten Enthält alle Daten, die ihre Werte in globalen Deklarationen (außerhalb von Funktionen) zugewiesen bekommen Beispiel: int summe = 0; Liest exec() aus der Programmdatei Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
47 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (3/6) Der Bereich BSS (Block Started by Symbol) enthält nicht initialisierte Variablen Enthält globale Variablen (Deklaration ist außerhalb von Funktionen), denen kein Anfangswert zugewiesen wird Beispiel: int i; Zudem kann hier der Prozess dynamisch zur Laufzeit Speicher allokieren Unter C mit der Funktion malloc() Alle Variablen im BSS initialisiert exec() mit 0 Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
48 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (4/6) Der Stack dient zur Realisierung geschachtelter Funktionsaufrufe Enthält auch die Kommandozeilenargumente des Programmaufrufs und Umgebungsvariablen Arbeitet nach dem Prinzip LIFO (Last In First Out) Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
49 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (5/6) Mit jedem Funktionsaufruf wird eine Datenstruktur mit folgendem Inhalt auf den Stack gelegt: Aufrufparameter Rücksprungadresse Zeiger auf die aufrufende Funktion im Stack Die Funktionen legen auch ihre lokalen Variablen auf den Stack Beim Rücksprung aus einer Funktion wird die Datenstruktur der Funktion aus dem Stack entfernt Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
50 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Struktur eines UNIX-Prozesses im Speicher (6/6) Das Kommando size gibt die Größe (in Bytes) von Textsegment, Datensegment und BSS von Programmdateien aus Die Inhalte von Textsegment und Datensegment sind in den Programmdateien enthalten Alle Inhalte im BSS werden bei der Prozesserzeugung auf den Wert 0 gesetzt $ size / bin /c* text data bss dec hex filename bdc4 / bin / cat f87 /bin / chacl dbcb /bin / chgrp cda6 /bin / chmod e42d /bin / chown e3eb / bin /cp f / bin / cpio Quellen UNIX-Systemprogrammierung, Helmut Herold, Addison-Wesley (1996), S Betriebssysteme, Carsten Vogt, Spektrum (2001) Moderne Betriebssysteme, Andrew S. Tanenbaum, Pearson (2009), S
51 Prof. Dr. Christian Baun 7. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS /51 Wiederholung: Virtueller Speicher (Foliensatz 5) Quelle:
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
7. Vorlesung Betriebssysteme
Dr. Christian Baun 7. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/62 7. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik [email protected] Dr. Christian
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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?...................
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()
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
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
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
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
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
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
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
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
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,
Zwei Möglichkeiten die TLB zu aktualisieren
Zwei Möglichkeiten die TLB zu aktualisieren Die MMU kümmert sich um alles (Hardware-Lösung) sucht die p-entry wenn diese nicht da ist, behandelt direkt das TLB-miss zum Schluss wird die neue p-entry (virt
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
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
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]
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
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
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/
Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger
Netzwerk - Programmierung Threads Alexander Sczyrba [email protected] Jan Krüger [email protected] Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes
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
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)
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
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
Operating System Kernels
Operating System Kernels von Patrick Bitterling 1 Themenübersicht -Eine Einleitung über Kernel -Begriffserklärung, Architekturen -Kernel Subsysteme -Prozess-Scheduling, Speichermanagement,... -Der Networking
Prozesse und Logs Linux-Kurs der Unix-AG
Prozesse und Logs Linux-Kurs der Unix-AG Benjamin Eberle 22. Januar 2015 Prozesse unter Linux gestartete Programme laufen unter Linux als Prozesse jeder Prozess hat eine eindeutige Prozess-ID (PID) jeder
Betriebssysteme. Tutorium 2. Philipp Kirchhofer
Betriebssysteme Tutorium 2 Philipp Kirchhofer [email protected] http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 4. November 2009 Philipp
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,
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
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner
Konzepte von Betriebssystemkomponenten Referat am 24.11.2003 Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner Gliederung Adressräume Page Faults Demand Paging Copy
Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur
Hochschule Mannheim Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun Übungsklausur Aufgabe 1: Definieren Sie den Begriff der Systemsoftware. Nennen Sie die Aufgaben und Komponenten
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Ü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
UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):
Mär 14, 17 20:40 Seite 1/6 Aufgabe 1: Erklären Sie folgende Begriffe (25 Punkte): Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?): Abstimmen von mehreren Prozessen, warten auf Ergebnisse,
fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
Betriebssysteme (BS)
Betriebssysteme (BS) Prozesse Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2011/bs/
Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme
Basisinformationstechnologie I Wintersemester 2011/12 23. November 2011 Betriebssysteme Seminarverlauf 12. Oktober: Organisatorisches / Grundlagen I 19. Oktober: Grundlagen II 26. Oktober: Grundlagen III
Embedded-Linux-Seminare. Linux als Betriebssystem
Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: [email protected]
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
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
Arithmetik in der tcsh
Arithmetik in der tcsh Variablen speichern Zeichenketten (also Strings/Wörter) @ statt set Interpretation als arithmetische Ausdrücke (aus Ziffern, (, ), +, -, *, /, % bestehend) Beispiele: @ var = (3
Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme
PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
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
Bash-Skripting Linux-Kurs der Unix-AG
Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 07.01.2013 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian
(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
Vorlesung Betriebssysteme I
1 / 19 Vorlesung Betriebssysteme I Thema 4: Grundlegende Begriffe, Teil 2 Robert Baumgartl 22. November 2016 2 / 19 Begriffe: Schnittstelle beschreibt den statischen Aspekt einer Kommunikationsbeziehung
OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
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
Speicherverwaltung in Minix
Speicherverwaltung in Minix Speicher-Layout ausführbare Datei wird in Speicher geladen a.out-header bestimmt Gesamt-Speicherplatz Resultat: Gap zwischen Stack- und Daten-Segmenten Segment-Liste (kombinierte
Architektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
Prozesse erzeugen, überwachen, killen und Prozessprioritäten ändern
LPI Zertifizierung 1.103.5 6 Prozesse erzeugen, überwachen, killen und Prozessprioritäten ändern Copyright ( ) 2006-2009 by Dr. Walter Kicherer. This work is licensed under the Creative Commons Attribution-Noncommercial-Share
Speicher- und Cacheverwaltung unter Linux. Ralf Petring & Guido Schaumann
Speicher- und Cacheverwaltung unter Linux Ralf Petring & Guido Schaumann Übersicht Virtueller Adressraum Virtuelle Speicheraufteilung Reale Speicheraufteilung Speicherverwaltung Speicherzugriff Auslagerungsstrategien
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
UNIX Die wichtigsten Befehle
UNIX Die wichtigsten Befehle Syntax alias shortname command at zeit [Tag] [Datei] cron cat [-nsuv] [datei] passwd [ben_name] finger user fg, bg job set [-ekntuvx] [name] sort [-bcdfimnurt] [+pos1 pos2]
Maschinencode Dateiformat und Stackframes
Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel [email protected] Wissenschaftliches Rechnen Fachbereich Informatik
Karlsruher Institut für Technologie
Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt
2.3 Prozessverwaltung
Realisierung eines Semaphors: Einem Semaphor liegt genau genommen die Datenstruktur Tupel zugrunde Speziell speichert ein Semaphor zwei Informationen: Der Wert des Semaphors (0 oder 1 bei einem binären
Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging
Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging Grundlegende Bedeutung von Speicheradressierung: Wie sind die Daten auf Dem Speicher
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
UNIX - LINUX. Prozesse. Überblick. Prozesse: Start. Prozesszustände. Prozesskontrollblock (Prozesssteuerblock) Prozesszustände
Überblick UNIX - LINUX Prozesse Prozesse sind neben Dateien das zweite wichtige Grundkonzept von UNIX Definition: Ein Prozess ist ein Programm in Ausführung Prozesse und Dateien Prozesse werden aus Programm-Dateien
5. Foliensatz Betriebssysteme und Rechnernetze
Prof. Dr. Christian Baun 5. Foliensatz Betriebssysteme und Rechnernetze FRA-UAS SS2017 1/29 5. Foliensatz Betriebssysteme und Rechnernetze Prof. Dr. Christian Baun Frankfurt University of Applied Sciences
Kapitel III. Prozessverwaltung. VO Betriebssysteme
Kapitel III Prozessverwaltung V 1 Was ist ein Prozess? Prozesse ein exekutierendes Programm (aktive Einheit) ein Prozess benötigt Ressourcen: CPU-Zeiten, Speicher, Files, I/O Systeme Betriebssystem ist
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
Allgemeines zu Unix (Solaris, Linux, MAC OS X, FreeBSD,Open BSD usw.)
Allgemeines zu Unix (Solaris, Linux, MAC OS X, FreeBSD,Open BSD usw.) Multiuser- Multitasking Betrieb offenes System - unabhängig von den verschiedensten Hardwarekomponenten - Benutzeroberflächen folgen
Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?
Was machen wir heute? Betriebssysteme Tutorium 2 Philipp Kirchhofer [email protected] http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1
Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C
Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung
