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.
Leave a Reply