Betriebssysteme Übung 2. Tutorium „System Calls & Multiprogramming“

Slides:



Advertisements
Ähnliche Präsentationen
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Advertisements

CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
On a Buzzword: Hierachical Structure David Parnas.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Referenzen und Zeichenketten
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Polymorphie (Vielgestaltigkeit)
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 1. Quartal 2002.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
eXtreme Programming (XP)
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Referat zum Thema „DLL“
Duo- und Quad Prozessor-Architektur
Speicherverwaltung durch Swapping
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Di., 8.30 – Uhr Ort: Hörsaal 5.01, Institut für Experimentalphysik, Universitätsplatz.
Informatik Grundlagen, WS04, Seminar 11
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Das Betriebssystem.
A RBEITEN MIT T HREADS. P ROZESSE UND T HREADS Prozess Eine einzelne CPU kann immer nur einen einzelnen Prozess bearbeiten. Rechenzeit wird an Prozesse.
Service Computing   Prof. Dr. Ramin Yahyapour IT & Medien Centrum 19. Januar 2010.
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.
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 >
VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 MMU-Konfiguration für Prozess P1 Virtual Memory von P1 Physical Memory.
Computerorientierte Physik VORLESUNG
Dynamische Datentypen
Präsentation von Lukas Sulzer
Herzlich Willkommen zu meiner Präsentation
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Thread Synchronisation in JAVA
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Exception-Handling.
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Objectives Verstehen was unterDelegate verstanden wird
Systemsoftware und Betriebssysteme
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
GsiOS Betriebssystem für AVR32 Sarah Hofer Matthias Kathan Hannes Kappl Christian Kuen Manuel Oblasser Christoph Storm FHV WS 09/10 Projekt Ubiquitous.
2.3 Implementierung von Prozessen
KA – Rechnerarchitektur II ____________________________________________________________________________________________ ____________________________________________________________________________________________.

NE2000: Hardware und Design eines Treibers 1 AKBPII: Abschlusspräsentation NE2000: Hardware und Design eines prototypischen Treibers bearbeitet.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Der Taskmanager ist Bestandteil des Betriebssystems, der als Prozessmanager Prozessmanager unter anderem die aktuell laufenden Programme und Prozesse.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
Tutorium Software-Engineering SS14 Florian Manghofer.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
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.
Programmieren in C Wie speichert C
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

Betriebssysteme Übung 2. Tutorium „System Calls & Multiprogramming“

Task 1 – System Calls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode – privileged mode User-Programme dürfen daher I/O u.dgl. nicht selbst ausführen  Anforderung an das Betriebssystem Wiederholung SysCalls

SysCalls – Ablauf System call ist software interrupt Interrupt-Service-Routine im Kernel Stellt Typ des system calls fest......und führt request durch wie bei jedem Interrupt: Kontrolle zurück zu Instruktion die dem SC folgt

SysCalls in Nachos ausgelöst durch MIPS syscall-Instruktion trap in Nachos-Kernel MIPS simulator implementiert traps durch Aufruf der Routine RaiseException() ( machine.cc ) ExceptionHandler() erhält Argument, das die Art der Exception spezifiziert

SysCalls in Nachos Instruktionen zur Ausführung des Systemcall in test/start.s (hier und in syscall.h muss noch SC_RENICE hinzugefügt werden) Code, der den Systemcall angibt, wird in Register 2 geladen Zusätzliche Argumente in Registers 4-7 Rückgabewerte werden in Register 2 erwartet

Beispiel SC_HALT syscall.h #define SC_Halt void Halt();... #include "syscall.h".globl Halt.entHalt Halt: addiu $2,$0,SC_Halt syscall j$31.end Halt start.s exception.cc Void ExceptionHandler (ExceptionType which) { } halt.c #include "syscall.h" int main() { Halt(); /* not reached */ }

Exceptions SysCall ist nur ein möglicher Exception-Typ, weitere: PageFaultException keine gültige Speicherseite ReadOnlyException Write auf “read-only“-Speicher BusErrorException ungültige phys. Adresse AddressErrorException Zugriff ausserhalb Adressraumes OverflowException Overflow bei add oder sub IllegalInstrException Ungültige Instruktion

Speicherverwaltung Wunschliste: Abbildung virtueller Adressen auf physische Adressen zur Laufzeit (address translation) Jedes Userprogramm beginnt bei Speicherstelle 0 Memory Management Unit (Hardware!)

Nachos Hauptspeicher Speicher der MIPS-Simulation ist ein einfaches Array Speicher ist in NumPhysPages Seiten der Größe PageSize ( machine.h ) aufgeteilt Speichergröße: NumPhysPages*PageSize Zugriff auf den Hauptspeicher immer via Translate(int virtAddr, int* physAddr,...) ( translate.cc ) Das alles ist Teil der Hardware, darf also nicht verändert werden! (ausgenommen NumPhysPages )

Nachos AddrSpace Jeder Thread hat eigenen Adressraum derzeit: direkte Abbildung virtueller Adressen in physische Adressen multiprogramming: Laden des Programmes ist abzuändern, Speicherseiten müssen anders ausgewählt werden Kenntnis der freien Speicherseiten nötig Ändern des AddrSpace-Konstruktors nötig relevante Variablen: pageTable, numPages

Task 2 – MultiprogrammingSpeicherverwaltung, 1 Thread thread 1 status: RUNNING name:“erster Thread“ threadID: 1 Pagetable

Task 2 – MultiprogrammingSpeicherverwaltung, mehrere Threads thread 1 status: RUNNING name:“erster Thread“ threadID: 1 Pagetable thread 2 status: READYTORUN name:“zweiter Thread“ threadID: 2 Pagetable

Task 1 – System Calls (1)Userprogramme Source in C COFF Common Object File Format NOFF Nachos Object File Format xgcc coff2noff main Memory Machine StartProcess ( char* filename ) { copy file into mem.... machine->Run( ); } NACHOS FILESYS-Stub

Userprogramme Verwaltungsaufgaben: Wer ist der Eltern-Prozess? Welche Ressourcen verwendet der Prozess? Was tun mit den Kind-Prozessen wenn ein Prozess beendet wird? Was tun, wenn ein Prozess fehlerhaft läuft? Was machen wir mit offenen Files?

Userprogramme Starten eines Userprogrammes: prüfen, ob genug Speicher verfügbar Neuen Adressraum anlegen, Binary laden neuen Thread für den Prozess erzeugen, Adressraum zuweisen und Fork() en Register/Userstate initialisieren Pointer auf Programm-Parameter in Register 4 schreiben machine->Run()

Timeslicing mit Prioritäten Verschiedene Varianten möglich: Verlängern der Abarbeitungszeit (Ansatzpunkte: n-Ticks bis Timerausloesung, n-mal gleichen Prozess auswählen,...) Vorteil: einfach zu implementieren Nachteil: System „ruckelt“ wenn Prozesse mit sehr hoher Priorität laufen Prozess öfters laufen lassen (statistische Auswahl aus lauffähigen Prozessen) Vorteil: bessere Parallelität und Antwortverhalten Nachteil: aufwändig zu implementieren

Implizite Aufgabenstellungen Wir wollen: Stabiles, fehlertolerantes Betriebssystem Prozesse sollen voreinander geschützt werden fehlerhafter Prozess darf das Betriebssystem und andere Prozesse nicht gefährden Welche Fehlerfälle können auftreten, wie sollen diese behandelt werden?