SlideShare a Scribd company logo
1 of 45
Skedulering i Windows
Leslie Dahlberg, Jonathan Larsson
Översikt
Översikt av skedulering
Prioriteter
Preemption
En tråd som ska köra kan bli preemptad av en tråd med högre prioritet
Processor affinity
Kvantum
Systemets konfiguration (lång kvantum, kort kvantum, fix-storlek, variabel storlek)
Background eller foreground
Kernel dispatcher
Skedulerarens kod ligger utspridd i kärnan
Event som startar dispatchern
Thread -> Ready
Thread -> Slut på kvantumet || Terminate || Wait
Thread -> Ändring av prioritet
Thread -> Ändring av processor affinity
Dispatchern väljer vilken tråd som ska köras på processorn näst
Kontextbyte utförs
Prioritetsnivåer
Prioritetsnivåer
16 real-tidsnivåer (16 till 31)
15 variabla nivåer (1 till 15)
Prioritetsnivåer
6 prioritetsklasser för processer
7 prioritetsklasser för trådar
Idle och Time critical behåller sina värden förutom när det är Realtime
Prioritetsnivåer
När en tråd skapas så ärver den processens prioritet
När en process skapas så ärver den prioriteten från den process som skapade
den.
Att ändra en process till Real-time kan vara farligt, vissa kritiska processer i
windowskärnan körs där och OS:et kan frysa
Thread States
Ready
Tråden väntar på att exekvera
Dispatchern väljer bara bland trådar
i detta tillstånd
Deffered Ready
Tråden ska köras men har inte
startat ännu
Minimerar låsningstiden på
skedulerarens databas för en viss
processor
Standby
Tråden ska köra näst på en viss
processor
När detta är möjligt utförs ett
kontextbyte
Bara en tråd kan finnas i standby
för varje processor
Tråden kan preemptas ur tillståndet
Running
Tråden exekverar
Tills:
Kvantumet är slut
En tråd med högre prioritet
preemptar den
Den avslutas
Den går in i ett frivilligt
väntetillstånd
Waiting
Tråden väntar
Väntar frivilligt på ett
synkroniseringsobjekt
OS väntar på I/O
OS försätter tråden i ett
väntetillstånd
Efter väntan är slut:
Endera fortsätter den att köra
Eller så går till Ready
Transition
Tråden exekveras men det
uppstår ett sidfel i kernel-
stacken
När sidan är inläst övergår tråden
till Ready
Terminated
Tråden har avslutat
Object manager avallokerar
trådobjektet
Initialized
Används internt medans en tråd
skapas
Dispatcher databas
Dispatcher databas
● Datastrukturer för att bestämma skeduleringsbeslut
● Håller koll på vilka trådar som väntar och vilka trådar som körs i vilka
processorer
● Windows multiprocessorsystem har ready-köer för varje processor
● Det finns en kö för varje en av de 32 prioritetsnivåerna
● Istället för att kolla om varje kö är tom eller inte så sker en en-bits-skanning
för att hitta den högsta biten satt
○ Denna algoritm tar konstant tid
Kvantum
Kvantum
En tråd kör ett visst kvantum av tid
Om det inte finns en till tråd med samma prioritet som är Ready kör tråden
ytterliggare ett kvantum
På client-versionen av Windows kör en tråd i 2 klockintervaller
På server-versionen av Windows kör en tråd i 12 kockintervaller
Minimering av kontextändringar
Processorn bestämmer klockintervallet (cirka 15 millisekunder på x86 och x64
processorer)
Variabla kvantum
Om variabla kvantumet används kan en process få ett större kvantum när en av
dess trådar är i förgrunden
Kvantumet (2 eller 12) och variabla kvantum kan ställas in i Windowss Registry i
HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySepa
ration
Prioritetsboost
Prioritetsboost
Windows skedulerare använder sig av en prioritets-boost-mekanism
I många fall för att minska latency och öka responstiden
I andra fall för att inte processer ska svälta
När används prioritets-boosten?
När ett I/O event har avslutats
Windows ger temporära prioritets-boosts när I/O har gjorts
Denna boost ges till de trådar/processer som väntar på I/O
Större chans att de får köra snabbt
När GUI:n vaknar
När trådar som äger ett eget fönster vaknar ges de en boost
För att användaren så snabbt som möjligt ska kunna använda programmet
Vid svält
Om en process har varit i ready-kön mer än 4 sekunder sker en boost
Då ökar processens prioritet med 15
När processen har kört sitt kvantum får den samma prioritet som innan
Om den inte hann köras klart så kommer den vänta i ready-kön i 4 sekunder till
innan den får en ny boost
Kontext-byten
Kontext-byten
Beror på arkiteturen
Vanligtvis sparas:
Programpekare
Kernel stack pointer
Pekare till adressrymden
Detta läggs på kernel-stacken och kernel-stack-pekaren sparas i trådens
kontrollblock
Kernel-stack-pekaren sätts till den nya trådens kernel-stack-pekare och ett
kontext-byte utförs
Skeduleringsscenarier
Skeduleringsscenarier
När en process gör en frivillig switch
Genom t.ex. mutex, semafor m.m.
Processen går till wait state
Nästa process väljs från ready-kön
Processen som flyttas till wait state får inte lägre
prioritet, den flyttas bara till väntekön
Skeduleringsscenarier
Preemption
När en tråd med högre prioritets väntetid är slut
En tråds prioritet ökar eller minskas
Windows behöver bestämma om en ny tråd ska köras eller inte
Tråd med prioritet 18 avslutar sin väntetid
Den har högre prioritet än den som körs
Tråd med prioritet 18 swappas in och den som kördes
går tillbaka till första platsen i ready-kön
Skeduleringsscenarier
Tidskvantum avslutas
Windows bestämmer om trådens prioritet ska minskas eller inte
Om den minskas flyttas den till annan kö, annars längst bak i ready-kön
Windows bestämmer att trådens prioritet inte ska
minskas
Tråden sätts längst bak i ready-kön
Om trådens prioritet skulle ha minskats skulle den sättas
i den prioritetens ready-kö
Idle-Thread
Idle-Thread
Varje processor har sin egen Idle-tråd
Alla Idle-trådar tillhör en Idle-process
Idle-tråden kör när processorn inte har någon annan tråd att exekvera
Idle-tråden och Idle-processen har ID = 0 och prioritet 0
Idle-tråden står dock inte i Ready-kön och prioriteten används inte
Tråden har inte heller någon kod eller minne i user-space
Idle-Tråden
Exekvering:
1. Enable interrupts, deliver pending interrupts, disable interrupts
2. Kolla om en kernel-debugger vill komma åt systemet och ge den åtkomst
3. Kolla om DPC:er (Deferred Procedure Call) väntar
4. Kolla om någon tråd vill exekvera och dispatcha den tråden
5. Kolla om någon tråd vill köra på en annan processor och låt den köra på den
egna processorn
6. Kalla på “power management processor idle routine” för eventuell
System med flera processorer
System med en processor
På system med en processor skeduleras alltid den process med högst prioritet
som vill köra
System med flera processorer
På system med flera processorer försöker Windows att skedulera trådar baserat
på vilka processorer trådarna körde på förut och vilka processorer de föredrar
att köra på
Windows försöker att skedulera de trådar med högst prioritet på alla tillgängliga
processorer men garanterar bara att en av de trådar med högst prioritet körs
Windows grupperar ihop processorer i grupper med max. 64 processorer och
trådar tillåts “by default” bara att köra på processorer i sin egen grupp
Trådar ärver sin grupp från processen
Detta kan modifieras med diverse API:er och systemverktyg
Referenser
Referenser
Windows Internals Part 1 - Mark Russinovich et al.

