Upload
sweidan-omar
View
221
Download
0
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