3.2 - Process Scheduling (p.107)
- Multiprogramming > Maximaliseren van het CPU gebruik.
- Time-Sharing doel = De CPU zo snel laten schakelijk tussen processen dat de gebruiker ermee kan werken alsof ieder programma altijd werkt.
- Process Scheduler = Selecteren van een process uit een lijst van beschikbare processen om deze uit te voeren door de CPU.
- Bij meerdere processen moeten ze wachten totdat de CPU weer vrij is.
Scheduling Queues
Hoe werkt scheduling (algemene overview):
- Een process wordt gestart.
- Het process wordt in de job queue geplaatst.
- Wanneer het process geladen is in main memory wordt het in de ready queue geplaatst.
- Het process wordt in de CPU geladen wanneer het aan de beurt is. (Ook wel dispatched door de scheduler genoemd)
- De volgende mogelijheden kunnen zich voordoen:
- Het process is afgerond. En wordt uit de cpu verwijderd.
- Het process is interrupted. Bijvoorbeeld een ander process gaat voor, of de cpu tijd van het process is overschreden.
- Het process gaat terug naar stap 3.
- Het process creeert een sub/child process, dit process wacht totdat het subprocess is afgerond.
- Het subprocess begint bij stap 1, het huidige process gaat terug naar stap 3.
- Het process wacht voor de voltooiing van een (I/O) event.
- Het subprocess gaat door naar stap 6.
- Het process wordt in de device queue van het desbetreffende I/O apparaat geplaatst.
- Wanneer het process aan de beurt is worden de gegevens voorhet process van het desbetreffende I/O apparaat gehaald.
- Het process word weer in de ready queue geplaatst.
Een process beweegt zich tussen de verschillende queues.
- De scheduler verplaatst de processen aan de hand van het type scheduler dat wordt gebruikt.
- Long-term scheduler = Bepaalt welke programmas in het geheugen worden geplaatst voor uitvoering. (aka job scheduler)
- Doel: Maken van een gebalanseerde mix van processen, zoals I/O of CPU gerelateerd.
- Doel: Beheert de graad van multiprogramming. Aantal binnenkomende processen moet gelijk zijn aan het aantal uitgaande processen.
- Medium-term scheduler = Beheert het aantal processen in het geheugen en verplaatst deze naar secondaire opslag om ruimte vrij te maken voor andere processen. (aka Swapping)
- Swapping gebeurt wanneer processen moeten wachten op bijvoorbeeld een IO request.
- Swapping gebeurt ook om een goede mix te creeren van IO/CPU gerelateerde processen.
- Short-term scheduler = Het verbeteren van het systeem performance door te beslissen welke processen er worden uitgevoerd. (aka CPU scheduler/dispatcher)
- Wijst een process toe aan een CPU.
- Long-term scheduler = Bepaalt welke programmas in het geheugen worden geplaatst voor uitvoering. (aka job scheduler)
Context Switch
- Context Switch = Mechanisme om de status/context van een CPU op te slaan en terug te zetten, zodat het process zich weer kan vervolgen na bijvoorbeeld een interrupt.
- Een context switch is overhead, want het systeem voert niets nuttig uit wanneer er wordt geswitched.
- Werkwijze:
- Process A wordt uitgevoerd in de CPU.
- Een interrupt vindt plaats.
- De status/context van van process A wordt opgeslagen (state save)
- Status/context van Process B wordt ingeladen in de CPU. (state restore)
- Process B is afgerond en wordt uit de CPU gehaald.
- De status/context van Process A wordt weer ingeladen in de CPU. (state restore)
- Mits het natuurlijk aan de beurt is volgens de scheduler(s), dit kan ook best process C-Z zijn.
- Process A wordt verder uitgevoerd.