S4-03 Többszálú programok, a Java nyelv szinkronizációs eszközei
|
|
- Irma Vörös
- 7 évvel ezelőtt
- Látták:
Átírás
1 S4-03 Többszálú programok, a Java nyelv szinkronizációs eszközei Tartalom 1. Többszálú programok ütemezése 2. A Java nyelv szinkronizációs eszközei 3. Jól szinkronizált programok, a happens-before reláció 4. Data race és race condition fogalma 5. Konkurrens használatra tervezett adatszerkezetek 6. Szinkronizáló osztályok 7. Szálak és feladatok 8. Félbeszakíthatóság 9. Haladási problémák (holtpont, kiéheztetés, livelock, priority inversion) 10. További források 1.Többszálú programok ütemezése Konkurens programok Programok, melyekben több végrehajtási stream hajtódik végre konkurensen. Ezeket az utasítás szekvenciákat hívjuk szálaknak. Minden ilyen szál ugyanúgy hajtódik végre, mint egy szekvenciális program azzal a különbséggel, hogy a szálak képesek egymással kommunikálni rosszul szervezett esetben akár interferálni is. Többszálú program esetén átfedések lehetségesek a folyamatok életciklusában, a különböző számítások nem kell, hogy ugyanabban az időben történjenek, bár előfordulhat, hogy párhuzamosan futnak le. Nem determinisztikus végrehajtás Problémát a megosztott, közösen használt adatokhoz való hozzáférés okozhatja = indokolt a megfelelő memória kezelés megoldása Párhuzamos programok Programok, melyeknél minden számítás a szó legszorosabb értelmében egyszerre történik egy másik processzoron, vagy másik magon, esetleg egy másik gépen. Párhuzamos programokat lehetetlen egyszálú környezetben futtatni. Végrehajtásuk determinisztikus és eredményük megegyezik a soros végrehajtással. 1
2 Ütemezés Run-to-Completion Egy folyamatot addig futtatunk, amíg kész nem lesz, vagy explicit vissza nem adja a vezérlést az ütemezőnek (yield()). Pre-emption Az aktuális szálat az ütemező megszakíthatja, és kontextusváltással egy másik szálat futtathat. JVM implementációtól függő időosztás Ekkor a szálak adott időszeleteket kapnak a végrehajtásra és kontextus váltásokat hajt végre köztük a JVM az idő lejártakor, ha a szálak még mindig futtatható állapotban maradtak. Minden szálnak kioszt egy minimális időszeletet (quantum), amit az kihasználhat ha ez túl kicsi, sok lesz a kontextusváltás, így nagy az ütemező overhead-je ha ez túl nagy, az egyes szálak válaszideje megnövekszik egy szál lemondhat az időszeletének további részéről yield() hívásával 2.A Java nyelv szinkronizációs eszközei Folyamatok (Process) Egy folyamat önálló futtatási környezettel rendelkezik. Több folyamat felépíthet egy alkalmazást Legtöbb JVM implementáció egy folyamatként fut Általában privát, teljes erőforrás halmazzal rendelkezik. A folyamatok izoláltam futnak egymástól, és nincs lehetőség közvetlenül egymás erőforrásaihoz hozzáférni. Szálak (Thread) Amolyan pehelysúlyú folyamatok. Létrehozásuk kevesebb erőforrást igényel, mint a folyamatoké. A folyamatokon belül léteznek és minden folyamat rendelkezik legalább egy szállal (main thread). A szálak megosztják az erőforrásaikat, beleértve a memóriát is ami a kommunikáció alapját képezi. 2
3 Működhetnek több CPU magon vagy egy magon időosztással (time slicing) java.lang.thread Szinkronizációhoz alapul szolgáló eszközünk Java esetén maga a java.lang.thread osztály. Kétféle módszerrel definiálhatunk szálakat Java-ban: 1. Thread osztályból származtatjuk az osztályunkat. Ekkor felüldefiniáljuk a Thread osztály run() metódusát. Az osztályunknak lesz egy start() metódusa, amit meghívva elindíthatjuk a run() végrehajtását egy külön szálban. new HelloThread().start() 2. Megvalósítjuk a Runnable interfészt. Adhatunk Thread konstruktorának egy Runnable interfészt megvalósító osztályt new Thread(new HelloRunnable()).start() Mindkét esetben a run() metódust kell felüldefiniálni Elindítani a start() metódussal lehet. Lehet prioritást rendelni hozzá, Futhat háttérszálként (daemon thread), Adhatunk neki nevet, JVM generál hozzá azonosítót (újrahasznosítható). Szálak életciklusa Lehetséges ciklusok: 1. Létrejött (created) 2. Futtatható (runnable) 3. Futó (running) 4. Blokkolt (blocked) 5. Végetért (terminated) start()-al elindított szál futtatható (runnable) állapotba kerül, de ütemező még nem választotta ki. Ha az ütemező kiválasztja, futó (running) állapotba kerül, ekkor indul el a végrehajtása. Ha egy szál elkezdett futni, akkor addig fut, amíg az alábbiak valamelyike be nem következeik: Thread.sleep() (blokkolt) 3
4 Lock-ra kezd várni, hogy egy synchronized metódust futtasson (blokkolt) I/O-n blokkolódik (blokkolt) Explicit visszaadja a vezérlést a yield()-el (futtathatóba kerül) terminál, run() elfogy (véget ért) Figure 1: Egy szál életciklusa Életciklus változása start(): Létrejött = Futtatható ütemező: Futtatható = Futó run(): Futó = Véget ért yield(): Futó = Futtatható sleep(): Futó = Blokkolt sleep() vége: Blokkolt = Futtatható interrupt(): Blokkolt = Futtatható wait(): Futó = Blokkolt notify(): Blokkolt = Futtatható blokkoló IO: Futó = Blokkolt 4
5 Szinkronizációs eszközök Synchronized Kulcsszó, amivel nem csak metódusok és blokkok kölcsönös kizárását valósíthatjuk meg hanem a kölcsönös kizárás közben többi szál blokkolását is Intrinsic lock-olás (Monitor pattern) Java-ban minden objektum rendelkezik egy lock-al (hívják monitornak is), melyet szálak lefoglalhatnak és elengedhetnek Egy időben csak egy szál foglalhatja az objektum lock-ját Addig a többi szál egy várakozási sorban vár amíg a lock fel nem szabadul Vezérlésük addig blokkolódik A lock reentráns: a lock-ot birtokló szál többször egymás után foglalhatja = nem fogja saját magát blokkolni Java-ban egyetlen mód intrinsic lock megszerzésére: synchronized metódus végrehajtása synchronized blokkba lépés Synchronized metódus Szál annak az objektum lock-ján zárol, akié maga a synchronized metódus. Synchronized blokk Természetesen nem csak metódusokra implikálható, szinkronizációs blokkot is hozhatunk létre, melynek belsejében adhatjuk meg azokat az utasításokat melyekre kizárólagos hozzáférést szeretnénk biztosítani. Ebben az esetben meg kell adni, hogy melyik objektum lock-ján akarunk szinkronizálni: synchronized(obj) {...}. Létjogosultsága leginkább akkor van, ha nem egy objektumban vannak azok az utasítások amelyeken szinkronizálni akarunk vagy ha nem a this-en akarunk lock-olni. Volatile Gyenge szinkronizációt biztosító eszköz (gyors, szálbiztos, lock-free hozzáférés). Explicit lock nélküli szinkronizációt biztosít, rákényszerítve a fordítót, hogy mindig olvassa ki a volatile változó értékét s így nem fordulhat elő az, hogy elavult (cache-elt) értéket kapjunk. Szálak között megosztott volatile változónak mindig az aktuális értékét látjuk minden szálban. A volatile változó olvasása/írása szinkronizációs akciót vált ki. Azért csak gyenge szinkronizációs eszköz, mert nincs kölcsönös kizárás a változó használatán, csak a láthatóságot biztosítja, atomiságot nem (a synchronized azt is). 5
6 A fordító és runtime nem optimalizálhat rajta, azaz például nem rendezheti át az utasításokat rajtuk. Értékét nem szabad kizárólagosan egy szálra cache-elni. Nem menthetőek regiszterekbe. Használatuk leginkább az állapotjelzőkre, megszakítókra, kiegészítő feladatokra korlátozódik. Bármely volatile változó írása happens-before relációban kell legyen az utána következő olvasásaival. Immutable (módosíthatatlan) objektumok A módosítathatlan objektumok szinkronizáció nélkül megoszthatóak a szálak között. Funkcionális stílusú programozás Az ilyen objektumok mindig szálbiztosak, mert létrejöttük után nem változik az állapotuk. Invariánsaikat a konstruktor határozza meg. Egy objektum immutable, ha: az állapota létrehozás után nem változtatható meg minden mezője final (igazából technikailag nem feltétel) biztonságosan jött létre, azaz nem szökött ki a this referencia a konstruálódása során opcionálisan maga az osztály is lehet final Gyors allokációja és szinkronizációmentessége lévén gyors teljesítményt nyújt. Best practice: ha egy objektum nem immutable, a módosíthatatalan adattagokat akkor is érdemes megjelölni, ezáltal kevesebb lehetséges állapota lesz az objektumnak. Java memória modell kimondja: konstruktor befejezésekor a final mezők garantáltan inicializálva lesznek 3.Jól szinkronizált programok, a happens-before reláció Atomicitás A és B művelet akkor atomi egymáshoz képest, ha az A műveletet végrehajtó szál szempontjából a B műveletet végrehajtó szál vagy teljes egészében végrehajtotta a műveletet vagy egyáltalán nem. Egy művelet akkor atomi, ha ugyanazon az állapoton végrehajtott művelethez képest atomi, beleértve önmagát is. 6
7 Happens-before reláció Laikus magyarázat Kulcs memóriakonzisztencia hibák elkerülésére Ha egy esemény happens-before relációban áll a másikkal = az első esemény hatása látható a második számára Definíció Ha van x és y műveletünk = hb(x, y)-al jelöljük hogy x végrehajtása megelőzi y végrehajtását ( x az y előtt történik, x happens before y ) Mit garantál? Garantálja, hogy ha két akció, x és y ilyen relációban áll, akkor x eredménye látható y számára. Formálisabb definíció A program order (po) és a synchronizes-with (sw) relációk uniójának tranzitív lezártja hb = (po sw) + Ebből tranzitív: ha hb(a, b) és hb(b, c) akkor hb(a, c) hb-re vonatkozó szabályok: Minden esemény egy szálon belül hb relációban áll a többivel ha azok később következnek a program order szerint. Minden objektum konstruktorának vége relációban áll az objektum finalizerének első utasításával. Unlock monitor hb relációban áll ugyanazon monitor lock-jával, amely utána következik volatile változó írása is hb relációban áll az azt követő olvasásaival A szál start() metódusa hb relációban áll minden más eseményével Minden esemény egy szálon belül hb relációban áll a többi szál join() általi visszatérésével Happens-before konzisztencia Legyen A: műveletek halmaza 7
8 r: olvasások A-ban w: írási műveletek A-ban v: változó amit r olvas és w ír W(r): írási műveletek, amiket r lát Happens-before konzisztens A műveletek halmazában minden egyes r olvasás olyan w írást lát = ami olvasásnak megengedett, hogy happensbefore sorrendben lássa Nem létezik olyan, hogy hb(r, W (r)) = olvasások happens-before relációban vannak az írásokkal amiket az olvasások látnak van w írás A-ban, amiben w.v = r.v (w által írt és r által olvasott v változó értéke megegyezik) hb(w (r), w) (r által látott W(r) írások w előtt vannak) hb(w, r) (w írás r olvasás előtt történik) Magyarul: 1. Minden olvasás látja az azt megelőző írásokat 2. Ha írunk egy v változót, azt az olvasó folyamatnak mindenképp látnia kell Miről biztosít a happens-before konzisztencia? Minden olvasás mely egy írás előtt ment végbe, nem láthatja annak az írásnak az eredményét Az olvasás akkor sem láthatja az írás eredményét ha épp egy másik írás van folyamatban Szekvenciális konzisztenica Minden változó olvasás = az előző írás eredményét látja egy megadott sorrend alapján, függetlenül attól, hogy melyik processzoron történtek a műveletek. Tehát minden akció atomi és eredménye minden szál számára azonnal látható. Ha az egyes akciók teljes rendezésben vannak, amik konzisztensek a program order-el = akkor v változó r olvasása esetén, v változó a w által írt értéket tartalmazza, ha: w írás az r olvasás előtt áll nincs más w írás a w írás és r olvasás között. 8
9 Jól szinkronizált program A program akkor és csak akkor jól szinkronizált, ha minden szekvenciálisan konzisztens végrehajtása data race-mentes. A jól szinkronizált programok minden végrehajtása szekvenciálisan konzisztensnek tűnik. 4.Data race és race condition fogalma Interferencia Két művelet különböző szálon fut, de ugyanazon az adaton dolgoznak = összefésülődnek Egy-egy művelet több lépésből áll, ezek a lépések pedig összefolynak Read-modify-write Egy értéket változóból kiolvas (read), módosítja az értéket (modify), majd visszaírja a változóba (write) Nem atomi művelet: a három esemény közötti időben megváltozhat a változó amiből az érték lett kiolvasva. Tipikus példája ennek a post-increment (i++) 1. i értékének kiolvasása, másolat készítése az értékből (read) 2. magának az érték növelése eggyel (modify) 3. érték visszaírása i-be (write) Check-then-act Egy állapotot megvizsgál (check), majd azalapján cselekszik egy szál (act) Nem atomi művelet: a két esemény közötti időben megváltozhat az eredetileg megvizsgált állapot. Másik megfogalmazás: Teendő elvégzéséhez (act) olyan megfigyelést (check) vesz alapul, ami valószínűleg elavult adatra épül Data race Akkor következik be, mikor egy változót több szál olvas és legalább egy szál ír, viszont az írások és olvasások között nincs happens-before reláció. A jól szinkronizált program data race nélküli. Ha nincs data race, minden végrehajtás szekvenciálisan konzisztensnek tűnik 9
10 Race condition: Akkor következik be, mikor a számítás helyessége 1. a relatív időzítésen 2. vagy több szál futásidőben történő összesorolásán múlik. Magyarul race condition esetén a helyes válasz a szerencsés időzítésen múlik ( szerencsén múlik ). Megoldás: például szinkronizálás monitorral. Mitől szálbiztos (thread safe) egy program? Read-modify-write és Check-then-act utasítások atomikusan hajtódnak végre Nincs data race 5.Konkurrens használatra tervezett adatszerkezetek Vector, Hashtable Alapból szinkronizált (saját intrinsic lockjával). Szinkronizációs burkoló objektumot készítő, intrinsic lock-ot bevezető factory metódusok: Collections.synchronized* Egy hibaforrás: Az iterálás során szintén zárolni kell az adatszerkezetet (atomi legyen, hogy közben ne változzon az elemszám), mert a szinkronizált kollekciók iterátorait nem kötelező lock-olni a bejárás közben. Így megfelelő zárolás hiányában egyszerű for-each bejárásnál vagy rejtett iterációnál (pl: tostring()) nem lesz szálbiztos. java.util.concurrent.* A szinkronizált kollekciók (Vector, Hashtable) nem eléggé jó teljesítményűek, mivel a műveleteik az egész kollekciót zárolják. Ezzel szemben a konkurens kollekciók egyszerre írhatók és olvashatók több szálból. Nincs szükség lock-olásra az egész gyűjteményen (nem is ajánlott, mert elveszíti hatékonyságát), elég egy részén (lock striping). Atomi putifabsent(), remove() és replace() check-than-act típusú műveleteket biztosít. A size() illetve isempty() eredménye viszont csak approximális. 10
11 CopyOnWriteArrayList és CopyOnWriteArraySet a synchronizedlist párhuzamos megfelelője. Kiküszöböli a gyűjtemény zárolásának vagy lemásolásának szükségességét bejárás közben. A CopyOnWrite gyűjtemények ereje abban rejlik = hogy a gyűjtemény minden módosításakor másolatot készítenek és tesznek közzé. Másolat készítése drága = akkor hatékony, ha több az olvasás mint az írás BlockingQueue Blokkol, ha nincs benne kivehető elem (kivételnél), vagy tele van (berakásnál). Van felső határ nélküli változat is, itt a berakás soha nem blokkol. poll() és offer(): időhöz kötött várakozással blokkoló elem kivétel és berakás. Fajtái: LinkedBlockingQueue ArrayBlockingQueue: igazából tömb típusú PriorityBlockingQueue: nem FIFO típusú, prioritás számít SynchronousQueue: igazából nincs eleme, de nem null az átadott érték BlockingDeque: kétvégű változata 6.Szinkronizáló osztályok Ezek közé bármi olyan objektum tartozik, ami a szálak vezérlését koordinálja saját állapota alapján. Latch Feltartja a folyamatokat, amíg elér egy megadott termináló pontot. Feltart minden szálat míg el nem éri végállapotát, ezután mindet tovább engedi. A továbbiakban nem változik az állapota. Implementáció: például CountdownLatch, mely egy nem negatív értéktől számol vissza (countdown() csökkenti egyel) 0-ig. Semaphore Klasszikus számláló szemafor (lehet bináris is), mely korlátozott számú erőforráshoz vagy korlátozott méretű adatszerkezethez való hozzáférést 11
12 szabályozhat. Konstruktorában adható meg a szálak max. száma, melyek egyidőben bent tartózkodhatnak, = ez az érték fix egy szemaforra nézve. Barrier Egy bizonyos pont elérése után engedi tovább a szálakat (barrier pont). Alap implemetációja a CyclicBarrier, mely a konstruktorában megadott számú szálat vár be. Nincs végleges termináló állapota, újraindul. Future Interfész, egy aszinkron számítás eredményét reprezentálja. Eredményt get()-el kaphatjuk meg, mely addig blokkolódik, míg meg nem kapja az eredményt. Állapota lekérdezhető, félbeszakítható. FutureTask az alap implementációja, egy aszinkron számítást végez. Konstruktorába Callable vagy Runnable objektumot kell adni Csak a számítás módját adjuk meg vele, a számítás elvégzését legtöbbször egy Executor-ra bízzuk. 7.Szálak és feladatok Feladatok (task) A feladat az elvégzendő munka egy egysége. Ezeket konkurrensen hajtjuk végre szálakban. Ideális esetben egymástól független az állapotuk eredményük és mellékhatásaik is. Ha a feladatokat függetlenítjük a szálaktól (nincs explicit összekapcsolás) = jobb skálázódási tulajdonságot kapunk. A feladatok méretének meghatározása kritikus: Feladat/szál költséges lehet Túl kicsi feladatok: versengés, ütemezési overhead Túl nagy feladatok: kismértékű párhuzamosíthatóság 4 folyamat / 4 feladat esetén a legnagyobb folyamat lesz a mérvadó sebesség terén. 12
13 Executor Feladatok beküldése végrehajtásra. Executor egy szálat több Runnable objektum végrehajtására tud felhasználni. Elosztja a beérkező feladatokat a szálak között. ExecutorService egy kiterjesztése az Executor-nak. A taszkok beküldésekor (submit()) nem csak Runnable-t, hanem Callable-t is elfogad, ez Future-t tud visszaadni. 8.Félbeszakíthatóság Szál félbeszakítása (interrupt()) Egyfajta üzenetküldés a szál megállításához, melyben közreműködik a kezdeményező, illetve az interruptot kapó szál is. Nem állíthat le egy szál egy másik még futásban lévő szálat, de megszakító kérést küldhet neki, amire a futásban lévő szál megáll és átadja a vezérlést. Ezt egy kontextusváltás keretében teszi, mely magába foglalja a szál stack-jének ürítését, processzor regisztereinek ürítését, cache ürítését és a program counter elmentését. Ezután tölti be a másikét. Interrupt hívásakor beállítódik egy interrupt flag a szálban, ami lekérdezhető interrupted() és isinterrupted() segítségével. Szál ekkor InterruptedException-t dob Használható alvó (sleep()) szál felébresztésére is isinterrupted(): tagmetódus, csak megvizsgálja az interrupt flag-et interrupted(): statikus metódus, törli az interrupt flag-et lekérdezés után, azaz második lekérdezéskor már false lesz Feladat félbeszakítása (cancel()) Egy feladatot egy Future objektum reprezentál cancel() metódusában megadható, hogy megszakítható legyen-e Executor félbeszakítása (shutdown() vagy shutdownnow()) Minden szálnak van egyfajta implicit tulajdonosa (legtöbbször aki létrehozta) és a szál leállítását a tulajdonosa kell, hogy elvégezze, Ezért minden szálakat kezelő szolgáltatásnak kell legyen valamilyen shutdown mechanizmusa shutdown() megvárja míg az éppen futó szál befejezi feladatát és ezután állítja le, shutdownnow() meg is szakítja a jelenleg futó szálakat. 13
14 9.Haladási problémák (holtpont, kiéheztetés, livelock, priority inversion) Holtpont Folyamatok egy nem üres halmazát holtpontosnak nevezzük, ha a benne szereplő minden folyamat egy olyan feltétel bekövetkeztére vár (feltétlenül, időkorlát nélkül), amely feltétel csak a halmazban lévő más folyamatok továbbhaladása esetén következhet be. Ha a halmaz minden folyamata arra vár, hogy sikerüljön lekötnie egy erőforrást, amit egy, a halmazban lévő folyamat már lekötve tart, akkor holtpont alakulhat ki. Holtpont formális definíciója 1. Tekintsünk egy páros gráfot, amelynek csúcsai a folyamatokat, illetve az erőforrásokat reprezentálják. 2. Ha a folyamat zárolta azt az erőforrást húzzunk be egy élt egy erőforrásból egy folyamatba 3. Ha a folyamat épp vár az erőforrás megszerzésére húzzunk be egy élt egy folyamatból egy erőforrásba 4. Ha az így készített gráfban kör van = a körön lévő folyamatok holtpontba került folyamathalmazt adnak. Étkező filozófusok példa Ha minden filozófus felveszi a bal villáját majd elkezd várni arra, hogy felvehesse a jobb villát is = holtpont alakult ki. Kiéheztetés Egy száltól huzamosabb ideig megtagadják azt az erőforrást, ami a továbbhaladásához szükséges. Sok esetben ez maga a végrehajtó egység, tehát egyszerűen nem kerül beütemezésre. Ez lehet például a nem megfelelő szálprioritások megválasztásának eredménye vagy ha egy szál úgy tart egy mások számára szükséges zárat, hogy közben végtelen ciklusba kerül. 14
15 Livelock Szálak nem blokkolódnak, de valódi haladás nem történik. Olyan műveletet próbálnak végrehajtani, ami mindig sikertelen eredménnyel zárul. Például tranzakcionális üzenetsoroknál léphet fel ilyen, ha az üzenetek feldolgozása nem sikerül, és a sikertelen tranzakció esetén az üzenet visszakerül a sor elejére (poison message). Esetleg a szálak egymástól függően váltanak állaptotot, de pont úgy, hogy nem tudnak haladni. Priority inversion A fontosabb feladatok elvégzésése érdekében prioritást rendelhetünk a szálakhoz. Ha egy magasabb prioritású folyamat futtathatóvá válik, akkor a rendszer késlelteti az alacsonyabb prioritású folyamatok futását. Priority inversion: ha egy alacsonyabb prioritású folyamat implicit megelőz egy magasabb prioritású folyamatot Priority inversion formális definíciója Legyen Két folyamat H és L, amik magas és alacsony prioritásuak M közepes prioritású folyamat Ezek egy megosztott erőforrást akarnak megszerezni kizárólagos használatra, ami legyen R. 1. Ha H próbálja megszerezni R-t miután L megszerezte H nem futtatható amíg L el nem ereszti. 2. Mivel H nem futtatható ezért M a legnagyobb prioritású folyamat ami miatt L késleltetődik és ezért L nem tudja feloldani az erőforrást. 3. Ebben az esetben = a közepes prioritású M folyamat megakadályozza hogy a magas prioritású H folyamat futhasson. 10.További források Előző kidolgozott záróvizsga tételek
16
C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21
C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem)
11. Monitorok működése. A Java synchronized kulcsszóval elérhető szinkronizációt monitor segítségével valósították meg.
1. Elosztott, párhuzamos és konkurens programok. Többszálúság. Elosztott programokat hálózattal összekötött számítógépeken futtathatunk. Ez a megoldás a Java EE alapja, mely a távoli metódushívásokra épít
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
Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális
Programozási nyelvek és módszerek Java Thread-ek
Programozási nyelvek és módszerek Java Thread-ek Laki Sándor lakis@inf.elte.hu 2006. május 3. 0-0 Szálak (Threads) Ahhoz, hogy egy mai rendszer m ködhessen több 10-100 folyamatnak kell futnia. A folyamatok
Concurrency in Swing
Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon
... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.
Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)
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)
Programozási technológia 2.
Programozási technológia 2. Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Párhuzamosság A számítógépek egy időben több feladatot is el tudnak látni Gyakran még egyszerű alkalmazásoktól is elvárt, hogy
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)
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)
Windows ütemezési példa
Windows ütemezési példa A példában szereplő számolás erősen leegyszerűsített egy valós rendszerhez képest, csak az elveket próbálja bemutatni! Egyprocesszoros Windows XP-n dolgozunk, a rendszer úgy van
Végrehajtási szálak - kiegészítések. Szinkronizálás, érvénytelenített metódusok helyettesítése
Végrehajtási szálak - kiegészítések Szinkronizálás, érvénytelenített metódusok helyettesítése Szinkronizálás Szinkronizálás szükségessége, példa: egy végrehajtási szál kiolvas egy adatstruktúrából egy
Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:
Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra
Konkurens TCP Szerver
A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
Autóipari beágyazott rendszerek. Komponens és rendszer integráció
Autóipari beágyazott rendszerek és rendszer integráció 1 Magas szintű fejlesztési folyamat SW architektúra modellezés Modell (VFB) Magas szintű modellezés komponensek portok interfészek adattípusok meghatározása
Programozási technológia 2.
Programozási technológia 2. Szálkezelés 2., Párhuzamosság Swing környezetben Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. 2 Az eddig látott szálkezelési lehetőségek a Java kezdetektől elérhető alacsony
Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu
Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:
Java Concurrency Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2010. Kozsik Tamás (ELTE) Java Concurrency 2010. 1 / 67
Operációs rendszerek. Az NT folyamatok kezelése
Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok
Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?
Szálkezelés 1. A szekvencia diagram feladata az objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengely. A
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron
Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész
3. előadás Protokollok Kommunikáció 2. rész RPC (Remote Procedure Call) távoli eljáráshívás RMI (Remote Method Invocation) távoli metódushívás MOM (Message-Oriented Middleware) üzenetorientált köztesréteg
Párhuzamosság. Java a párhuzamosítást több féle képpen támogatja.
Java Szálkezelés Párhuzamosság Számító gépek egy időben több feladatot is el tudnak látni. Gyakran még egyszerű alkalmazásoktól is elvárt, hogy párhuzamosan több dologgal is foglalkozzanak. Például egy
Szenzorhálózatok programfejlesztési kérdései. Orosz György
Szenzorhálózatok programfejlesztési kérdései Orosz György 2011. 09. 30. Szoftverfejlesztési alternatívák Erőforráskorlátok! (CPU, MEM, Energia) PC-től eltérő felfogás: HW közeli programozás Eszközök közvetlen
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html 1 Kivételkezelés I. szokatlan, váratlan
Elosztott rendszerek
Elosztott rendszerek NGM_IN005_1 Konkurrens folyamatok Folyamat koncepció Adatok (információ reprezetáció) M!veletek (input->output) Számítás (algoritmus) Program (formális nyelv) Folyamat (végrehajtás
Operációs rendszerek. 3. előadás Ütemezés
Operációs rendszerek 3. előadás Ütemezés 1 Szemaforok Speciális változók, melyeket csak a két, hozzájuk tartozó oszthatatlan művelettel lehet kezelni Down: while s < 1 do üres_utasítás; s := s - 1; Up:
VIII. Szálak és animáció
VIII. Szálak és animáció 1. Bevezetés A mai korszerő operációs rendszerek multiuser-multitask rendszerek. Tehát az operációs rendszer egyszerre több feladattal is foglalkozik. Gondoljunk csak arra, hogy
Az interrupt Benesóczky Zoltán 2004
Az interrupt Benesóczky Zoltán 2004 1 Az interrupt (program megszakítás) órajel generátor cím busz környezet RESET áramkör CPU ROM RAM PERIF. adat busz vezérlõ busz A periféria kezelés során információt
Globális operátor overloading
Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal
6. Közös változóval rendelkező párhuzamos program, Közös változó,
6. Közös változóval rendelkező párhuzamos program, Közös változó, Reynold kritérium. Atomi művelet, atomi utasítás. szintaxis, szemantika, tulajdonságok. Szinkronizációs párhuzamos program, szintaxis,
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
Processzusok 1 Uniprogramozás Program A futás várakozás futás várakozás Idő A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna 2 Multiprogramozás Program A futás vár futás
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
PROBLÉMAFELVETÉS. Programozás III. Mit csinál? SZÁLAK + MULTIMÉDIA
Programozás III PROBLÉMAFELVETÉS Mit csinál? SZÁLAK + MULTIMÉDIA PROBLÉMAFELVETÉS RÉSZLET JAVÍTÁSI ÖTLET 1 JOBB JAVÍTÁSI ÖTLET MEGOLDÁS SZÁLKEZELÉS még mindig nem látszik semmi mert az applet is alszik
Az operációs rendszer szerkezete, szolgáltatásai
Az operációs rendszer szerkezete, szolgáltatásai Felhasználói programok Rendszerhívások Válaszok Kernel Eszközkezelők Megszakításvezérlés Perifériák Az operációs rendszer szerkezete, szolgáltatásai Felhasználói
Matematikai és Informatikai Intézet. 4. Folyamatok
4. Folyamatok A folyamat (processzus) fogalma Folyamat ütemezés (scheduling) Folyamatokon végzett "mûveletek" Folyamatok együttmûködése, kooperációja Szálak (thread) Folyamatok közötti kommunikáció 49
Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január
Osztott jáva programok automatikus tesztelése Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január Osztott alkalmazások Automatikus tesztelés Tesztelés heurisztikus zaj keltés Tesztelés genetikus
2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS
OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS A PROCESSZ A PROCESSZ Program: a végrehajtandó utasítások sorozata Processz: a végrehajtás alatt levő program ÁLLAPOTOK LÉTREHOZÁS ALATT Belépés Kilépés TERMINÁLT
Magas szintű optimalizálás
Magas szintű optimalizálás Soros kód párhuzamosítása Mennyi a várható teljesítmény növekedés? Erős skálázódás (Amdahl törvény) Mennyire lineáris a skálázódás a párhuzamosítás növelésével? S 1 P 1 P N GPGPU
Előadás_# Az első ZH megírása
Előadás_#05. 1. Az első ZH megírása 2. Szinkronizáció [OR_02_Folyamatok_zs.ppt az 57-114. diáig / nem minden diát érintve] Azok a folyamatok, melyek egymástól nem függetlenek, azaz valamilyen függőség
Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
Operációs Rendszerek II.
Operációs Rendszerek II. Harmadik előadás Első verzió: 2004/2005. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter Visszatekintés: folyamatok Programok és erőforrások dinamikus összerendelése a program
5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
Már megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
Számítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
Feladatok (task) kezelése multiprogramozott operációs rendszerekben
Operációs rendszerek (vimia219) Feladatok (task) kezelése multiprogramozott operációs rendszerekben dr. Kovácsházy Tamás 3. anyagrész 1. Ütemezéssel kapcsolatos példa 2. Összetett prioritásos és többprocesszoros
Web-technológia PHP-vel
Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request
Kiterjesztések sek szemantikája
Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból
UNIX: folyamatok kommunikációja
UNIX: folyamatok kommunikációja kiegészítő fóliák az előadásokhoz Mészáros Tamás http://home.mit.bme.hu/~meszaros/ Budapesti Műszaki Egyetem Méréstechnika és Információs Rendszerek Tanszék 1 A kommunikáció
JAVA PROGRAMOZÁS 2.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,
Java programozási nyelv 4. rész Osztályok II.
Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék
Operációs rendszerek MINB240
Szemaforok Operációs rendszerek MINB24 3. előadás Ütemezés Speciális változók, melyeket csak a két, hozzájuk tartozó oszthatatlan művelettel lehet kezelni Down: while s < 1 do üres_utasítás; s := s - 1;
Folyamatok. 6. előadás
Folyamatok 6. előadás Folyamatok Folyamat kezelése, ütemezése folyamattábla új folyamat létrehozása átkpcsolás folyamatok elválasztása egymástól átlátszó Szál szálkezelő rendszer szálak védése egymástól
C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18
C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
Bevezetés a számítástechnikába
Bevezetés a számítástechnikába Megszakítások Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 9. Bevezetés Megszakítások
Folyamatszálak. Folyamatszálak. Folyamat. Folyamatszál. Szálak felépítése. Folyamatszálak általános jellemzői
Folyamatszálak Folyamatszálak A több szál fogalma először az időszeletes rendszereknél (time sharing systems) jelent meg, ahol egyszerre több személy is bejelentkezhetett egy központi számítógépre. Fontos
Java programozási nyelv 9. rész Kivételkezelés
Java programozási nyelv 9. rész Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/24 Tartalomjegyzék
Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
Termelő-fogyaszt. fogyasztó modell
Termelő-fogyaszt fogyasztó modell A probléma absztrakt megfogalmazása Adott egy N 1 kapacitású közös tároló. Adott a folyamatok két csoportja, amelyek a tárolót használják. n 1 termelő folyamat, m 1 fogyasztó
Szálak szinkronizálása (Ro- Sincronizarea threadurilor)
Szálak szinkronizálása (Ro- Sincronizarea threadurilor) A gyakorlat célja: Megismerkedni a szálak szinkronizációs metódusaival és alkalmazásuk a Windows környezetben. Elméleti bevezető: Szálak szinkronizálása:
Podoski Péter és Zabb László
Podoski Péter és Zabb László Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő
(kernel3d vizualizáció: kernel245_graph.mpg)
(kernel3d vizualizáció: kernel245_graph.mpg) http://www.pabr.org/kernel3d/kernel3d.html http://blog.mit.bme.hu/meszaros/node/163 1 (ml4 unix mérés boot demo) 2 UNIX: folyamatok kezelése kiegészítő fóliák
Dr. Illés Zoltán
Dr. Illés Zoltán zoltan.illes@elte.hu Operációs rendszerek kialakulása Op. Rendszer fogalmak, struktúrák Fájlok, könyvtárak, fájlrendszerek Fizikai felépítés Logikai felépítés Folyamatok Létrehozásuk,
LabView Academy. 4. óra párhuzamos programozás
LabView Academy 4. óra párhuzamos programozás Ellenőrző kérdések Hogyan lehet letiltani az automatikus hibakezelés funkciót? a) Engedélyezzük az Execution highlighting ot b) A subvi error out cluster-jét
Operációs rendszerek Folyamatok 1.1
Operációs rendszerek p. Operációs rendszerek Folyamatok 1.1 Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK A rendszermag Rendszermag
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai
A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Bevezetés a párhuzamos programozási koncepciókba
Bevezetés a párhuzamos programozási koncepciókba Kacsuk Péter és Dózsa Gábor MTA SZTAKI Párhuzamos és Elosztott Rendszerek Laboratórium E-mail: kacsuk@sztaki.hu Web: www.lpds.sztaki.hu Programozási modellek
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Interfészek. PPT 2007/2008 tavasz.
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált
Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor
Gráfok 1. Tárolási módok, bejárások előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok Szélességi
10. előadás Párhuzamos programozási kérdések. Az Ada taszkok (1).
10. előadás Párhuzamos programozási kérdések. Az Ada taszkok (1). Párhuzamos programozás Program: több tevékenység egyidőben Önálló folyamatok Együttműködnek Többféle lehetőség Elosztott rendszer (distributed
Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)
Szimuláció RICHARD M. KARP és AVI WIGDERSON A Fast Parallel Algorithm for the Maximal Independent Set Problem című cikke alapján (Készítette: Domoszlai László) 1. Bevezetés A következőkben megadott algoritmus
The Flooding Time Synchronization Protocol
The Flooding Time Synchronization Protocol Célok: FTSP Alacsony sávszélesség overhead Node és kapcsolati hibák kiküszöbölése Periodikus flooding (sync message) Implicit dinamikus topológia frissítés MAC-layer
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Feladatok (task) együttműködése
Operációs rendszerek (vimia219) Feladatok (task) együttműködése dr. Kovácsházy Tamás 5. anyagrész, Kölcsönös kizárás, szinkronizáció, kommunikáció Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika
Operációs rendszerek MINB240
Mutex Operációs rendszerek MINB24 3. előadás Ütemezés Bináris szemafor Szemaforváltozója csak két értéket vehet fel ( / 1; foglalt / szabad) Kölcsönös kizárásra 1 kezdőértékű mutex A kritikus szakaszba
Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?
Szálkezelés 1. A szekvencia diagram feladata az objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengely. A
Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:
Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból
A programozás alapjai
A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,
2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés. 2.1. Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése
Operációs rendszerek 2. Folyamatok Simon Gyula 2. Folyamatok Bevezetés Folyamatkezelés multiprogramozott rendszerben Környezet váltás Folyamatleírók, I/O leírók Szálak Megszakítások Felhasznált irodalom:
OOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
OOP. Alapelvek Elek Tibor
OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós
Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát
Java programozási nyelv 5. rész Osztályok III.
Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
Web-programozó Web-programozó
Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,
Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015
Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 9. ELİADÁS Kivételkezelés (Exception handling) 2 Mi a kivétel (exception)? A kivétel, olyan hibás állapot vagy esemény, amely
Ütemezés (Scheduling),
1 Ütemezés (Scheduling), Alapfogalmak Ütemezési feltételek (kritériumok) Ütemezési algoritmusok Több-processzoros eset Algoritmus kiértékelése 2 Alapfogalmak A multiprogramozás célja: a CPU foglaltság
Generikus Típusok, Kollekciók
Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections
Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?
Szálkezelés 1. A szekvencia diagram feladata az objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengely. A
Tartalom. Operációs rendszerek. Precedencia. 3.2 Szinkronizáció. 3.1 Folyamatokból álló rendszerek. Együttműködő folyamatok használatának indokai
Tartalom Operációs rendszerek 3. Folyamatok kommunikációja Simon Gyula Bevezetés Szinkronizáció A kritikus szakasz megvalósítási módozatai Információcsere ok között Felhasznált irodalom: Kóczy-Kondorosi