Operációs rendszerek. Folyamatok kezelése a UNIX-ban



Hasonló dokumentumok
Operációs rendszerek. A Windows NT

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

(kernel3d vizualizáció: kernel245_graph.mpg)

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek. Az NT folyamatok kezelése

Operációs rendszerek Folyamatok 1.1

Operációs rendszerek III.

Az operációs rendszer szerkezete, szolgáltatásai

Operációs rendszerek. Bemutatkozás

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Operációs rendszerek MINB240

Matematikai és Informatikai Intézet. 4. Folyamatok

Előadás_#02. Előadás_02-1 -

Operációs Rendszerek II.

Operációs rendszerek. Az NT memóriakezelése

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Bevezetés a számítástechnikába

Operációs rendszerek. UNIX fájlrendszer

Számítógépek felépítése

Architektúra, megszakítási rendszerek

Az interrupt Benesóczky Zoltán 2004

A mai program OPERÁCIÓS RENDSZEREK. A probléma. Fogalmak. Mit várunk el? Tágítjuk a problémát: ütemezési szintek

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Konkurens TCP Szerver

Utolsó módosítás:

Elosztott rendszerek

Operációs rendszerek

Digitális rendszerek. Utasításarchitektúra szintje

Bevezetés az informatikába

Operációs rendszerek

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Operációs rendszerek II. Folyamatok ütemezése

Utolsó módosítás:

Operációs rendszerek. A Windows NT felépítése

A Számítógépek hardver elemei

OPERÁCIÓS RENDSZEREK. A mai program. A CPU által végrehajtott instrukciófolyam. A folyamat kontextus, processz menedzsment, processz állapotok

Számítógépes alapismeretek

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

ARM (Advanced RISC Machine)

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Számítógép architektúrák

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Operációs rendszerek. Folyamatok

Memória és perifériák virtualizációja. Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Utolsó módosítás:

Operációs rendszerek

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Operációs Rendszerek II.

A Számítógépek hardver elemei

Programozás alapjai. 10. előadás

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Programozás I gyakorlat

Alternatív processz állapot és statisztika lekérdezési módszer a Linux kernelben

Operációs rendszerek Memóriakezelés 1.1

Ütemezés (Scheduling),

Mikrorendszerek tervezése

OPERÁCIÓS RENDSZEREK. A mai program. Fogalmak. Ütemezés és a Context Switch

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Informatikai rendszerek alapjai (Informatika I.)

Operációs rendszerek. Folyamatok ütemezése

OPERÁCIÓS RENDSZEREK. A mai program. Hiba és eseménykezelés. Alapfogalmak. Eseménykezelés, szignálozás

Dr. Illés Zoltán

Pénzügyi algoritmusok

Programozási nyelvek Java

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

8. Memória management

Utolsó módosítás:

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

OPERÁCIÓS RENDSZEREK. Elmélet

Ütemezés (Scheduling),

OPERÁCIÓS RENDSZEREK. Célkitűzések, tárgyfelépítés. Módszerek. OS fogalom, struktúrák. 2005/2006. tanév II. félév Dr. Vadász Dénes

Operációs rendszerek. Történet

Operációs rendszerek. Windows NT. A Windows NT

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Számítógép Architektúrák

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Nem biztos, hogy mindenhol helytáll, helyenként hiányos, de az eddigi kérdések össze vannak gyűjtve őszi félév első zhval bezárólag.

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Mikrorendszerek tervezése

Máté: Számítógép architektúrák

Programok, statikus linkelés

UNIX folyamatok kommunikációja

Operációs rendszerek II. jegyzet

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

Utolsó módosítás:

Processzus. Operációs rendszerek MINB240. Memória gazdálkodás. Operációs rendszer néhány célja előadás Memóriakezelés

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Java programozási nyelv 9. rész Kivételkezelés

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Folyamatok. 6. előadás

Operációs rendszerek. A védelem célja. A fenyegetés forrásai. Védelmi tartományok. Belső biztonság. Tartalom

A Számítógépek felépítése, mőködési módjai

Operációs rendszerek 1.

386 processzor címzés

Átírás:

Operációs rendszerek Folyamatok kezelése a UNIX-ban