More Related Content

Featured

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Schemaläggning i windows

  • 1. Skedulering i Windows Leslie Dahlberg, Jonathan Larsson
  • 3. Översikt av skedulering Prioriteter Preemption En tråd som ska köra kan bli preemptad av en tråd med högre prioritet Processor affinity Kvantum Systemets konfiguration (lång kvantum, kort kvantum, fix-storlek, variabel storlek) Background eller foreground
  • 4. Kernel dispatcher Skedulerarens kod ligger utspridd i kärnan Event som startar dispatchern Thread -> Ready Thread -> Slut på kvantumet || Terminate || Wait Thread -> Ändring av prioritet Thread -> Ändring av processor affinity Dispatchern väljer vilken tråd som ska köras på processorn näst Kontextbyte utförs
  • 6. Prioritetsnivåer 16 real-tidsnivåer (16 till 31) 15 variabla nivåer (1 till 15)
  • 7. Prioritetsnivåer 6 prioritetsklasser för processer 7 prioritetsklasser för trådar Idle och Time critical behåller sina värden förutom när det är Realtime
  • 8. Prioritetsnivåer När en tråd skapas så ärver den processens prioritet När en process skapas så ärver den prioriteten från den process som skapade den. Att ändra en process till Real-time kan vara farligt, vissa kritiska processer i windowskärnan körs där och OS:et kan frysa
  • 10. Ready Tråden väntar på att exekvera Dispatchern väljer bara bland trådar i detta tillstånd
  • 11. Deffered Ready Tråden ska köras men har inte startat ännu Minimerar låsningstiden på skedulerarens databas för en viss processor
  • 12. Standby Tråden ska köra näst på en viss processor När detta är möjligt utförs ett kontextbyte Bara en tråd kan finnas i standby för varje processor Tråden kan preemptas ur tillståndet
  • 13. Running Tråden exekverar Tills: Kvantumet är slut En tråd med högre prioritet preemptar den Den avslutas Den går in i ett frivilligt väntetillstånd
  • 14. Waiting Tråden väntar Väntar frivilligt på ett synkroniseringsobjekt OS väntar på I/O OS försätter tråden i ett väntetillstånd Efter väntan är slut: Endera fortsätter den att köra Eller så går till Ready
  • 15. Transition Tråden exekveras men det uppstår ett sidfel i kernel- stacken När sidan är inläst övergår tråden till Ready
  • 16. Terminated Tråden har avslutat Object manager avallokerar trådobjektet
  • 18.
  • 19.
  • 20.
  • 22. Dispatcher databas ● Datastrukturer för att bestämma skeduleringsbeslut ● Håller koll på vilka trådar som väntar och vilka trådar som körs i vilka processorer ● Windows multiprocessorsystem har ready-köer för varje processor ● Det finns en kö för varje en av de 32 prioritetsnivåerna ● Istället för att kolla om varje kö är tom eller inte så sker en en-bits-skanning för att hitta den högsta biten satt ○ Denna algoritm tar konstant tid
  • 24. Kvantum En tråd kör ett visst kvantum av tid Om det inte finns en till tråd med samma prioritet som är Ready kör tråden ytterliggare ett kvantum På client-versionen av Windows kör en tråd i 2 klockintervaller På server-versionen av Windows kör en tråd i 12 kockintervaller Minimering av kontextändringar Processorn bestämmer klockintervallet (cirka 15 millisekunder på x86 och x64 processorer)
  • 25. Variabla kvantum Om variabla kvantumet används kan en process få ett större kvantum när en av dess trådar är i förgrunden Kvantumet (2 eller 12) och variabla kvantum kan ställas in i Windowss Registry i HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySepa ration
  • 27. Prioritetsboost Windows skedulerare använder sig av en prioritets-boost-mekanism I många fall för att minska latency och öka responstiden I andra fall för att inte processer ska svälta
  • 29. När ett I/O event har avslutats Windows ger temporära prioritets-boosts när I/O har gjorts Denna boost ges till de trådar/processer som väntar på I/O Större chans att de får köra snabbt
  • 30. När GUI:n vaknar När trådar som äger ett eget fönster vaknar ges de en boost För att användaren så snabbt som möjligt ska kunna använda programmet
  • 31. Vid svält Om en process har varit i ready-kön mer än 4 sekunder sker en boost Då ökar processens prioritet med 15 När processen har kört sitt kvantum får den samma prioritet som innan Om den inte hann köras klart så kommer den vänta i ready-kön i 4 sekunder till innan den får en ny boost
  • 33. Kontext-byten Beror på arkiteturen Vanligtvis sparas: Programpekare Kernel stack pointer Pekare till adressrymden Detta läggs på kernel-stacken och kernel-stack-pekaren sparas i trådens kontrollblock Kernel-stack-pekaren sätts till den nya trådens kernel-stack-pekare och ett kontext-byte utförs
  • 35. Skeduleringsscenarier När en process gör en frivillig switch Genom t.ex. mutex, semafor m.m. Processen går till wait state Nästa process väljs från ready-kön Processen som flyttas till wait state får inte lägre prioritet, den flyttas bara till väntekön
  • 36. Skeduleringsscenarier Preemption När en tråd med högre prioritets väntetid är slut En tråds prioritet ökar eller minskas Windows behöver bestämma om en ny tråd ska köras eller inte Tråd med prioritet 18 avslutar sin väntetid Den har högre prioritet än den som körs Tråd med prioritet 18 swappas in och den som kördes går tillbaka till första platsen i ready-kön
  • 37. Skeduleringsscenarier Tidskvantum avslutas Windows bestämmer om trådens prioritet ska minskas eller inte Om den minskas flyttas den till annan kö, annars längst bak i ready-kön Windows bestämmer att trådens prioritet inte ska minskas Tråden sätts längst bak i ready-kön Om trådens prioritet skulle ha minskats skulle den sättas i den prioritetens ready-kö
  • 39. Idle-Thread Varje processor har sin egen Idle-tråd Alla Idle-trådar tillhör en Idle-process Idle-tråden kör när processorn inte har någon annan tråd att exekvera Idle-tråden och Idle-processen har ID = 0 och prioritet 0 Idle-tråden står dock inte i Ready-kön och prioriteten används inte Tråden har inte heller någon kod eller minne i user-space
  • 40. Idle-Tråden Exekvering: 1. Enable interrupts, deliver pending interrupts, disable interrupts 2. Kolla om en kernel-debugger vill komma åt systemet och ge den åtkomst 3. Kolla om DPC:er (Deferred Procedure Call) väntar 4. Kolla om någon tråd vill exekvera och dispatcha den tråden 5. Kolla om någon tråd vill köra på en annan processor och låt den köra på den egna processorn 6. Kalla på “power management processor idle routine” för eventuell
  • 41. System med flera processorer
  • 42. System med en processor På system med en processor skeduleras alltid den process med högst prioritet som vill köra
  • 43. System med flera processorer På system med flera processorer försöker Windows att skedulera trådar baserat på vilka processorer trådarna körde på förut och vilka processorer de föredrar att köra på Windows försöker att skedulera de trådar med högst prioritet på alla tillgängliga processorer men garanterar bara att en av de trådar med högst prioritet körs Windows grupperar ihop processorer i grupper med max. 64 processorer och trådar tillåts “by default” bara att köra på processorer i sin egen grupp Trådar ärver sin grupp från processen Detta kan modifieras med diverse API:er och systemverktyg
  • 45. Referenser Windows Internals Part 1 - Mark Russinovich et al.