2 Systemdienste Wiederholungsempfehlung: Rechnerorganisation Beachte: Systemaufrufe sind sprachunabhängig. Ihre Beschreibung bezieht sich daher auf das.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

10.2 Wechselseitiger Ausschluss in Hardware
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
FU Berlin SS 2003 Klaus-Peter Löhr
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Ausnahmen HS Merseburg (FH) WS 06/07.
1A: POSIX POSIX (Portable Operating System) ist ein Standard für UNIX-Systeme. Er dient dazu, Programme portabel unter UNIX und Derivaten zu tauschen und.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
OpenMP Präsentation im Rahmen des Seminars
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
7 Verteilungsabstraktion
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Medizinische Statistik und Informationsverarbeitung Goldschmidt, Quade, Baur Institut für Medizinische Statistik, Dokumentation und Datenverarbeitung.
Vorl. 6: Single- und Multitasking Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Batch-Programmierung Grundlagen
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Capabilities - Sicherheit realisiert auf Hardware-Ebene am Beispiel von MONADS Teil 2 Vorgelegt von: Wiebke Schröder Vortragsdatum: 07. Juli /21.
Error Handling unter Visual FoxPro. © 1999 TMN-Systemberatung GmbH ON ERROR n ON ERROR DO ERRHAND WITH error(), sys(16), message(), lineno(1) – Globales.
1 Welche Maßnahmen muss man treffen, um sowohl unter BORLAND als auch unter KEIL kompilieren zu können? Eliminieren der zusätzlichen Schlüsselwörter Programmieren.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Programmierung paralleler Algorithmen mit MPI
Betriebssysteme allgemein
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Das Betriebssystem.
Seminar Internet Technologien
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Grundlagen der Informatik 4 Lehrstuhl für Betriebssysteme 1 Wie werden Funktionen realisiert? Beispiel: int maximum(int x, int y) { int j = x; if (y >
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Mo., – Uhr Ort: Hörsaal 5.01, Institut für Physik, Universitätsplatz 5, A-8010.
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Java Programmierung.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Vortrag: Frames & Javascript.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
5 Speicherverwaltung Pufferspeicher (cache)
2 Nebenläufige Prozesse. 2.1 Programmstruktur und Prozesse private Prozess = Anweisungen + Daten gemeinsame Aber:Wie verhält sich das Konstrukt „Prozess“
2.3 Implementierung von Prozessen
1.3 Verklemmungen Synchronisation löst Probleme – ist aber auch Gefahrenquelle: Prozeß wartet an Synchronisationspunkt – ist gesichert, daß er irgendwann.
User Mode Linux Sven Wölfel 1. Juni User Mode Inhalt  Was ist UML?  Wofür kann man UML benutzen?
Bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.
2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Bs Der Speicherverwalter Speicherverwalter (memory manager) = im einfachsten Fall ein Systemprozess, der für die Umlagerung der Seiten (page.
Bs Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.
Betriebssysteme Übung 2. Tutorium „System Calls & Multiprogramming“
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
Übung Betriebssysteme, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil II Prozesse / Systemaufrufe Fehlerbehandlung.
Beendigung von Prozessen Normale Beendigung –durch Ende von main –durch Aufruf von exit() Anormale Beendigung –Aufruf von abort() –interne oder externe.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
1 Prozesse im Studierendenmanagement Kontext: Studierenden anlegen Sonstige Aktivitäten: Suchfunktion, s verschicken, diverse Auswertungen.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Ablauf von Daten- verarbeitungsprozessen Gliederung: ● Zeitliche Steuerung von Abläufen – Druckauftragsverarbeitung – scheinbare Gleichzeitigkeit von Prozessen.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Interrupts Wozu Interrupts? Interruptmodell Einige Attiny-Interrupts
Netzwerk - Programmierung
Netzwerk - Programmierung
Einführung in die Programmierung
Grundlagen der Betriebssysteme [CS2100]
 Präsentation transkript:

2 Systemdienste Wiederholungsempfehlung: Rechnerorganisation Beachte: Systemaufrufe sind sprachunabhängig. Ihre Beschreibung bezieht sich daher auf das Typsystem der Hardware, d.h. sie ist so gut wie typenlos.

Systemdienste werden für die Benutzerprogramme an der Systemschnittstelle sprachunabhängig bereitgestellt, werden angefordert über Systemaufrufe (system calls) Somit kann ein Benutzerprozess (user process) verfügen über einen virtuellen Adressraum, die Maschinenbefehle (außer den privilegierten Befehlen) die Systemdienste (darunter InterProzessKommunikation) eventuell Dienste anderer Prozesse (über IPK)

Technische Realisierung von Systemaufrufen – 4 Alternativen: (monolithischer Kern:) Unterprogrammsprung ins Betriebssystem Maschinenbefehl Systemaufruf (Mikrokern:) Aufruf eines Systemmoduls/objekts Auftragserteilung an einen Systemprozess

Unterprogrammsprung ins Betriebssystem: bei sehr einfachen Systemen ohne getrennte Adressräume. Übersetzer/Binder/Lader setzt Sprungadressen ein. Abschließend Rücksprung.

Maschinenbefehl Systemaufruf (supervisor call, SVC): löst Alarm (trap, exception) aus. Unterbrechungsbehandlung erkennt Unterbrechungsursache Systemaufruf und verzweigt über Sprungtabelle zur gewünschten Dienstroutine. Parametrisierung des Systemaufrufs direkt durch den Übersetzer oder durch zwischengeschaltete Bibliotheks- routine. Abschließend Rücksprung. Beispiel: klassiches Unix Kern SVC

Aufruf eines Systemmoduls/objekts: Als Reaktion auf den Alarm CALL vermittelt der Mikrokern Eintritt in den Adressraum des gewünschten Systemmoduls. Rückkehr in den aufrufenden Adressraum über RETURN. Mikrokern CALL RETURN

Auftragserteilung an Systemprozess Als Reaktion auf den Alarm SEND besorgt der Mikrokern eine Auftragserteilung an den gewünschten Systemprozess. Dieser nimmt den Auftrag über RECV entgegen. (Entsprechend gegebenenfalls für Ergebnislieferung.) Beispiele: Mach, Minix Mikrokern SEND RECV RECV SEND

Programmieren in hardwarenaher Sprache – z.B Assembler oder C – mit direkter Benutzung der Systemaufrufe wird manchmal (unpräzise) Systemprogrammierung genannt Beispiel Unix und C: C-Bibliotheken bieten umfangreiches application programming interface (API), darunter die Systembibliothek (Online-Handbuch: man –s2 name )

Systembibliothek verbirgt die eigentlichen Systemaufrufe, z.B. verbirgt sich hinter write(...) PUSHEBX ; EBX retten MOVEBX, 8(ESP) ; 1. Parameter MOVECX, 12(ESP) ; 2. Parameter MOVEDX, 16(ESP) ; 3. Parameter MOVEAX, 4 ; 4 steht für write INT0x80 ; eigentlicher Systemaufruf JBEDONE ; kein Fehler NEGEAX ; Fehlercode MOVerrno, EAX MOVEAX, -1 DONE:POPEBX ; EBX wiederherstellen RET ; Rücksprung (Intel IA-32 Assembler)

Fehler bei Systemaufruf wird angezeigt durch den Ergebniswert –1 ; die Fehlerart findet man dann in der Variablen extern int errno ; mnemonische Bezeichnungen der Fehlerarten sind in der Datei errno.h zusammengestellt, z.B. EIO (I/O error) für Ein/Ausgabe-Fehler. (z.B. Solaris: /usr/include/sys/errno.h )

Beispiel: extern int errno; main() { int written = 0; written = write(1,"hello!\n",7); if(written == -1) exit(errno); else exit(0); }

2.1 Prozessverwaltung umfasst Systemaufrufe zum Erzeugen, Beenden, Abfragen,... von Prozessen Prozess wird identifiziert über Prozessnummer (process id, pid) (Beachte: Mehrprozessbetrieb erfordert nicht notwendig solche Aufrufe – einfache Betriebssysteme kommen auch ohne sie aus!) (am Beispiel Unix)

Prozessmodell: Anmelden am System führt zur Einrichtung eines Benutzerprozesses, der typischerweise (aber nicht notwendigerweise) den Befehlsinterpretierer (command interpreter, shell) ausführt

Prozessmodell: Anmelden am System führt zur Einrichtung eines Benutzerprozesses, der typischerweise (aber nicht notwendigerweise) den Befehlsinterpretierer (command interpreter, shell) ausführt. Jeder Prozess kann weitere Prozesse erzeugen; somit entsteht nach dem Anmelden ein Baum von Prozessen, genannt Prozessgruppe (process group), identifizierbar über eine Prozeßgruppennummer.

Prozess ist schwergewichtig, d.h. ist virtueller Rechner mit virtuellem Prozessor virtuellem Adressraum, virtueller Peripherie. Im Gegensatz zum realen kennt der virtuelle Prozessor ausschließlich die nichtprivilegierten Befehle (non-privileged, user-mode instructions), ausschließlich die allgemeinen Register (d.h. nicht Programmstatus, Adressumsetzer (MMU) etc.), nicht alle Unterbrechungen (interrupts): zwar die Alarme (traps), aber statt der Eingriffe (interrupts) andersartige Software-Eingriffe (software interrupts).

2.1.1 Erzeugen und Beenden von Prozessen (Unix-ähnliche Systeme gemäß POSIX-Standard:) fork() erzeugt Kopie des laufenden Prozesses; Erzeuger (parent process) erhält als Ergebnis die Prozeßnummer des erzeugten Kindprozesses (child process), und dieser erhält 0 als Ergebnis. Fehler EAGAIN, wenn zu viele Prozesse. (online manual [Abschnitt 2]: Befehl man fork liefert Details, insbesondere zu weiteren Fehlern!)

exit(status) beendet den laufenden Prozess mit dem angegebenen Endestatus (return status, 1 Byte) (normal: 0 ; Fehlerfall: !=0 ) Fehler: keine wait(&status) [siehe auch waitpid(...) ] wartet auf das Beenden eines Kindprozesses, löscht diesen Prozess und liefert seine Nummer als Ergebnis; liefert in status : (Endestatus,Abbruchstatus [s.u.]) Fehler ECHILD, wenn keine Kinder mehr

Beispiel: Erledigung einer Aufgabe durch Aufteilung in zwei unabhängige Aktivitäten: if(fork() != 0) { stat = parentComputation(); wait(&status); if(stat || status) stat = 1; exit(stat); } else { stat = childComputation(); exit(stat); }

2.1.2 Abfragen von Prozesseigenschaften getpid() liefert Nummer des laufenden Prozesses getpgrp() liefert Nummer der Prozessgruppe des laufenden Prozesses times(&buffer) liefert diverse Angaben über den Rechenzeitverbrauch des laufenden Prozesses und seiner Kinder

2.1.3 Unterbrechen/Abbrechen von Prozessen Unterbrechungen beim virtuellen Prozessor – 3 Varianten: Es gibt keine. Hardware-Eingriffe bleiben verborgen; Alarm bleibt verborgen (z.B. Seitenfehler) oder bewirkt Systemaufruf oder führt zum Prozessabbruch(z.B. Arithmetikfehler)

Manche Alarme können auftreten und sollten vom Prozess geeignet behandelt werden. Hardwaremäßig vorgegebene Alarmadressen im Adressraum des Prozesses oder Systemaufruf für Festlegung der Alarmadressen. (So bei Unix:) Zusätzlich zu gibt es Software-Unterbrechungen (software interrupts): Betriebssystem definiert verschiedene Arten Systemaufruf für Eingriff in anderen Prozess Systemaufruf für Festlegung der Adressen der Behandlungsroutinen aller Unterbrechungen

Die dem Prozess bekannten Unterbrechungen (Alarme und Software-Unterbrechungen) heißen bei Unix Signale (signals) (durchnumeriert, mnemonisch in signal.h ) Z.B. Alarme: (Hardware:) SIGSEGV segmentation violation ungültige Adresse (Hardware:) SIGILL illegal instruction ungültige Instruktion (!Software:) SIGPIPE pipe error Pipe hat keinem Empfänger

Z.B. Eingriffe von anderen Prozessen: SIGTERM terminate Aufforderung zum Beenden SIGKILL kill Abbruch sonstige Eingriffe: SIGINT interrupt Taste ^C, wirkt auf gesamte Prozessgruppe SIGALRM alarm der Wecker ist abgelaufen (nachdem er zuvor mit alarm(sec) – s.u. – gestellt worden war)

Systemaufrufe für Software-Unterbrechungen: kill(pid,sig) schickt Signal sig an den Prozess pid (bzw. im Fall pid==0 an alle Prozesse der Prozessgruppe des laufenden Prozesses) Fehler: ESRCH – pid ist ungültig EINVAL – sig ist ungültig

pause() wartet auf ein Signal – und liefert nach Abschluss der Signalbehandlung einen Fehler EINTR alarm(seconds) schickt Signal SIGALRM an den laufenden Prozess selbst – nach einer Verzögerung von seconds Sekunden

signal(sig,&handler) [siehe auch sigaction(...) ] vereinbart, daß Signale sig durch die Prozedur handler behandelt werden (und liefert als Ergebnis die zuvor vereinbarte Behandlungsroutine). Fehler: EINVAL – sig ist ungültig Signale unterdrücken und wieder zulassen über Signalmaske, siehe z.B. Solaris man signal