logo

Kontextusváltás az operációs rendszerben (operációs rendszer)

A kontextusváltás egy olyan technika vagy módszer, amelyet az operációs rendszer használ a folyamat egyik állapotból a másikba való átkapcsolására, hogy a rendszerben lévő CPU-k segítségével végrehajtsa funkcióját. A rendszerben végrehajtott váltáskor a régi futó folyamat állapotát eltárolja regiszterek formájában, és a CPU-t egy új folyamathoz rendeli a feladatai végrehajtásához. Amíg egy új folyamat fut a rendszerben, az előző folyamatnak egy készenléti sorban kell várnia. A régi folyamat végrehajtása azon a ponton kezdődik, ahol egy másik folyamat leállította. Meghatározza a többfeladatos operációs rendszer jellemzőit, amelyben több folyamat osztozik ugyanazon a CPU-n, hogy több feladatot hajtson végre anélkül, hogy a rendszerben további processzorokra lenne szükség.

A kontextusváltás szükségessége

A kontextusváltás segít egyetlen CPU megosztásában az összes folyamat között, hogy befejezze annak végrehajtását és tárolja a rendszer feladatállapotát. Amikor a folyamat újratöltődik a rendszerben, a folyamat végrehajtása ugyanott kezdődik, ahol ütközés van.

Az alábbiakban felsoroljuk azokat az okokat, amelyek leírják a környezetváltás szükségességét az operációs rendszerben.

  1. Az egyik folyamat átváltása egy másik folyamatra nem közvetlenül a rendszerben történik. A kontextusváltás segíti a több folyamat között váltogató operációs rendszert, hogy a CPU erőforrásait használja feladatai végrehajtásához és kontextusának tárolásához. Később ugyanitt folytathatjuk a folyamat szolgáltatását. Ha nem tároljuk az éppen futó folyamat adatait vagy kontextusát, a tárolt adatok elveszhetnek a folyamatok közötti váltás során.
  2. Ha egy magas prioritású folyamat a készenléti sorba kerül, az éppen futó folyamatot leállítja vagy leállítja egy magas prioritású folyamat, hogy elvégezze a rendszerben lévő feladatait.
  3. Ha bármely futó folyamat I/O erőforrásokat igényel a rendszerben, akkor az aktuális folyamatot egy másik folyamat váltja át a CPU-k használatához. És amikor az I/O követelmény teljesül, a régi folyamat készenléti állapotba kerül, hogy megvárja a végrehajtását a CPU-ban. A kontextusváltás eltárolja a folyamat állapotát, hogy folytassa a feladatokat az operációs rendszerben. Ellenkező esetben a folyamatnak újra kell indítania a végrehajtást a kezdeti szintről.
  4. Ha bármilyen megszakítás történik egy folyamat futtatása közben az operációs rendszerben, a folyamat állapota kontextusváltással regiszterekként kerül mentésre. A megszakítások feloldása után a folyamat várakozási állapotból kész állapotba vált, hogy később ugyanabban a pontban folytassa a végrehajtást, ahol az operációs rendszer megszakadt.
  5. A kontextusváltás lehetővé teszi, hogy egyetlen CPU több folyamatkérést kezeljen egyidejűleg anélkül, hogy további processzorokra lenne szükség.

Példa kontextusváltásra

Tegyük fel, hogy több folyamat van tárolva egy folyamatvezérlő blokkban (PCB). Az egyik folyamat a futási állapot CPU-k használatával hajtja végre a feladatát. A folyamat futása közben egy másik folyamat érkezik a készenléti sorba, amelynek nagy prioritása van, hogy a feladatát CPU használatával fejezze be. Itt kontextusváltást használtunk, amely átkapcsolja az aktuális folyamatot az új folyamatra, amely megköveteli a CPU-tól a feladatok elvégzéséhez. A folyamat váltása közben egy kontextuskapcsoló a régi folyamat állapotát regiszterekbe menti. Amikor a folyamat újra betöltődik a CPU-ba, akkor elindítja a folyamat végrehajtását, amikor az új folyamat leállítja a régi folyamatot. Ha nem mentjük el a folyamat állapotát, akkor a végrehajtását a kezdeti szinten kell elkezdenünk. Ily módon a kontextusváltás segíti az operációs rendszert a folyamatok közötti váltásban, a folyamat tárolásában vagy újratöltésében, amikor feladatainak végrehajtását igényli.

