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
- 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 modellezése
- Multiprogramozott rendszerek (1 PC)
- Valódi párhuzamos rendszerek (4 PC)
- Folyamatok időbeli eloszlása multiprogramozott rendszerekben
- 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
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
- 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
- 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
- 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
- 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
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
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
- 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
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
- 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 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
- 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
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)
- 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
- 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
- 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á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 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
- 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
- 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ó