Slides 08 Unix 2 Folyamatkezeles

Embed Size (px)

Citation preview

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    1/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 1 / 17

    UNIX: folyamatok kezelse

    kiegszt flik az eladsokhoz

    Mszros Tamshttp://home.mit.bme.hu/~meszaros/

    Budapesti Mszaki s Gazdasgtudomnyi Egyetem

    Mrstechnika s Informcis Rendszerek Tanszk

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    2/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 2 / 17

    ttekints

    Alapismeretek Mi a folyamat? Hogy indul? Hol ltszik? Viszonya a kernellel? Kontextusok s vgrehajtsi mdok

    Folyamatok alapadatok

    llapotok s llapottmenetek letciklus: ltrehozs, futs (temezs), lellts

    Rendszerhvsok j folyamat ltrehozsa

    j programkd betltse

    Klasszikus s modern UNIX temezk priorits, temezsi szintek s mkds, preemptivits modularits, real-time, interaktv s multimdia folyamatok ignyei tbbprocesszoros rendszerek sajtossgai

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    3/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 3 / 17

    UNIX folyamatok felhasznli ismeretek

    Mi az a folyamat?

    Feladataink megoldsra programokat runk Egy program futs alatt ll pldnya a folyamat (def.)

    Hogyan indulnak a folyamatok? Rendszerindulskor (rendszerfolyamatok, szolgltatsok)

    Felhasznl ltal (elindtja, illetve igny szerinti szolgltatst kr)

    Hogyan kezeljk a folyamatokat? Listzs (folyamat neve, azonostja, futtatja, erforrs adatok, ...)

    ps, ps -ef, ps axu, ps -u , ...

    top, atop s grafikus trsaik

    Vezrls (lellts) (felhasznli felletkn)

    jelzsekkel: CTRL+C, CTRL+Z, kill

    egyebek: pl. priorits llts: renice

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    4/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 4 / 17

    UNIX folyamatok kernel alapismeretek

    Folyamatok elklntse a kerneltl

    Vgrehajtsi md: klnbsg a kernel s a folyamat programkdja kztt Kontextus: kernel s folyamat adatok kztti klnbsg

    Vgrehajtsi (futsi) mdok: Kernel (privilegizlt, vdett) md

    vdett (kernel) tevkenysgek vgrehajtsa Felhasznli (szabad) md

    a folyamat programkdjnak vgrehajtsa

    Vgrehajtsi krnyezetek: Kernel (rendszer vagy megszakts) kontextus

    a kernel sajt feladatainak elltshoz szksges adatok

    Folyamat kontextus (virtulis memria-kezels!) a folyamat futsnak adatai (programszveg, adatok, verem, stb.) a folyamatok kezelshez, vezrlshez szksges adatok

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    5/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 5 / 17

    A folyamatok s a kernel (emlkeztet)

    Hardver rteg (processzor, memria, erforrsok)

    Rendszerknyvtrak

    Rendszerhvs interfsz

    Folyamatkezelstemezs, memria-kezels,kommunikci

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    6/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 6 / 17

    Folyamatok futtatsa: vgrehajtsi md s kontextus

    felhasznli md kernel md

    folyamat kontextus

    kernel kontextus

    alkalmazs rendszerhvs

    megszaktsok,

    rendszer feladatok(res)

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    7/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 7 / 17

    A vgrehajtsi md vltsa

    A felhasznli md s a kernel md kztt tmenet lebonyoltsa

    Jellemzen rendszerhvsok meghvsa esetn zajlik: a folyamat vdett mdban vgrehajthat tevkenysget szeretne vgezni

    (pl. fjl rsa, olvassa, eszkzk kezelse, pontos id lekrdezse, stb.) meghvja a megfelel rendszerhvst (pl. open(), read(), write(), stb.)

    Ez a programozk szmra klasszikus fggvnyhvsnak tnik, de valjban egyspecilis szoftver megszakts, amit a fggvnyhvst implementl libc

    rendszerknyvtr bonyolt le.

    a libc kiadja a SYSCALL utastst (megszaktst generl)A SYSCALL neve hardver fgg, pl. trap, syscall, sysenter

    a CPU kernel (vdett) mdba vlt a megszakts hatsra a kernel SYSCALL kezelje elkszti a rendszerhvs vgrehajtst

    vgrehajtdik a kernel md eljrs (a rendszerhvs utastsai) a kernel visszatr a megszaktsbl (iret, sysexit)

    a CPU felhasznli mdba vlt a visszatrsi utasts hatsra a libc visszatr a folyamat ltal meghvott (rendszerhvs) fggvnybl

    Hardver megszaktsok s kivtelek (hibk) esetn is kell mdvlts

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    8/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 8 / 17

    Rendszerhvsok nyomkvetse (gyakorlat)

    Nzzk meg egy folyamat rendszerhvsait!

    nyomkvets (Linux alatt): strace bvebb informci s pldk: man strace

    A Solaris DTrace megoldsrl ksbb rszletesen sz lesz.

    Milyen rendszerhvsokat hajt vgre a ps parancs?strace -c psstrace -e open ps

    Milyen rendszerhvsokkal dolgozik a firefox bngsz?RHEL 5, Firefox 3.0.12ps -ef | grep firefoxstrace -c -p

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    9/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 9 / 17

    Virtulis rendszerhvsok

    (Nem a klasszikus UNIX rsze.)

    Problma: tl sok rendszerhvs, sok interrupt, sok kontextusvlts A Firefox plda: a gettimeofday() csak a pontos idre kvncsi gettimeofday() libc SYSCALL kontextusvlts stb.

    Az egyszer esetekben prbljuk lervidteni az utat

    Bizonyos rendszerhvsok esetben prbljuk elkerlni a mdvltst. Ha nincs mdvlts, akkor felhasznli cmtrben el kell rni kernel

    terleteket. Lnyegben bizonyos kernel funkcikat felhasznli cmtrben lev

    eljrsokknt tesznk elrhetv.

    Virtulis rendszerhvsok (Linux) minden folyamat cmterben megjelenik egy specilis kernel lap biztonsgosnak tlt rendszerhvsok rhetk el rajta nincs kontextusvlts, mdvlts, nem rik el a kernel cmtert a felhasznlk programjai nem ltjk a klnbsget (a libc igen)

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    10/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 10 / 17

    UNIX folyamatok kontextusa rszletesebben

    Folyamat adatok: programszveg, adatok, vermek, stb.

    Hardver kontextus: cpu, mmu, fpu, stb. Adminisztratv adatok (a folyamatok kezelshez, vezrlshez)

    elssorban a folyamat futsa sorn szksgesek u-terlet hozzfrs-szablyozs adatai A folyamat cmtr rsze rendszerhvsok llapotai s adatai

    nyitott fjl objektumok szmlzsi s statisztikai adatok, stb.

    elssorban a folyamatok kezelshez szksgesek proc struktra azonostk A kernel cmtr rsze futsi llapot s temezsi adatok memriakezelsi adatok, az u-terlet cme, stb.

    Krnyezeti adatok (a folyamat indtsakor megrklt tulajdonsgok) megrkli az t elindt folyamat krnyezett tulajdonsg = rtek prok halmaza set, setenv, export parancsokkal a felhasznlk is bellthatjk

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    11/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 11 / 17

    A folyamatok fbb adminisztratv adatai

    PID (Process ID): egyedi, a folyamatot azonost szm

    PPID: szl folyamat azonostja A folyamat llapota

    fut, alszik, stb. (rszletesen ksbb) temezsi informcik (priorits, stb., lsd ksbb)

    Hitelestk

    UID: a futtat felhasznl azonostja (UID=0 a rootvagy superuser) GID: a futtat felhasznl csoport azonostja vals (real) s effektv (effective) azonostk (lsd fjlok setuidbit)

    Memria-kezelsi adatok cmlekpezsi trkp

    Kommunikcis adatok fjllerk, jelzs informcik

    Statisztikk erforrs hasznlat (szmlzshoz)

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    12/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 12 / 17

    Folyamatok letciklusa (llapottmenetek)

    Ltrehozs

    fork(): j folyamat ltrehozsa exec(): j programkd betltse egy folyamat cmterbe

    Futs s vrakozs a futs elindtsa (a processzor folyamathoz rendelse)

    a futs meglltsa (a processzor elvtele) vrakozs esemnyre (nknt) felfggeszts (felhasznl) lells (nknt vagy a kernel) ttemezs (msik, fontosabb folyamat rkezett)

    Lells exit() rendszerhvssal zombi llapot szl rtestse gyerekek adoptlsa

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    13/17 BME-MIT 2011, Minden jog fenntartva 13. lap

    Feladat llapota 9. (ism.) Minden llapottmenet megszaktsra trtnik!

    A modern opercis rendszerek megszakts vezreltek!

    Futsra ksz(Ready) Fut(Run)

    Esemnyrevrakozik(Waiting)

    Ltrejn Befejezdik

    CPU-t kap

    Lemond vagyelveszik a CPU-t

    Rendszerhvseredmnyekppenvrakoz llapotba kerl

    A vrt esemnybekvetkezik

    SyscallSyscall, IT,

    kivtel Syscall,Kivtel

    Syscall, IT,kivtel

    Syscall, IT,kivtel

    Syscall

    O

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    14/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 14 / 17

    UNIX folyamatok llapotai

    Kernelmdban fut

    Felfggesztvealszik

    Felfggesztvefutsra ksz

    Felhasznlimdban fut

    Futsra ksz Alszik

    Kiindul Zombi

    BME MIT O i d k 2011 t

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    15/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 15 / 17

    A fork() s az exec() rendszerhvsok

    A fork() eltr rtkkel tr vissza a szl s a gyerek esetben

    Az exec() sikeres vgrehajts esetn nem tr vissza Kdminta

    if ((res = fork()) == 0) {

    // gyerek

    exec(...);

    // ha visszatr, exec hiba trtnt} else if ( res < 0 ) {

    // fork hiba trtnt

    }

    // res = CHILD_PID (>0), szl kdja fut tovbb

    fork() varicik (cmtr hasznlat, szlak tbbszrzse) clone() (osztott cmtr), vfork() (exec), fork1() (egy szl)

    exec() varicik (elrs, argumentumok, krnyezet) execl(), execv(), execle(), execve(), execvp(), ...

    BME MIT O i d k 2011 t

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    16/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 16 / 17

    A folyamatok csaldfja

    Folyamatot csak egy msik folyamat tud ltrehozni

    minden folyamatnak van szlje s lehetnek gyerekei a szl vltozhat (gy a gyerekek listja is)

    A fork() megadja a szlnek a gyerek azonostjt (PID)

    Az s folyamat (PID 1: init, upstart, systemd, ...) minden folyamat se a rendszer lellsig fut rkli az rva folyamatokat figyeli / veznyli bizonyos rendszerfolyamatok megltt / futst

    A csald fontos a szl rtestst kap a gyerek folyamat lellsrl (nyugtznia kell)

    BME MIT O i d k 2011 t

  • 8/3/2019 Slides 08 Unix 2 Folyamatkezeles

    17/17

    BME MIT Opercis rendszerek 2011. tavasz

    UNIX folyamatok 17 / 17

    sszefoglals

    Folyamatokkal kapcsolatos alapismeretek

    felhasznli kezelsk: ps, kill, nice futsi md s kontextus rendszerhvsok mkdse metaadataik (u-terlet, processz ler)

    Folyamatok letciklusa ltrehozs: klasszikusan a fork() rendszerhvssal

    j vgrehajtand kd betltse: exec()

    llapotok (specilis: ktfle fut llapot, felfggesztett llapotok, zombi) vezrls alapveten jelzsekkel

    Folyamatok csaldfja a fork() ft pt, az s folyamat az init (PID 1)

    a szlk rteslnek a gyerekek lellsrl