betriebssysteme Übung 2. tutorium „system calls & multiprogramming“
TRANSCRIPT
![Page 1: Betriebssysteme Übung 2. Tutorium „System Calls & Multiprogramming“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/1.jpg)
Betriebssysteme Übung2. Tutorium „System Calls & Multiprogramming“
![Page 2: Betriebssysteme Übung 2. Tutorium „System Calls & Multiprogramming“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/2.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/3.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/4.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/5.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/6.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/7.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/8.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/9.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/10.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/11.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/12.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/13.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/14.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/15.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/16.jpg)
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“](https://reader036.vdokument.com/reader036/viewer/2022082901/570491c41a28ab14218da31c/html5/thumbnails/17.jpg)
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?