Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. 2. 3. 4. 5.
A folyamat (processzus, process) fogalma Folyamatok: műveletek, állapotok, hierarchia Szálak (threads) Ütemezés (scheduling) Kommunikáció
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
1
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
2
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
A teendők:
ahol PCB – Process Control Block – folyamat leíró blokk
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
3
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
PCB struktúrája Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
4
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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.
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
5
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Állapot (state):
1. 2. 3.
Futásra kész (ready) Fut (running) Várakozik (blocked)
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
6
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
7
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 root 0 0 root 418 1 daemon 156 1
C 0 0 0
STIME TTY Sep 18 ? Sep 18 ? Sep 18 ?
TIME 0:17 0:00 0:00
CMD sched /usr/lib/saf/sac -t 300 /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 13066 boris 1 33 0 1472K 1384K cpu 164 root 6 7 0 7952K 4088K sleep 13072 www 4 24 0 5928K 3288K sleep Dr. Bajalinov Erik
TIME 0:00 25:32 0:00
CPU 0.16% 0.15% 0.09%
COMMAND top automountd httpd
Operációs rendszerek (PMB1206)
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
8
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Angol nyelvű környezetben – Task Manager
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
9
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Free process manager for Windows Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
10
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Megvalósítás - Folyamat tábla mezei (process table)
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
11
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Linux PCB tábla
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
12
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Command.Com (Dos) Tasklist
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
13
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
14
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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). Def: (http://hu.wikipedia.org/wiki/Szál_(programozás) A végrehajtási szál (angolul thread) a számítógép-programozás során létrehozott, önálló végrehajtási egységként működő program, objektum, szekvenciálisan végrehajtható utasítás-sorozat, egy adott probléma véges számú lépésben történő megoldása (algoritmus). 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.) Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
15
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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.
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
16
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
17
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? Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
18
Sok adat esetén: Folyamat
1. szál: az adatok beolvasása
Dr. Bajalinov Erik
2. szál: Feldolgozás
3. szál: Az eredmények mentése
Operációs rendszerek (PMB1206)
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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!
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
19
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Megvalósítás: Kernel által támogatott szálak (Machintosh és OS/2)
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
20
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Felhasználói szintű szálak (Windows NT-tól)
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
21
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Vegyes (hibrid) megközelítés: kernel- és felhasználói szintű szálak (Solaris 2)
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
22
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
Ü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, Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
23
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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. Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
24
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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. Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
25
Nyíregyházi Egyetem Matematika és Informatika Intézete
02
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…
Dr. Bajalinov Erik
Operációs rendszerek (PMB1206)
26