Operációs Rendszerek - 2. rész

 Folyamatok

Tartalom

  • Bevezetés
  • Folyamatkezelés multiprogramozott rendszerekben
  • Átkapcsolás egyik folyamatról a másikra (környezetváltás)    
  • Folyamatleírók, I/O leírók
  • Szálak
  • A megszakítások kezelése
Bevezetés

  • A folyamat alapfogalom
  • A folyamatokat (process) nevezik még munkának (job) vagy feladatnak (task) is
  • A rendszerben egyszerre több feladat végrehajtása is zajlik, de a CPU-n (egymagos) egy időben egyszerre csak egy folyamat futhat
  • A multiprogramozott rendszerekben a CPU a kitüntettet erőforrás
  • Egy folyamat életciklusát az úgynevezett állapot-átmeneti gráffal írhatjuk le
Folyamatok

Folyamatok modellezése

  • Multiprogramozott rendszerek (1 PC)
  • Valódi párhuzamos rendszerek (4 PC)
  • Folyamatok időbeli eloszlása multiprogramozott  rendszerekben
Folyamatok állapotai 

  • Több folyamat, egy CPU -> látszólagos párhuzamosság
  • CPU kitüntettet erőforrás, egy adott pillanatban csak egy program hajtódik végre
  • Gráffal lehet ábrázolni
Állapot-átmeneti gráf:     

Folyamat létrejön
  • A folyamatot egy másik folymat létrehozza
    • A folyamatok szülő-gyermek hierarchiáját tárolni kell
  • A folyamatoknak erőforrásokra van szüksége
    • A szülő folyamattal is osztozhat
  • A szülővel kommunikálhat, paramétereket kaphat tőle
  • A szülőfolyamat bevárhatja a gyerekfolyamatot
Mikor jön létre egy folyamat?
  • A rendszer elindításakor (boot)
    • Például a felhasználói interfészek, démonok
  • Folyamatot létrehozó rendszerhívás hatására
    • Egy folyamat gyermekfolyamatot hozhat létre
      • Hierarchia (Unix ): Proccess Group
      • Minden folyamat egyedi (Windows)
    • Felhasználó
  • Program indítása
  • Új batch-job indítása
    • Kötegelt rendszereknél OS dönti el, mikor kezdhet el futni egy új munka
Futásra kész (Ready)
  • Minden feltétel adott, hogy a folyamat futhasson, de egy másik folyamat használja a CPU-t 
  • Több folyamat is várkozhat a CPU-ra 
Futásra kész -> Fut
  • A CPU felszabadulásakor az operációs rendszer valamilyen kritériumok alapján kiválaszt egy folyamatot és a várakozási sorból és elindítja
    • Prioritás
    • Várakozás ideje
    • Lásd 4. rész
Fut    
  • A folyamat használja a CPU-t
  • A CPU a folyamatokhoz tartozó utasításokat hajtja végre, CPU-nként egyetlen ilyen folyamat lehet
Folyamat megszünik
  • A folyamat befejeződik, ha az utolsó utasítást is végrehajtotta
  • A folyamat leállítható egyéb okok miatt (túl sok erőforrást használ, nincs rá szükség többé, ...)
    • Operációs rendszer
    • Szülő folyamat
    • Felhasználó
  • A folyamat által használt erőforrások felszabadulnak
    • Attól függően, hogy kitől kapta felszabadul vagy szülőhőz kerül
  • Megszünő folyamat információt adhat vissza a szülő folyamatnak
Fut -> futásra kész
  • Az operációs rendszer elveheti a processzort a folyamattól
    • Időosztásos rendszerek
    • Megszakítások
  • A folyamat önként is lemondhat a CPU-ról
    • Tipikusan statisztikákat gyüjtő folyamatok
Fut-> Várakozik
  •  A folyamatnak a tevékenysége folytatásához várnia valamire eseményre
    • Erőforrás
    • Periféria
    • Információ másik folyamattól
  • Az operációs rendszer feljegyzi, hogy a folyamat mire vár
  • Több folyamat is várakozhat ugyanarra az eseményre (például népszerű erőforrás)
Várakozik (blocked)
  • A folyamat valamilyen külső vagy belső esemény bekövetlezését várja
    • Például: periféria átvitel, erőforrás felszabadulása
  • Több ilyen is lehet a rendszerben
Várakozik -> Futásra kész
  • Bekövetkezik az esemény, amire a folyamat várt
  • Az operációs rendszer megváltoztatja a folyamat állapotát
  • A folyamat bekerűl a várakozási sorba
Állapotátmenetek
  • A folyamat kezdeményezésre létrejövő átmenetek
    • Fut -> Várakozik
    • Fut -> Futásra kész (nem mindig)
  • A folyamaton kívül álló okok miatt létrejövő átmenetek
    • Minden átmenet kivéve a Fut-> Várakozik átmenet