Folyamatok a UNIX-ban A folyamat: multiprogramozott operációs rendszer alapfogalma - absztrakt fogalom. A gyakorlati kép: egy program végrehajtása és a végrehajtási környezet biztosítása. A folyamat virtuálisan egyedül fut a rendelkezésre álló hardveren. Hardver erőforrások elérése: az operációs rendszeren keresztül. Műveletek: erőforrás igénylés, várakozás. Operációs rendszer feladata: összehangolja az egyes folyamatok perifériás műveleteit, elosztja a rendelkezésre álló hardver erőforrásokat.

Felhasználói folyamatok Folyamatonkénti 1 szülő és 1 vagy több gyerek (fork). Az ősszülő az init, a rendszer indulásakor jön létre. Az árva folyamatokat az init örökli. Könnyűsúlyú folyamatoknál csak részleges környezetváltás van (stack terület)!

Folyamatok állapot-átmeneti diagramja

Folyamatok állapot-átmeneti diagramja IT, IT return zombi állapot Preempted EXIT rsz hívás Scheduler OUT Ready to run Scheduler IN Kernel Running Wake Up IT, rsz hívás RETURN sleep Asleep in memory User Running SIGNAL ELLENŐRZÉS stop fork Created SW in/out Swap Out Swapped Ready to run Wake Up Asleep and Swapped

azaz:

Folyamatok állapot-átmeneti diagramja II. Új folyamat keletkezése: fork() rendszerhívás: gyermek folyamatnak: fork() visszatérési értéke: 0, szülő folyamatnak: fork() visszatérési értéke: gyerek PID-je. Ősfolyamat: init (PID=0). Scheduler (ütemező, PID=1).

Folyamat indulása int result=fork(); if(result==0)/*visszatérési érték vizsgálata*/ { printf("gyermek VAGYOK"); exec("gyermek_kód",...); /*a gyermek végrehajtása*/ } else { if(result<0) { printf("hiba"); } } else { printf("anya proc:gyermekem PID-je:%d",result); /*ha a visszatérési érték >0, kiírja */ }

Folyamatok állapotai I. Created (létrehozott) állapot. Ready to run (futásra kész) állapot. Kernel running. User running. Asleep in memory (memóriában alvó): sleep rendszerhívás, wake up átmenet.

Folyamatok állapotai II. Swapped out: swapped out and asleep, swapped out and ready to run. Preemptív ütemezés: kernel running ready to run, preemptív (erőszakosan megszakított, kiszorított) állapot. Futás befejezése: zombie állapot.

Folyamatok és a rendszer kapcsolata

Folyamatok és a rendszer kapcsolata felhasználói folyamatok rendszer folyamatok P1 P2 P3 P4 P5 P6 rendszerhívások Kernel perifériák interface-e D1 D2 D3 D4 D5 perifériák

Interface-ek OPR interface-ek: Programozói interface (rendszerhívások): folyamat OPR. Periféria interface: OPR I/O eszközök (perifériák).

Folyamatok párhuzamos végrehajtása Egy fizikai processzor. Virtuális párhuzamos végrehajtás. CPU ütemezés: gyors váltás, futó folyamatok számára szinte észrevétlen. UNIX: időszeletes (time slice vagy quantum), prioritásos, preemptív (kiszorításos).

Folyamatok környezete Követelmény: folyamatok megszakítása, illetve újraindítása. Folyamatok környezete: a folyamat és az őt végrehajtó gép állapota (illetve annak leírása). Így például: programszámláló (program counter), regiszterek, Memory Management Unit, használt erőforrások.

A folyamatok környezetének adatelemei a UNIX-ban

A folyamatok környezetének adatelemei Minden adat, ami szükséges a folyamat újraindításához. Kettő vezérlési adatstruktúrában tárolódik: proc (processz) struktúra a rendszer memóriájában: a kernel az összes folyamat proc struktúrájához hozzáfér, tárolás: hash tábla, u area (user area, felhasználói terület): a processz memóriájában, de csak (!) kernel módban módosítható: a kernel csak a futó folyamat u area-jához fér hozzá közvetlenül, indirekt módon a többit is eléri, de jóval lassabban.

Dinamikus adatszerkezetek Láncolt lista. Hash tábla. A kulcs, ami alapján keressük az elemeket 0 1 2 3 4 5 6 7 8 9 11 101 111 14 704 904 28 208 888