Kontextusváltás triggerek

Az alábbiakban a kontextusváltás triggereinek három típusa látható.

  1. Megszakítja
  2. Többfeladatos
  3. Kernel/Felhasználó kapcsoló

Megszakítja : A CPU kéri az adatok lemezről történő olvasását, és ha megszakítások vannak, a kontextusváltó automatikus átkapcsolja a hardver egy részét, amely kevesebb időt igényel a megszakítások kezelésére.

Többfeladatos : A kontextusváltás a multitasking jellemzője, amely lehetővé teszi a folyamat átkapcsolását a CPU-ról, hogy egy másik folyamatot lehessen futtatni. A folyamat váltásakor a rendszer elmenti a régi állapotot, hogy a folyamat végrehajtása a rendszer ugyanazon a pontján folytatódjon.

Kernel/Felhasználó kapcsoló : Az operációs rendszerekben használatos a felhasználói mód és a kernel/felhasználói mód közötti váltáskor.

Mi az a PCB?

A PCB (Process Control Block) egy adatstruktúra, amelyet az operációs rendszerben használnak a folyamathoz kapcsolódó összes adat információ tárolására. Például, amikor egy folyamat létrejön az operációs rendszerben, a folyamat frissített információi, a folyamat kapcsolási információi, a folyamat befejeződött a PCB-n.

A kontextusváltás lépései

A folyamatok kontextusváltása több lépésből áll. A következő diagram két folyamat, a P1-ről a P2-re történő kontextusváltását mutatja be, amikor megszakításra, I/O-ra van szükség vagy prioritás-alapú folyamatra kerül sor a PCB készenléti sorában.

Mi a környezetváltás az operációs rendszerben

Amint az ábrán látható, kezdetben a P1 folyamat fut a CPU-n, hogy végrehajtsa a feladatát, ugyanakkor egy másik folyamat, a P2, készenléti állapotban van. Ha hiba vagy megszakítás történt, vagy a folyamat bevitelt/kimenetet igényel, a P1 folyamat futásról várakozó állapotra vált. A P1 folyamat állapotának megváltoztatása előtt a kontextusváltás elmenti a P1 folyamat kontextusát regiszterek formájában és a program ellentétes PCB1 . Ezt követően betölti a P2 folyamat állapotát a kész állapotból PCB2 futó állapotba.

A P1 folyamat 2. folyamatra váltásakor a következő lépéseket kell végrehajtani:

  1. Először is, a kontextusváltásnak el kell mentenie a P1 folyamat állapotát a programszámláló és a regiszterek formájában a futó állapotban lévő PCB-re (Program Counter Block).
  2. Most frissítse a PCB1-et a P1 feldolgozására, és a folyamatot áthelyezi a megfelelő sorba, például a készenléti sorba, az I/O-sorba és a várakozási sorba.
  3. Ezt követően egy másik processz kerül futási állapotba, vagy a kész állapotból választhatunk ki egy új folyamatot, amelyet végre kell hajtani, vagy a folyamatnak nagy prioritása van a feladat végrehajtásához.
  4. Most frissítenünk kell a PCB-t (Process Control Block) a kiválasztott P2 folyamathoz. Ez magában foglalja a folyamatállapot átkapcsolását kész állapotról futó állapotra vagy más állapotról, például blokkolt, kilépés vagy felfüggesztés.
  5. Ha a CPU már végrehajtja a P2 folyamatot, akkor meg kell szereznünk a P2 folyamat állapotát, hogy a végrehajtás ugyanabban az időpontban folytatódjon, ahol a rendszer megszakítása történik.

Hasonlóképpen a P2 folyamat le van kapcsolva a CPU-ból, így a P1 folyamat folytathatja a végrehajtást. A P1 folyamat újratöltődik a PCB1-ről a futó állapotba, hogy ugyanabban a pontban folytassa a feladatát. Ellenkező esetben az információ elveszik, és amikor a folyamat újra végrehajtódik, a végrehajtás a kezdeti szinten kezdődik.