1.5 - Operating System Operations (p.20)
Dual-Mode Operation
- User Mode = Opdracht uitgevoerd door de gebruiker.
- Kernel Mode = Opdracht uitgevoerd door het Operating System.
- Ook wel Supervisor Mode, System Mode, Privileged Mode genoemd.
- Wanneer het OS control heeft over de computer.
- Een bit is toegeveoegd aan de hardware om aan te geven in welke modus het OS is.
- Een hardware onderdeel kan hierdoor
- Kernel = 0, User = 1
Wanneer een userapplicactie een service request doet aan het besturingssysteem moet het systeem omschakelen naar de kernel mode.
Wat gebeurt er op boot?
- De hardware start in Kernel Mode.
- Het OS wordt geladen, en start de programmas in User Mode.
- Wanneer er een Trap/Interrupt plaatsvind wisselt de hardware van User naar Kernel mode.
Voordeel: Beveiligen van het systeem (of andere gebruikers) tegen loslopende/kwaadwillende gebruikers
- Privileged Instructions = Instructies die worden uitgevoerd als kernel mode, welke mogelijk kwaadwillend kunnen zijn.
System Call = Zorgen ervoor dat het OS taken bestemd voor het OS kan uitvoeren, welke zijn aangevraagd door een User Program.
- Over het algemeen aangevraagd door middel van een trap
Hoe werkt een system call?
- User Process start een system call.
- Een trap wordt uitgevoerd naar de kernel.
- De mode bit verandert van 1 naar 0 (user naar kernel mode).
- De kernel onderzoekt de call, en leest wat voor service is aangevraagd.
- Aanvullende gegevens worden doorgegeven in de stack, registers of in memory (pointers naar dit geheugen worden meegegeven)
- De kernel valideert dat de gegevens correct en legaal zijn.
- De kernel voert de call uit.
- De kernel geeft de controle terug aan het user process.
- De mode bit verandert terug naar 1.
Een OS zonder dual-mode kan zonder waarschuwing zichzelf overschrijven.
Timer
- Timer = Methode om er voor te zorgen dat een user program niet eindeloos kan blijven draaien in de cpu.
- De timer interrupt het programma na een gespecificeerde periode.
- De tijd kan vast staan, of variabel.
- Het OS zet de timer.
- Wanneer de timer 0 is, wordt een interrupt gestuurd naar het OS.
- Het OS kan beslissen het programma meer tijd te geven of het interpreteren als een fatale error.