További lehetséges állapotok
  • Az operációs rendszer felfüggeszthet (suspend) folyamatokat, elveszi az elvehető erőforrásokat
    • A rendszer túl van terhelve
      • Túl sok folyamat verseng a CPU-ért
      • A rendszer fontosabb erőforrásai (pl. memória) túl foglaltak
    • Vészhelyzet esetén (pl. kimarad a tápfeszültség)
    • A felhasználó kérésére (egyelőre nincs szükség a folyamatra)
  • A felfüggesztett folyamatok nem versengenek az erőforrásokért 
  • A folyamatok bármikor folytathatók
További lehetséges beállítások
  • Megvalósítható  lenne egyetlen felfügesztett állapottal 
    • Csak a futásra kész folyamtokhoz létezne felfüggesztett állapot 
    • A várakozó folyamatokat csak azután lehetne felfüggeszteni, ha az esemény bekövetkezett
    • Probléma: az esemény nem biztos, hogy belátható időn belül bekövetkezik
      • Például: egy felfüggesztett folyamattól váe információra
Állapotmenetek
  • Felfüggeszt
    • Az operációs rendszer várakozik állapotból függesztheti fel a folyamatot
    • A felfügesztett folyamattól a fontosabb (és elvehető) erőforrásokat elveszi
      • Memóriát elveszi
        • Tartalmát kiirja háttértárra
      • Nyomtatót nem
  • Aktivál
    • A felfüggesztett folyamat visszakapja az erőforrásait
    • Felfüggesztve várakozó folyamatot a rendszer nem aktivál, mivel az továbbra sem futhat, de az erőforrásokat foglalja
      • Rendszer feleslegesen dolgozna, ha az éppen aktivált folyamatot újra fel kellene függeszteni
  • Felfüggesztve várakozik -> Felfüggesztve futásra kész
    • A Várakozik -> Futásra kész átmenet analógiája
    • Akkor is bekövetkezhet a várt esemény, ha a folyamat éppen felfüggesztett állapotban van
Folyamatkezelés

Unix állapot-átmeneti gráf



  • Új folyamatot fork rendszerhívással lehet létrehozni -> folyamat kezdeti állapotba kerül 
  • Végrehajtódnak a legfontosabb inicializálások, majd a fork lefutása után a folyamat készen áll a futásra
    • Ezt az állapotot jelöli a futásra kész állapot
  • Innen egy környezetváltozással  (switch rendszerhívás) kernel fut állapotba kerül 
  • Kernel fut  állapotban a rendszer beállításokat végez 
    • Egy frissen létrejött folyamat a rendszerhívás befejeződése után átlép a user fut állapotba
  • User módban futó folyamat rendszerhívás vagy megszakítás hatására léphet át a kernel fut állapotba 
    • A rendszerhívásból vagy a mehógszakításból való visszatérés után léphet vissza user fut állapotba
Állapot-átmeneti gráf
  • Amikor egy folyamat befejezi a futását és végrehajtja az exit rendszerhívást, átlép a zombi állapotba 
  • A zombi állapotban a folyamat
    • Felszabadította a foglalt memóriát 
    • Lezárta az állományokat
    • Minden erőfottását visszaadta a rendszernek
    • Visszatérési és statisztikai információkat tárol a szülő számára 
  • A szülő eait rendszerhívásának hatására a folyamat véglegesen kilép az állapot-átmeneti gráfból, a folyamat teljesen megszűnik létezni
  • Amikor egy folyamatnak valamilyen erőforrásra kell várakoznia, akkor kiad egy sleep rendszerhívást és alvó állapotba megy
  • Az alvó állapotból a várt esemény bekövetkezése által kiváltott wakeup rendszerhívás hatására a folyamat átlép a futásra kész állapotba 
  • Kernel fut állapotban a rendszer beállításokat végez 
    • Egy frissen létrejött folyamat a rendszerhívás befejeződése után átlép user fut állapotba 
  • User módban futó folyamat rendszerhívás vagy megszakítás hatására léphet át kernel fut állapotba 
    • A rendszerhívásból vagy a megszakításból vaéó visszatérés után léphet vissza a user fut állapotba
Folyamatok

Környezetváltás

Átkapcsolás folyamatok között
  • A CPU-n az egyik folyamatról átkapcsolunk egy másikra
  • Minden információt meg kell őrizni ami a folyamat folytatásához kell
    • Saját állapotjellemzők
    • Végrehajtó gép állapotjellemzői
Saját állapotjellemzők
  • Programkód
  • Változók értékei
  • Verem értéke
    • A programban minden eljérés hívásakor a vermet használjuk a paraméterek átadásához
  • Programszámláló
    • Hol tart a program