Folyamat környezet leíró adatok Processz-táblázat (bővíthető) Proc2-höz tartozó u area Proc1 Proc2 Proc3... PCB Mutató a Proc. Table bejegyzésre UID, GUID Handler információ File Descriptor Table Kernel Stack Region Table

A proc struktúra elemei I. Processz azonosító (PID). User area-ra mutató referencia. Processz állapota: pl.: kernel vagy user módban fut, várakozó vagy futásra kész (állapot diagram). Ütemezési információk: pl.: p_cpu, p_usrpri. Ütemezésnél használt egyéb mutatók: pl.: milyen prioritási kategóriában van.

A proc struktúra elemei II. Signalok kezelésére vonatkozó információ: ignored-blocked-posted-handled. MMU információ: milyen MMU regisztereket kell frissíteni a folyamat futtatásakor. A processzek különböző listáihoz (aktív, zombie, szabad) tartozó link-ek. Jelzőbitek.

A proc struktúra elemei III. A PID alapján a hash táblában történő tároláshoz szükséges mutatók. A processzek hierarchiájában elfoglalt helyre vonatkozó információ: pl.: processz szülője, processz gyermekei.

A user area elemei I. Egyszerű adatelemek: PCB (hardver környezet, regiszterek). Mutató a folyamat proc struktúrájára. Jogosítványok (valós {signal} és hatásos {file} UID, GID). Signal handler (kezelő) rutinok címei. CPU használati statisztika (ütemezéshez). Környezeti változók (pl.: aktuális könyvtár, kontroll terminál, keresési út).

A user area elemei II. Összetett adatelemek: A folyamathoz tartozó memória (a felhasználói címtartomány) elérésére szolgáló táblázat (címtranszformációs tábla, per-process Region Table). File-leírók táblázata (per process File Descriptor Table). Kernel módban használt veremtár (per process Kernel Stack).

Összetett adatelemek Kernel Stack: verem tár, kernel (privilégizált) módban futáskor, (pl.: rendszerhívások, IT). Region Table: MMU címtranszformációs táblázat. File Descriptor Table: a folyamat által megnyitott file-ok eléréséhez szükséges információ tárolása.

A hardver környezet (PCB) CPU regiszterei. Utasításszámláló (PC). Stack pointer (SP). Processzor-állapotleíró bit-ek (process status word), pl. carry (átvitel) bit. Memóriakezelő egység regiszterei (Memory Management Units, MMU). Lebegőpontos egység (Floating Point Units) regiszterei.

Folyamatok memóriája a UNIX-ban

Folyamatok memóriája Egyszerre több folyamat a fizikai memóriában. Fogalmak: logikai memóriakép, fizikai memóriakép, virtuális memóriakezelés/tárcsere. Az OPR feladata: memória cím memória tartalom összerendelés, memória tartalom fizikai memóriába mozgatása.

Memória használat OR TEXT DATA STACK Program kód: statikus, dinamikus (DLL). Adatterületek: inicializált (DATA), nem inicializált (BSS), heap (dinamikus adatok). Veremtár: dinamikusan növelhető terület.

Logikai-fizikai címtranszformáció

Logikai-fizikai címtranszformáció TEXT1 DATA1 STACK1 TEXT2 STACK1 TEXT1 TEXT2 DATA2 STACK2 STACK2 DATA1 DATA2

UNIX memória kezelés Logikai fizikai címtranszformáció: folyamat leíró adatokban: Region Table, Memory Management Unit.

A UNIX OPR feladatainak a megvalósítása

Az OPR feladatai A UNIX, mint operációs rendszer a feladatait a következő négy formában látja el: Kernel: rendszerhívások (system call), kivételkezelés (exception), hardver megszakítások (hardware interrupt), call-out függvények. Önálló folyamat: daemon folyamatok.

Rendszerhívások UNIX programozói interface-e. (API: Application Programming Interface.) Az OPR szolgáltatásainak elérése: erőforrás foglalás, rendszerinformációk gyűjtése, elszámolás biztosítása, védelmi és biztonsági mechanizmusok biztosítása. Privilegizált futási mód. Rendszer és folyamat erőforrásainak használata.

Kivétel (exception) Pl.: a nullával történő osztás, memóriaterületről történő kicímzés. Utasítás végrehajtással szinkron események. A kivételek kezelése kernel feladat. HW eszköz(ök) által generált megszakítás(ok).

