Mi az a kontextusváltás az operációs rendszerben?

A kontextusváltás egy folyamat kontextusának vagy állapotának tárolását jelenti, hogy az szükség esetén újra betölthető legyen, és a végrehajtás a korábbi pontról folytatódhasson. Ez a többfeladatos operációs rendszer egyik jellemzője, és lehetővé teszi, hogy egyetlen processzoron több folyamat osztozzon.

A kontextusváltást szemléltető ábra a következő –

A fenti ábrán kezdetben az 1. folyamat fut. Egy megszakítás vagy rendszerhívás miatt az 1. folyamat kikapcsol, és a 2. folyamat bekapcsol. A kontextusváltás során az 1. folyamat állapotát a PCB1-be mentjük, a 2. folyamat állapotát pedig a PCB2-ből töltjük be. Egy idő után ismét kontextusváltás következik be, és a Process 2 kikapcsolódik, a Process 1 pedig ismét bekapcsolódik. Ennek során a Process 2 állapotát a PCB2-be mentjük és a Process 1 állapotát betöltjük a PCB1-ből.

Kontextusváltás kiváltó okok

A kontextusváltásnak három fő kiváltó oka van. Ezek a következők –

  • Multitasking: Multitasking környezetben egy folyamatot ki kell kapcsolni a CPU-ból, hogy egy másik folyamat futtatható legyen. A régi folyamat állapota elmentésre kerül, és az új folyamat állapota betöltődik. Preemptív rendszerben a folyamatokat az ütemező kapcsolhatja ki.

  • Megszakításkezelés: A hardver megszakítás esetén a kontextus egy részét átkapcsolja. Ez automatikusan történik. A megszakítás kezeléséhez szükséges idő minimalizálása érdekében a kontextusnak csak egy része változik meg.

  • Kezelői és kernelmód váltás: Kontextusváltásra akkor kerülhet sor, ha az operációs rendszerben átmenetre van szükség a felhasználói és a kernelmód között.

A kontextusváltás lépései

A kontextusváltás lépései a következők –

  • Mentse a CPU-n jelenleg futó folyamat kontextusát. A folyamatvezérlő blokk és más fontos mezők frissítése.
  • A fenti folyamat folyamatvezérlő blokkjának áthelyezése a megfelelő sorba, például a készenléti sorba, az I/O sorba stb.
  • Új folyamat kiválasztása a végrehajtáshoz.
  • A kiválasztott folyamat folyamatvezérlő blokkjának frissítése. Ez magában foglalja a folyamat állapotának frissítését futó állapotra.
  • A memóriakezelő adatstruktúrák frissítése szükség szerint.
  • A korábban futó folyamat kontextusának visszaállítása, amikor az újra betöltődik a processzorra. Ez a folyamatvezérlő blokk és a regiszterek korábbi értékeinek betöltésével történik.

Kontextusváltás költsége

A kontextusváltás a TLB öblítések, a gyorsítótár több feladat közötti megosztása, a feladatütemező futtatása stb. miatt rezsiköltséggel jár. Az ugyanazon folyamat két szála közötti kontextusváltás gyorsabb, mint két különböző folyamat között, mivel a szálak azonos virtuális memóriatérképekkel rendelkeznek. Emiatt nincs szükség TLB flushingre.

raja

Megjelent: 28-Sep-2018 15:31:15

Hirdetések

Leave a Reply