A végrehajtó gép állapota 
  • A rétegszerkezett összetettségétől is függ a virtuális végrehajtó gép
    • Ha a folyamat kódja csak gépi utasításokat tartalmaz, akkor hardver
      • CPU regiszterek (minimálisan)
    • Általában az operációs rendszer szolgáltatásait is tartalmazza a határfelület
      • Rendszertáblázatok
      • Memóriakezelési információk
Környezetváltás (context switch)
  • Akkor hatékony a rendszer ha a átkapcsolás gyors
  • Több folyamatnak van hely a memóriában
    • A tár (memória) tartalma nem változik -> a saját állapotjelzőket nem kell elmenteni
    • Csak a végrehajtó gép állapota kerül elmentésre
  • A végrehajtó gép állapotát környezetnek nevezzük, az állapotváltást pedig környezetváltásnak
Folyamatleírók, I/O leírók

Bevezetés
  • Az operációs rendszer a folyamatok kezeléséhez szükséges információkat egy úgynevezett folyamatleíróban tárolja 
    • Folyamatleírók (Process Control Block, PCB)
    • I/O leírók (Input Output Controll Block, IOCB)
Folyamatleíró blokk
  • A folyamat állapota (futásra kész, fut, ...)
  • A folyamat azonosítója (általában egy szám)
  • A folyamat szülőjének és gyermek azonosítója
  • A kapcsolódó tárterületek leírása (mutatók, virtuális tárkezeléshez szükséges információk, ...)
  • A használt erőforrások leírása
  • A regiszterek tartalma
  • Várakozó folyamatnál a várt esemény leírása
  • Ütemezéshez szükséges információk (priorítás, ...)
  • Statisztikai információk
I/O leíró blokk
  • AZ I/O müvelet végrehajtásához tartozó adatok 
    • Müvelet kijelölése
      • Írás, Olvasás
    • Tárterület címe
      • Ahonnan/ahova a művelet végrehajtandó
    • I/O készülék egyéb adatai
      • Mágneslemez szektorcíme
    • Átvivendő adatmennyiség
    • Állapotjelző

Folyamatok

Szálak
  • A folyamatokhoz hasonló fogalom az entitás
  • Pehelysulyú folyamatnak (lightweight process) is nevezik
  • Kevesebb adat kell a kezeléséhez
    • Csak saját regiszterei és verme van
    • A többi közös más szálakkal
    • Futási környete egy folyamat, ez a tulajdonosa az erőforrásnak, amit közösen használ a többi szállal
  • Nagyon gyors a szálak közötti információcsere és környezetváltás
  • Állapot-átmeneti gráfja megegyezik a folyamatoknál tárgyalttal
Szálak és folyamatok
  • Három folyamat egy-egy szállal
  • Egy folyamat három szállal




Példa szövegszerkesztő
  • Billentyűzet-kezelő szál
  • Tördelő szál
  • Automatikus mentés szál
Megszakítások kezelése

Megszakítás
  • Olyan esemény, jelzés, mely a folyamatok működését befolyásolja
  • Megszakítási osztályok
    • Periféria megszakítások (átvitel befejezése, periféria állapotának megváltozása)
  • Belső hardver megszakítások (Belső óramegszakítás)
  • Utasítás végrehajtási hibák (nullával való osztás, ...)
  • Komoly hardver meghibásodások, tápfeszültség kimaradása
  • Szoftver megszakítások (rendszerhívások)
A megszakítás kiszolgálásának lépései
  • A futó folyamat megszakad
  • A megszakított folyamat elmetésre kerül
    • Hardver támogatás is van
  • A vezérlést a kiszolgáló rutin kapja meg
  • Az elmentett állapot visszatöltése után a megszakított (vagy egy másik) folyamat folytatja a működést
Megszakítás kiszolgálása
  • Környezetváltás nélkül
    • Felfüggesztére kerül az éppen futó folyamat
    • A megszakítás kiszolgálása után a felfüggesztett folyamat fut tovább 
    • Nincs szükség környezetváltásra, csak a kiszolgáló rutin által használt regisztereket mentjük el
  • Környezetváltással
    • A megszakítás környezetváltással jár
    • A futó folyamat futásra kész állapotba kerül
Megszakítás
  • A nagy erőforrás-igénylő pollozás-t váltja ki
    • Pollozás: egy adott jellemző változásának figyelése az adatok folyamamtos újrakérésén és az elöző állapottal történő összehasonlításával
  • A megszakításoknak prioritása van
  • Nagyobb prioritású megszakítás megszakíthatja egy kisebb prioritású kiszolgálását
  • A megszakításokat a rendszer rövid időre letilthatja 
    • Csak rövid időre, mert a megszakítások fontos eseményeket jeleznek
      • Például egyes perifériákat adott idő alatt ki kell szolgálni, különben elvész az információ