Hardver megszakítások (hardware interrupt) Perifériák (I/O egység) állapotának megváltozása. IT kezelés kernel feladat (csak rendszer erőforrásokkal!). Aszinkron módon fellépő eseményekre a rendszer reagálni tudjon: interrupt rutin lefuttatása, nincs környezetváltás (context switch).

Az interrupt rutin által végzett tipikus műveletek 1. Végrehajtási mód váltása: user kernel. 2. Elmenti az aktuális processzor környezetet. 3. IT kiváltó esemény azonosítása. 4. IT kiszolgáló rutin meghatározása. 5. IT rutin hívása. 6. Környezet visszaállítása. 7. Végrehajtási mód váltás: kernel user.

Óra-interrupt Az ütemező hardver-támogatása: az óra-interrupt: a hardver óra adott időközönként megszakítást okoz. Gyakorisága: a tikk (óra-tikk, CPU-tikk): 10 ms (rendszerfüggő).

Az óramegszakítás-kezelő fő feladatai I. A hardver óra újraindítása, amennyiben ez szükséges. Az aktuálisan futó folyamat: CPU használati statisztikájának frissítése, a prioritás újraszámítása, az időszelet lejártának kezelése. SIGXCPU signal küldése az aktuális folyamatnak, amennyiben az túllépte az időkvótáját.

Az óramegszakítás-kezelő fő feladatai II. A rendszer óráinak frissítése (napi óra). A call-out függvények ellenőrzése. Bizonyos rendszerfolyamatok kezelése (swapper, pagedaemon). Riasztások (alarm) kezelése.

Daemon folyamatok Önálló folyamatokként megvalósított OPR funkciók. Nem privilegizált módban futnak. Rendszerhívásokon keresztül érik el a kernel szolgáltatásait.

Folyamatok futási környezete I. Folyamatok logikai memóriaképe: az operációs rendszer által használt memória, a folyamat által használt memória. Memória védelme: a rendszer környezet (system context) és a felhasználói környezet (user context) megkülönböztetése Java VM (hordozható!), PC emulátorok.

Folyamatok futási környezete II. Rendszer futási környezet: az operációs rendszer memóriaterületei, a kernel erőforrásai, a kernel stack. Felhasználói futási környezet: az alkalmazás adatterületei, user stack.

Folyamatok futási környezete III. A processzor különböző utasítás végrehajtási módjai: A felhasználói (nem privilegizált) mód (user mode): néhány speciális utasítás végrehajtása és a memória adott részének elérése tiltott. A privilegizált, kernel mód (kernel mode).

Folyamatok futási környezete IV. Nem privilégizált (user) utasítás végrehajtási mód Folyamat futási környezet alkalmazás kód végrehajtása (csak a folyamat memória területe érhető el) nem megengedett rendszerhívások, kivételkezelés (folyamat és rendszer memória is elérhető) megszakításkezelő, rendszer feladatok (csak a rendszer memória érhető el) Rendszer futási környezet Privilégizált (kernel) utasítás végrehajtási mód

Környezetek érvényessége Óra IT Kernel környezet3 Disk IT Kernel környezet2 Rsz hívás Kernel környezet1 USER környezet

Folyamatok kezelése Összefoglalás

Létrehozás A fork rendszerhívás kiadása a szülő által. Területfoglalás a háttértáron. PID generálás a gyerekfolyamatnak. Proc struktúra foglalás és inicializálás. Címleképezési táblák allokálása. U area frissítése, - új címleképezési táblák. Osztottan használt kódtartomány kezelése. A szülő verem- és adattartományainak duplikálása. Osztottan használt erőforrások kezelése. HW környezet inicializálása, a szülőtől másolva. A folyamat ütemezési sorba helyezése. A gyereknek 0-t, a szülőnek a gyerek PID-t adja vissza, mint visszatérési értéket.

Befejezés Az exit rendszerhívás kiadása a gyerek által. Signal-ok kikapcsolása. Nyitott állományok lezárása. Erőforrások felszabadítása. Statisztika napló kitöltése. Erőforrás használati statisztikák és a kilépési kód elmentése a proc struktúrába. Zombi listára kerülés. Árvák átadása az init-nek. A címtér felszabadítása. SIGCHLD signal küldése a szülőnek. A szülő felébresztése amennyiben alszik. A swtch() rendszerhívással az átütemezés kezdeményezése.