1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads) 4. Ütemezés (scheduling) 5. Kommunikáció
2 A folyamat (processzus, process) fogalma A program - a háttértárolón várakozó, végrehajtható fájl. A folyamat - a program egy memóriában futó példánya + az adott példány végrehajtásával kapcsolatos OS tevékenysége. Def: a program végrehajtása + vele (azzal) kapcsolatos teendők. Példa: Tortasütés +Darázscsípés
3 A teendők: ahol PCB Process Control Block folyamat leíró blokk
4 Műveletek: 1. A folyamat létrehozása (rendszer inicializáció, felhasználó kérés, kötegelt csomag indítása) 2. A folyamat befejezése (normális, belső hiba, kritikus/javíthatatlan hiba, erőteljes/erőszakos befejezése, azaz killing) 3. Megszakítása (magasabb rangú folyamat indítása miatt, várakozás) 4. Gyermek (child) létrehozása Hierarchia: Egy folyamatnak lehet gyermeke. Gyermek-folyamatnak lehet saját gyermeke. Minden gyermeknek csak egy szülő-folyamata van. Együtt csoportot (UNIX/LINUX - group) alkotnak. Windowsban ilyen hierarchia nincsen.
5 Állapot (state): 1. Futásra kész (ready) 2. Fut (running) 3. Várakozik (blocked)
6 Processzus állapot információk: UNIX/LINUX: ps, top; Windows: Task manager (Ctrl-Al-Del) vagy What Process, stb % ps -ef more UID PID PPID C STIME TTY TIME CMD root 0 0 0 Sep 18? 0:17 sched root 418 1 0 Sep 18? 0:00 /usr/lib/saf/sac -t 300 daemon 156 1 0 Sep 18? 0:00 /usr/lib/nfs/statd % top load averages: 0.01, 0.03, 0.05 22:46:49 81 processes: 80 sleeping, 1 on cpu CPU states: 99.4% idle, 0.4% user, 0.2% kernel, 0.0% iowait, 0.0% swap Memory: 256M real, 27M free, 61M swap in use, 451M swap free PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND 13066 boris 1 33 0 1472K 1384K cpu 0:00 0.16% top 164 root 6 7 0 7952K 4088K sleep 25:32 0.15% automountd 13072 www 4 24 0 5928K 3288K sleep 0:00 0.09% httpd
7
8
9 Megvalósítás - Folyamat tábla mezei (process table)
10 Szálak - folyamatokhoz hasonló fogalom. A folyamaton belül több tevékenység végezhető párhuzamosan (ha egy processzor van) vagy párhuzamosan (ha több processzor van). Nincs saját memória, saját erőforrás csak a regiszterek, program címszámláló (PC Program Counter) és a verem sajátja (+állapot) minden más közös a folyamatával (fájlok, nyomtatók, stb.) Előny: Gyors váltást tesz lehetővé Osztott erőforrások (memória!) Párhuzamosság Időszelet kvantum (quantum): az a maximális idő, ameddig az OS futni engedi a szálat. A kvantum értéke a szálakhoz van rendelve, szálanként változhat.
11 Példák: Szövegszerkesztő, táblázatkezelő, Web-szerver, Nagy méretű adatok feldolgozása, stb.: Szöveg formálása Mentés Billentyűzet, egér Helyesírás ellenőrzés még egy szál?
12 Sok adat esetén: Folyamat 2. szál: Feldolgozás 1. szál: az adatok beolvasása 3. szál: Az eredmények mentése
13 Problémák Természetes megoldás: párhuzamos kód több folyamat (hiszen erre való!) Ez így jó (is volt sokáig), de: Létrehozásuk, megszűntetésük drága (regiszterek, memória, adatok) Kommunikáció, együttműködés (drága) kernel műveletekkel lehetséges Kell szálállapot-tábla (Hol? Programban? Kernelben?) Folyamatok közötti váltás költséges (szálakat is kell lekezelni!) Általában: kernel funkciók futtatása drága!
14 Megvalósítás: Kernel által támogatott szálak (Machintosh és OS/2)
15 Felhasználói szintű szálak (Windows NT-tól)
16 Vegyes (hibrid) megközelítés: kernel- és felhasználói szintű szálak (Solaris 2)
17 Ütemezés (scheduling) Cél: mindig legyen legalább egy processzus, amelyik képes és kész a processzort lefoglalni. Processzus ütemezési sorok (queue): job queue (munka sor) ready queue (készenléti sor) device queue (berendezésre váró sor) Folyamat migráció az egyes sorok között: FIFO First In First Out, FILO First In Last Out,
18 Folyamat ütemezők: 1. Hosszútávú ütemező (long term scheduler, job scheduler) Feladat: a job queue kezelése 2. Rövidtávú ütemező (short term scheduler, CPU scheduler) Feladat: melyik folyamat kapja meg következő alkalommal a CPU-t, gyorsaság lényeges Szempontok: A. I/O igényes és CPU igényes folyamatok B. Context switch tartalma (process context a várakozó processzus további indításához vagy folytatásához szükséges összes információ rendszerezve) C.
19 Kommunikáció szükséges a következő szituációkban: 1. Adatok átadása az egyik folyamatból a másiknak (Pipelining) 2. Közös erőforrások használata (memória, nyomtató, stb.) Példa: Az eredmény: az a.txt fájl a nyomtatási sorba nem kerül.
20 Versenyhelyzet race condition Kritikus szekció (Critical section): a program (vagy folyamat) az a része, ahol előfordulhat versenyhelyzet. Megoldás: Egyszerre csak egy folyamat lehet kritikus szekcióban. Amíg a folyamat kritikus szekcióban van, azt nem szabad megszakítani. Ebből a megoldásból származhatnak új problémák