Scheduling Het verdelen van processortijd onder processen en threads Module code: 1 Scheduling-algoritme: criteria • Rechtvaardigheid: ieder proces een rechtvaardig deel van de cpu-tijd • Efficiëntie effectieve bezetting CPU • Responsetijd minimaal voor interactieve gebruikers • Turnaround (doorlooptijd) minimaal voor batchgebruikers • Throughput (doorvoer) maximaliseer het aantal per uur verwerkte jobs Module code: 2 Scheduling: procestoestanden new 5-toestanden-model Lange termijn ready running exit Korte termijn blocked Module code: 3 Scheduling: procestoestanden new ready suspend ready 7-toestanden-model running exit Middellange termijn blocked suspend blocked Middellange termijn Module code: 4 Module code: 5 Scheduling: principes • Nonpreemptive scheduling –job helemaal afronden –geen task switch • Nonpreemptive multitasking –cooperative multitasking –task switch als blocked • Preemptive multitasking –OS kan elk moment ingrijpen Module code: 6 Scheduling: wachtrijdiagram Scheduling lange termijn Batch jobs Time-out Ready Queue Scheduling korte termijn vrijgeven Processor Scheduling middellange termijn Interactive gebruikers Ready, Suspend Queue Blocked, Suspend Queue Scheduling middellange termijn Blocked Queue Event Occurs Module code: Event Wait 7 Wachtrijen met prioriteiten RQ0 vrijgeven Dispatch Processor RQ1 . . . Toelaten RQn Preemptief onderbreken Event Wait Event occurs Module code: Blocked Queue 8 First-Come-First-Served (FCFS, FIFO) 0 5 10 15 20 1 2 3 4 5 •Een gereed proces komt in de ready queue •Bij wisseling komt het oudste proces aan de beurt Module code: 9 Voorbeeld fifo (nonpreemptief) proces 1 2 3 4 5 proces aankomst ts wachttijd eindtijd tq tq / ts Module code: aankomst 0 2 4 6 8 1 0 2 0 2 2 1 2 2 5 0 7 5 1 Gevraagd: Gemiddelde wachttijd Gemiddelde turn around tijd (tq) Gemiddelde tq / ts ts 2 5 4 6 3 3 4 4 6 4 6 3 5 11 17 7 11 1,75 1,83 5 8 3 9 20 12 4 gemiddeld 3,4 37:5 = 7,4 9,58:5 = 1,92 10 Shortest Process Next proces 1 2 3 4 5 0 aankomst 0 2 4 6 8 ts 3 6 4 5 2 5 Niet-preëmptieve strategie Proces met kortste verwachte verwerkingstijd wordt het eerst geselecteerd 10 15 20 1 2 3 4 5 Module code: 11 Kortste job eerst Bepaal de gemiddelde turnaroundtijd van a en van b bediend door een fifo scheduler. Aankomsttijd alle jobs = 0 proces aankomst Bediening ts wachttijd eindtijd tq tq/ts a 0 8 0 8 8 1 b 0 4 8 12 12 3 c 0 4 12 16 16 4 d 0 4 16 20 20 5 gemiddeld proces aankomst Bediening ts wachttijd eindtijd tq tq/ts a 0 4 0 4 4 1 b 0 4 4 8 8 2 c 0 4 8 12 12 3 d 0 8 12 20 20 2,5 gemiddeld Module code: 9 56:4 = 14 13:4 = 3,25 8 44:4 = 11 8,5:4 = 2,1 12 Shortest Remaining Time • Preëmptieve versie kortste resterende proces tijd strategie • Moet een schatting van de verwerkingstijd gebruiken 0 5 10 15 20 1 2 3 4 5 Module code: 13 Highest Response Ratio Next (HRRN) 0 5 10 15 20 1 2 3 4 5 RR3 = (5 + 4)/4 = 2.25 Het volgende proces RR4 = (3 + 5)/5 = 1,6 met de hoogste ratio RR5 = (1 + 2)/2 = 1,5 wordt geselecteerd time spent waiting + expected service time expected service time Module code: Op T = 13 moet je weer kiezen: RR4 = (7+5)/5 = 2,4 RR5 = (5 + 2)/2 = 3,5 14 Round-Robin 0 5 10 15 20 1 2 3 4 5 • preëmptieve verwerking gebaseerd op een klok • een tijdquantum wordt aan elk proces toegewezen Module code: 15 Tijdsquotum & standaardinteractie Module code: 16 Wachtrijschema bij een scheduler met virtual round robin Extra queue Module code: 17 Round-Robin scheduling Gevraagd: Gemiddelde turn around tijd tq en tq/ts time quanta = 1 proces aankomst Bediening ts wachttijd eindtijd tq tq/ts 0 1 0 2 0 2 2 1 2 2 5 0 13 11 2,2 5 3 4 4 0 16 12 3 4 6 6 0 20 14 2,33 5 8 3 1 17 9 3 gemiddeld Vrij laag tq/ts zonder kennis van ts 0,2 48:5 = 9,6 11,53:5 = 2,3 10 15 20 1 2 3 4 5 Module code: 18 Feedback 0 5 10 15 20 1 2 3 4 5 Straf processen die lang uitgevoerd worden door prioriteit te verlagen Module code: 19 Scheduling met feedback Module code: 20 Multiprocessorsystemen • Gespecialiseerde processors – math.coprocessor, gpu, dma • Sterk gekoppelde multiprocessing – meerdere processors op één moederbord – meerdere kernen in één processor • Gedistribueerde multiprocessing / clustering – gekoppelde computers of processorboards • Praktijk – combinatie van bovenstaande Module code: 21 Multiprocessor OS: ontwerpaspecten • De toewijzing van processen aan processors • Het gebruik van multiprogrammering op de verschillende processors • De feitelijke toedeling (dispatching) van een proces Module code: 22 Thread scheduling - Delen van belasting - Groepsscheduling - Vaste processortoewijzing - Dynamische scheduling • Voordelen – Werklast verdeeld over CPU's – Gemeenschappelijk wachtrij • Nadelen – Gemeenschappelijke wachtrij: uitsluiting? – CPU-cache minder efficiënt gebruikt – Veel proceswisselingen door afhankelijkheden tussen threads Module code: 23 Thread scheduling - Delen van belasting - Groepsscheduling - Vaste processortoewijzing - Dynamische scheduling • Deel/alle threads van een proces gelijktijdig op/van CPU • Voordelen – Eenvoudige scheduling – Threads draaien parallel – Dus minder synchronisatieproblemen • Nadelen – Minder efficiënte cpu-belasting Module code: 24 Thread scheduling - Delen van belasting - Groepsscheduling - Vaste processortoewijzing - Dynamische scheduling • Wanneer een proces wordt ingeroosterd, dan krijgt elke thread een processor toegewezen gedurende de levensduur van de toepassing • Lijkt inefficiënt maar zinvol indien er veel processors zijn (20-100+) Module code: 25 Thread scheduling - Delen van belasting - Groepsscheduling - Vaste processortoewijzing - Dynamische scheduling • Proces en OS nemen samen een beslissing over het aantal te gebruiken threads • Eén thread kan steeds op een andere processor verdergaan Module code: 26 Tentamenstof • Hoofdstuk 9: – Paragrafen 9.1 t/m 9.2 Module code: 27