Wat is Contextomschakeling in het besturingssysteem?

Contextomschakeling houdt in dat de context of toestand van een proces wordt opgeslagen, zodat deze indien nodig opnieuw kan worden geladen en de uitvoering kan worden hervat vanaf hetzelfde punt als eerder. Dit is een kenmerk van een multitasking besturingssysteem en maakt het mogelijk dat een enkele CPU door meerdere processen wordt gedeeld.

Een diagram dat context switching demonstreert is als volgt –

In het bovenstaande diagram draait in eerste instantie Proces 1. Proces 1 wordt uitgeschakeld en Proces 2 wordt ingeschakeld als gevolg van een interrupt of een systeemaanroep. Context switching houdt in dat de toestand van proces 1 wordt opgeslagen in PCB1 en dat de toestand van proces 2 wordt geladen vanuit PCB2. Na enige tijd vindt er weer een context switch plaats en wordt proces 2 uitgeschakeld en proces 1 weer ingeschakeld. Hierbij wordt de toestand van proces 2 opgeslagen in PCB2 en de toestand van proces 1 geladen vanuit PCB1.

Context Switching Triggers

Er zijn drie belangrijke triggers voor context switching. Deze zijn als volgt –

  • Multitasking: In een multitasking-omgeving wordt een proces uit de CPU geschakeld zodat een ander proces kan worden uitgevoerd. De status van het oude proces wordt opgeslagen en de status van het nieuwe proces wordt geladen. Op een preëmptief systeem kunnen processen door de scheduler worden uitgeschakeld.

  • Interruptafhandeling: De hardware schakelt een deel van de context wanneer een interrupt optreedt. Dit gebeurt automatisch. Slechts een deel van de context wordt gewijzigd om de tijd die nodig is voor het afhandelen van de interrupt te minimaliseren.

  • Omschakeling tussen gebruikersmodus en kernelmodus: Een contextomschakeling kan plaatsvinden wanneer in het besturingssysteem een overgang tussen de gebruikersmodus en de kernelmodus is vereist.

Stappen voor contextomschakeling

De stappen voor contextomschakeling zijn als volgt –

  • Bewaar de context van het proces dat momenteel op de CPU draait. Werk het procesbesturingsblok en andere belangrijke velden bij.
  • Verplaats het procesbesturingsblok van het bovenstaande proces naar de relevante wachtrij, zoals de gereed-wachtrij, I/O-wachtrij enz.
  • Selecteer een nieuw proces voor uitvoering.
  • Update het procesbesturingsblok van het geselecteerde proces. Dit omvat het bijwerken van de processtatus naar lopend.
  • De geheugenbeheer-gegevensstructuren bijwerken zoals vereist.
  • De context van het proces dat eerder actief was, herstellen wanneer het opnieuw op de processor wordt geladen. Dit wordt gedaan door de vorige waarden van het procesbesturingsblok en registers te laden.

Contextschakelkosten

Contextschakelen leidt tot overheadkosten vanwege TLB flushes, het delen van de cache tussen meerdere taken, het draaien van de taakplanner, enz. Context switching tussen twee threads van hetzelfde proces is sneller dan tussen twee verschillende processen omdat threads dezelfde virtuele geheugenmappen hebben. Hierdoor is TLB flushen niet nodig.

raja

Gepubliceerd op 28-Sep-2018 15:31:15

Advertenties

Leave a Reply