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

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

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

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

Betriebssysteme Übung2. Tutorium „System Calls & Multiprogramming“

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

Task 1 – System Calls (1)

Wozu?

SicherheitStabilitätErfordert verschiedene modes of execution:

user mode – privileged modeUser-Programme dürfen daher I/O u.dgl. nicht selbst

ausführen Anforderung an das Betriebssystem

Wiederholung SysCalls

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

SysCalls – Ablauf

System call ist software interruptInterrupt-Service-Routine im KernelStellt Typ des system calls fest......und führt request durchwie bei jedem Interrupt: Kontrolle zurück zu Instruktion die dem SC folgt

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

SysCalls in Nachos

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

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

SysCalls in Nachos

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

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

Beispiel SC_HALT

syscall.h#define SC_Halt 0........void Halt();...

#include "syscall.h"

.globl Halt .ent HaltHalt: addiu $2,$0,SC_Halt syscall j $31 .end Halt

start.s

exception.ccVoid ExceptionHandler(ExceptionType which){}

halt.c

#include "syscall.h"

int main(){ Halt(); /* not reached */}

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

Exceptions

SysCall ist nur ein möglicher Exception-Typ, weitere:PageFaultException keine gültige SpeicherseiteReadOnlyException Write auf “read-only“-SpeicherBusErrorException ungültige phys. AdresseAddressErrorException

Zugriff ausserhalb AdressraumesOverflowException Overflow bei add oder subIllegalInstrException

Ungültige Instruktion

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

Speicherverwaltung

Wunschliste:

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

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

Nachos Hauptspeicher

Speicher der MIPS-Simulation ist ein einfaches ArraySpeicher ist in NumPhysPages Seiten der Größe PageSize (machine.h) aufgeteiltSpeichergröße: NumPhysPages*PageSizeZugriff 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)

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

Nachos AddrSpace

Jeder Thread hat eigenen Adressraumderzeit: direkte Abbildung virtueller Adressen in physische Adressenmultiprogramming: Laden des Programmes ist abzuändern, Speicherseiten müssen anders ausgewählt werdenKenntnis der freien Speicherseiten nötigÄndern des AddrSpace-Konstruktors nötigrelevante Variablen: pageTable, numPages

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

Task 2 – MultiprogrammingSpeicherverwaltung, 1 Thread

thread 1status: RUNNINGname:“erster Thread“threadID: 1

Pagetablevpn:0 ppn:0vpn:1 ppn:6vpn:2 ppn:2vpn:3 ppn:5

page0page1page2page3page4page5page6page7

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

Task 2 – MultiprogrammingSpeicherverwaltung, mehrere Threads

thread 1status: RUNNINGname:“erster Thread“threadID: 1

Pagetablevpn:0 ppn:0vpn:1 ppn:6vpn:2 ppn:2vpn:3 ppn:5

page0page1page2page3page4page5page6page7

thread 2status: READYTORUNname:“zweiter Thread“threadID: 2

Pagetablevpn:0 ppn:4vpn:1 ppn:1vpn:2 ppn:7vpn:3 ppn:3

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

Task 1 – System Calls (1)Userprogramme

Source in C COFFCommon Object File Format

NOFFNachos Object File Format

xgcc

coff2noff

mainMemory

MachineStartProcess(char* filename) { copy file into mem .... machine->Run( );}

NACHOS

FILESYS-Stub

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

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?

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

Userprogramme

Starten eines Userprogrammes:

prüfen, ob genug Speicher verfügbarNeuen Adressraum anlegen, Binary ladenneuen Thread für den Prozess erzeugen, Adressraum zuweisen und Fork()enRegister/Userstate initialisierenPointer auf Programm-Parameter in Register 4 schreibenmachine->Run()

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

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 implementierenNachteil: System „ruckelt“ wenn Prozesse mit sehr hoher Priorität laufenProzess öfters laufen lassen (statistische Auswahl aus lauffähigen Prozessen)Vorteil: bessere Parallelität und AntwortverhaltenNachteil: aufwändig zu implementieren

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

Implizite Aufgabenstellungen

Wir wollen:

Stabiles, fehlertolerantes BetriebssystemProzesse sollen voreinander geschützt werdenfehlerhafter Prozess darf das Betriebssystem und andere

Prozesse nicht gefährdenWelche Fehlerfälle können auftreten, wie sollen diese

behandelt werden?