Folyamatszálak. Folyamatszálak. Folyamat. Folyamatszál. Szálak felépítése. Folyamatszálak általános jellemzői

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Folyamatszálak. Folyamatszálak. Folyamat. Folyamatszál. Szálak felépítése. Folyamatszálak általános jellemzői"

Átírás

1 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 volt a processzor idejének igazságos megosztása (kiosztása) a felhasználók közt. Így jött létre a folyamat és a folyamatszál. Folyamat Egy folyamat (process), munka (job) vagy feladat (task) olyan számítás (műveletek meghatározott sorrendben történő szekvenciális végrehajtása), amelyet konkurensen, párhuzamosan hajthatunk végre más számításokkal. A folyamat a processzor aktivitásának absztrahálása, vagyis egy program futó példánya (egy végrehajtás alatt álló program a végrehajtás megkezdődött, de még nem fejeződött be). A folyamatokat és a párhuzamos végrehajtást leginkább úgy tudjuk szemléltetni, hogy minden egyes folyamathoz tartozik egy logikai processzor és egy logikai memória. A memória tárolja a programkódot, a konstansokat és a változókat, a programot a processzor hajtja végre. A programkódban szereplő utasítások és a végrehajtó processzor utasításkészlete megfelelnek egymásnak. Az operációs rendszer feladata, hogy a fizikai eszközökön (fizikai processzor, fizikai memória) egymástól elkülönítetten, védetten létrehozza és működtesse a folyamatoknak megfelelő logikai processzorokat és memóriákat ezeket megfeleltesse a fizikai processzornak, fizikai memóriának, mintegy kiossza a fizikai processzort a logikai processzoroknak (a folyamatok versengenek a CPU-ért). Folyamatszál A folyamathoz kötődő további általános fogalom a szál (thread) fogalma. A szál egy folyamaton belüli végrehajtási egység, amely egy környezetből és saját utasítássorozatból áll. A folyamatszálakat a folyamaton belül lehet párhuzamosan végrehajtani. A szálakat akkor fejlesztették ki, amikor nyilvánvalóvá vált, hogy nem az időveszteségesen végrehajtható alkalmazásokra van szükség (pl. felhasználóra várni, hogy beavatkozzon), hanem olyan alkalmazásokra, amelyek lehetőleg egyszerre több művelethalmazt is végrehajtanak egyidejűleg, párhuzamosan (pl. háttérben futó helyesírás ellenőrzés, vagy érkező hálózati üzenetek feldolgozása), de ezek a műveletek ne különálló folyamatokba legyenek szervezve, hanem egy folyamaton belül jelenjenek meg. A különálló folyamatok létrehozása és az egymással való kommunikáció megvalósítása nagy többletmunkát jelentett ezen alkalmazások esetén. Szálak felépítése A szálaknak saját logikai processzorúk van (a CPU-ért ugyanúgy versenyeznek, mint a folyamatok), azonban memóriáik nincsenek védetten elkülönítve, közös logikai memóriát használnak, csak a kódon és változókon osztoznak. A folyamat adatzónáját és környezetét minden szál közösen használja. Az egyetlen memória terület, amelyet egy szál elfoglal, az a hozzárendelt verem. Minden folyamatszál saját környezettel rendelkezik. A fentiek miatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között. Ez a szálak alkalmazásának gyakorlati jelentősége. Folyamatszálak általános jellemzői A folyamatszálakat párhuzamosan futó végrehajtási egységekből álló programok írására használjuk. A folyamatszálak utasítás sorozatokat hajtanak végre, amelyek egybezártnak tekinthetők. A folyamatszál végrehajtását bármikor meg lehet szakítani, így az átadja a vezérlést egy másik szálnak. A folyamatszálakat való műveleteket rendszerhívások (Windows NT, Sun Solaris operációs rendszerek esetében) vagy a programozási könyvtárak (C, C++) segítik.

2 Folyamatszálak állapotai Borland Delphiben egy szál lehet: Aktív vagy továbbindított (resumed) Felfüggesztett (suspended) Folyamatszálak állapotai C/C++, Java programozási nyelvekben négy lehetséges állapota van egy szálnak: Aktív (fut a szál): a folyamat erőforrásait ellenőrzés alatt tarthatja. Más szál nem lehet aktív ugyanabban az időben, hacsak nincs több rendelkezésünkre álló processzor. Egy szál három okból állhat le: A szál átadja a vezérlést egy másik szálnak. A száltól az ütemező erőszakosan veszi el a vezérlést. Az életciklusa végére ér (meghal). Futtatható: ha futtatásra készen áll. Az ilyen állapotban levő szál nem vár I/O-ra, hanem csak arra, hogy az operációs rendszer futásra ütemezze. Nem futtatható: a szál nem kész a végrehajtásra. Ez akkor következhet be, ha: Blokkolva van: valamilyen erőforrástól információt vár (pl. CPU, I/O, billentyűzet, szinkronizációs objektum). Ha megkapja a várt információt, akkor futtatható állapotba kerül. Alszik: a szálunk leáll a végrehajtással, hogy a többi szálak is esélyt kapjanak a futásra. Ez nagyon fontos segítőkész szálak (cooperative threads) esetében, azért hogy biztosítsák más szálaknak is a futásra való esélyt. Halott: Egy szálat akkor tekintünk halottnak, ha megszűnik létezni a fent említett állapotok egyikében. Egy szál meghalhat, ha eléri kódjának végét, vagy ha megöli egy eljáráshívás az őt tartalmazó folyamatból vagy egy másik szálból a folyamaton belül. Prioritás A prioritás a szál fontosságára vonatkozik a többi futtatható állapotban levő szállal szemben. Amikor több szál is futásra kész állapotban van, akkor a szálütemezőnek döntenie kell, hogy melyik szálat futassa. Az ütemező a legnagyobb prioritású szálat választja. Ha éppen fut egy szál, akkor egy magasabb prioritású szál az aktív szál felfüggesztését vonja maga után, így megengedheti magának, hogy addig fusson amíg át nem akarja engedni a vezérlést egy másik szálnak, vagy egy magasabb prioritású szál meg nem szakítja futását. A szálak nem módosítják a programunk szemantikáját, csak a műveletek időzítését változtatják meg. Így összefüggő problémák megoldására elegáns módszert nyújtanak. Mikor használjunk szálakat? Lassú feldolgozásnál: ha egy alkalmazás hosszasan számol, számít, nem tud üzeneteket fogadni, tehát nem tudja az eredmény kiírását sem frissíteni. Háttérben folyó feldolgozás: egyes feladatok nem időkritikusak, de folyamatosan kell végrehajtódjanak (pl. a nyomtatás végrehajtása egy szövegszerkesztőben tipikusan másik szál feladata, hisz ez időt vesz igénybe, és a felhasználó szeretné munkáját folytatni a nyomtatás elindítása után, nem feltétlenül várja ki annak befejezését.). I/O műveletek: az I/O műveleteknek előreláthatatlan késése lehet (pl. állományok másolása a háttérben). Kiszolgálás: Kliens-szerver architektúrák esetében a szerver minden egyes kliensre létrehoz egy folyamatszálat és párhuzamosan szolgálja ki őket. Szálak használatának előnyei A többprocesszoros rendszerek kihasználása: egy egyszerű egyszálas alkalmazás nem tud kihasználni két vagy több processzort. Több processzoros gépek esetén az operációs rendszer feladata az, hogy a processzorokat rejtetten ossza ki, anélkül, hogy a programozó, felhasználó tudná, hogy most pont melyik processzorban fut a kód. Így a szálak használatában (programozáskor) sem kell különbséget tenni az egy- és a többprocesszoros gépek között. Hatékony időmegosztás: szálakkal és folyamat-prioritásokkal biztosíthatjuk, hogy mindenki igazságos CPU időkiosztásban részesüljön. Hatékony erőforrás-kihasználás: a rendszerben a processzoron kívül lehetnek más erőforrások is, amelyeket hatékonyan meg lehet osztani a folyamatszálak között (pl. egy folyamat nem használja ki az adott erőforrást lehetőleg minden erőforrás minden pillanatban maximálisan ki kell legyen használva). A feladat-végrehajtás gyorsítása: ha egy feladatot párhuzamosan végrehajtható részfeladatokra tudunk bontani, és ezeket párhuzamosan végre tudjuk hajtani (pl. valódi párhuzamossággal), akkor jelentős gyorsítást érhetünk el. Többféle feladat egyidejű végrehajtása: A számítógépet egyidejűleg többféle célra tudjuk felhasználni (pl. számítás közben levélírás, képnézés).

3 Alkalmazás Az alkalmazásban a főszál nem fut állandóan. Lehetnek hosszú időintervallumok, amikor nem kap üzenetet, nem végez számítást. Az alkalmazás által lefoglalt memória és más erőforrások megvannak, az ablak is a képernyőn van, de a kódból nem hajtódik végre egyetlen részlet sem. Az alkalmazást elindítottuk, és a fő szál fut. Amikor az alkalmazás ablaka létrejött nincs semmilyen más dolga, csak üzenetekre vár. Ha nincs új üzenet amit fel kell dolgozni, akkor az operációs rendszer felfüggeszti a szálat. Amikor a felhasználó a menüből kiválasztotta a parancsot, az operációs rendszer újra aktívvá teszi a szálat, megjelenik az adatbeolvasó dialógusdoboz. A főszál most újra aktív. Ez a felfüggesztés-továbbindítás többször is megismétlődik, amíg ki nem lépünk az alkalmazásból. A főszál nem használja ki hatékonyan az erőforrásokat, sok a szünet, az az időintervallum, amikor az alkalmazás nem csinál semmit. Műveletek folyamatszálakkal Folyamatszál elindítása Folyamatszál felfüggesztése Folyamatszál újraindítása Folyamatszálak közötti kommunikáció, szinkronizálás Folyamatszál megsemmisítése Folyamatszálak elindítása Folyamatszálak elindítására a különböző programozási nyelvek függvényeket biztosítanak, az objektumorientált nyelvekben a folyamatszálakat osztályok valósítják meg, az elindítást pedig a konstruktor. Gyakran bizonyos beállításokat szeretnénk eszközölni a szálon, mielőtt elindítanánk. Létrehozáskor megadhatjuk, hogy a szál, létrehozása után aktív legyen vagy felfüggesztett. Ezeket a beállításokat a függvények vagy a konstruktor paramétereivel érhetjük el. Ha felfüggesztett állapotban hozzuk létre a szálat, akkor a főszál adatokat állíthat be, biztosítva, hogy amikor a szálat elindítjuk, fogja látni a módosításokat, az adatok frissítve lesznek. Folyamatszál felfüggesztése Folyamatszálak megszüntetésére a programozási környezet függvényeket biztosít. Felfüggesztés után a folyamatszál nem lesz aktív. Minden általa lefoglalt erőforrás megmarad, de a szál már nem dolgozik.

4 Folyamatszál újraindítása Folyamatszálak újraindítására a programozási környezet függvényeket biztosít. Egy felfüggesztett szálat újra lehet indítani (aktívvá tenni). Ekkor újrakezdi működését, dolgozni kezd. Folyamatszálak közötti kommunikáció, szinkronizálás A folyamatszálak egymáshoz való viszonyukat, a köztük lévő kommunikációt tekintve lehetnek: függetlenek versengők együttműködők. A független folyamatszálak egymás működését nem folyásolják be. Végrehajtásuk teljes mértékben aszinkron, nem függnek egymástól, egymással párhuzamosan is végrehajtódhatnak. A versengő folyamatszálak nem ismerik egymást, de közös erőforrásokon kell osztozniuk. A korrekt és biztonságos erőforrás-kezelés szinkronizálást igényel (pl. ha egy szál nyomtatni akar, és a nyomtató foglalt, egy másik szál nyomtat, akkor a második meg kell hogy várja, amíg az első szál, amely lefoglalta a nyomtatót, befejezi a nyomtatást). Az együttműködő folyamatszálak ismerik egymást, együtt dolgoznak egy feladat megoldásán, információt cserélnek kommunikálnak egymással. A kooperatív viselkedést a programozó határozta meg, a feladatot tervszerűen bontottuk egymással kommunikáló folyamatszálakra. Az együttműködést, a kommunikációt adat- vagy információcsere útján tudják megvalósítani a szálak. A cserélt információ esetenként egyetlen bitnyi is lehet (flag), máskor akár több megabájt is lehet. A szálak közötti információcserének két alapvető módja alakult ki: közös memórián keresztül, illetve üzenetküldéssel / fogadással. Közös memória Közös memórián keresztül történő adatcsere esetén az együttműködő szálak mindegyike a saját címtartományában lát egy közös memóriát (globális rész az alkalmazás címtartományában). Ezt a közös memóriát egyidejűleg több szál is írhatja, illetve olvashatja, a PRAM (Pipelined Random Access Memory) modell szerint. Közös memória Az olvas és ír műveletek egyidejű végrehajtására a következő szabályok vonatkoznak: olvasás-olvasás ütközésekor mindkét olvasás ugyanazt az eredményt adja, és ez megegyezik a memória tartalmával; olvasás-írás ütközésekor a memória tartalma felülíródik a beírt adattal, az olvasás eredménye a memória régi, vagy az új tartalma lesz, annak függvényeben, hogy melyik történt hamarabb, az írás vagy az olvasás; írás-írás ütközésekor valamelyik művelet hatása érvényesül, az utoljára beírt érték felülírja a memória tartalmát.

5 Közös memória Az egyidejű műveletek nem interferálhatnak, nem lehet közöttük zavaró kölcsönhatás, harmadik érték sem olvasáskor, sem íráskor nem alakulhat ki. Az írás és olvasás műveletek a PRAM modell szintjén atomiak, tovább nem oszthatók. A pipelined elnevezés azt tükrözi, hogy a memóriához egy sorosítást végző csővezetéken jutnak el a parancsok. Kommunikáció üzenetekkel A szálak nem használnak közös memóriát. Rendelkezésünkre áll két művelet: a Küld (Send)és a Fogad (Receive). A Küld(<adat>, <szál>) művelet végrehajtásakor a műveletet végrehajtó szál elküldi a megadott adatot a megadott folyamatszálnak, a Fogad(<adat>, <szál>) művelet pedig a megadott száltól érkező adatot tárolja. Folyamatszálak szinkronizálása Miért kell szinkronizálni? Kérdésünkre egyszerű választ ad a következő példa: Két személy, X és Y ugyanarra a bankszámlára kiállított bankkártyával rendelkeznek (kx, ky). Mindketten egyszerre lépnek oda egy-egy bankautomatához (t0 időpont) és fel szeretnének venni egyenként 100 -t. A bankszámlán 200 van. Folyamatszálak szinkronizálása Ez egy lehetséges forgatókönyv, a kommunikáció sebessége a bank és a bankautomata közötti összeköttetés sebességétől függ, a műveletek sorrendje meghatározott, de a két szálon egymáshoz viszonyítva semmi sem biztosítja az egymásutániságot vagy precedenciát, a két szál között semmiféle kommunikáció nincs. Az ilyen problémákat race condition-nak, versengési feltételnek nevezzük: két vagy több szál egyszerre ugyanazért az erőforrásért verseng. Atomiság A szálak együttműködésének megértéséhez szükséges megértenünk az atomiság (elemiség) problémáját. Egy művelet vagy művelet sorozat atomi (elemi), ha tovább nem bontható más tevékenységekre. Ha egy szál elemi utasítást hajt végre, akkor az azt jelenti, hogy a többi szál nem kezdte el annak végrehajtását vagy már befejezte azt. Nem állhat fenn olyan eset, hogy egy szál egy másikat egy adott utasítás végrehajtásán érjen. Ha semmilyen szinkronizációt nem alkalmazunk a szálak közt, akkor szinte egy műveletet sem mondhatunk atominak.

6 Egyszerű példa az A globális változó értékét növeljük meg két különböző szálban (inc(a), inc(a) utasítást kell kiadni minden egyes szálban, az elvárt eredmény az, hogy az A értéke 2-vel nőjön). Ez az egyszerű utasítás assembly szinten három különböző utasításra bomlik le: Olvasd A-t a memóriából egy processzor-regiszterbe. Adj hozzá 1-et a processzor-regiszter értékéhez. Írd a regiszter értékét vissza a memóriába. Egyszerű példa Ha csak egyetlen processzorunk van, akkor egyszerre csak egy szál dolgozik, de az operációs rendszer ütemezője másodpercenként kb. 18-szor vált köztük. Az ütemező bármelyik pillanatban leállíthatja egyik szál futását és másikat indíthat el (az ütemezés preemptív). Az operációs rendszer nem vár a szál engedélyére, hogy mikor függesztheti fel azt és indíthat el helyette egy másikat. Így a váltás bármely két processzor-utasítás között megtörténhet. Képzeljük el, hogy két szál ugyanazt a kódrészletet (az A változó értékének növelését) hajtja végre egy egy processzoros gépen (a szálak legyenek X és Y). Szerencsés esetben program jól működik, az ütemezési műveletek elkerülhetik a kritikus szakaszt és a várt eredményt kapjuk: A értékét megnöveltük 2-vel (legyen A eredeti értéke 1). Az X szál által végrehajtott utasítások Olvasd A értékét a memóriából egy processzor-regiszterbe (1) Adj hozzá 1-et a regiszter értékéhez Írd a regiszter értékét vissza a memóriába (2) Az Y szál által végrehajtott utasítások Olvasd A értékét a memóriából egy processzor-regiszterbe Adj hozzá 1-et a regiszter értékéhez Írd a regiszter értékét vissza a memóriába (3) X Szál által végrehajtott utasítások Olvasd A értékét a memóriából egy processzor-regiszterbe (1) Adj hozzá 1-et a regiszter értékéhez (2) Írd a regiszter értékét vissza a memóriába (2) Y Szál által végrehajtott utasítások Olvasd A értékét a memóriából egy processzor-regiszterbe (1) Adj hozzá 1-et a regiszter értékéhez (2) Írd a regiszter értékét vissza a memóriába (2) Egyszerű példa Láthatjuk, tehát, hogy szinkronizálás vagy konkurencia szabályozás (concurrency control) nélkül súlyos problémák léphetnek fel elsősorban a következő műveletek esetében: megosztott erőforráshoz való hozzáféréskor nem VCL szálból a VCL nem szálbiztonságos részeinek elérése (szinkronizálás a grafikus felülettel, ablakkal) különálló szálból grafikus művelet végrehajtásánál VCL A VCL sem rendelkezik védelemmel a szinkronizációskonfliktusok ellen. Ez azt jelenti, hogy a szálváltás akkor is megtörténhet, amikor egy vagy több szál VCL kódot hajt végre. Egy szálváltás a nem megfelelő pillanatban megsértheti nem csak az adatot, hanem a kapcsolatokat is a komponensek között. Például a VCL-szál egy dialógusablakot nyit meg vagy egy lemezre írást kezd el, és felfüggesztődik, közben egy másik szál megváltoztat valamilyen megosztott adatot. A fő VCL-szál továbbindításkor észreveszi, hogy az adat megváltozott a dialógusablak felbukkanásának vagy a lemezre írás eredményeként. Rosszul értelmezi a helyzetet, rossz pontról folytatja a műveleteket.

7 Szinkronizálás A közös erőforrások használata, valamint a szálak közötti közös memória használatának biztonsága és helyessége érdekében a folyamatok aszinkron, teljesen szabad futását korlátozni kell. Ezeket a korlátozásokat nevezzük szinkronizációnak (szinkronizálásnak). Szinkronizálás Szinkronizálást megvalósíthatunk a következő szinkronizációs primitívekkel: Csatorna Mutex Feltételes változó Kritikus szakasz (kritikus zóna) Szemafor Monitor Csatorna A folyamatok közötti kommunikáció úgynevezett randevúk segítségével is megvalósítható. A randevúk lényege, hogy az a folyamat, amely elsőnek érkezik, mindaddig fel lesz függesztve (vár), míg a társa oda nem ér. Amikor a randevú teljes, akkor végrehajtódik mind a két folyamat. A folyamatok közötti kommunikáció csatornák segítségével valósulhat meg. A csatornákat Hoare vezette be 1985-ben. A lényegük az, hogy üzenetet küldhetünk, vagy üzenet fogadhatunk egy csatornán: ch!e az e értéket elküldjük a ch csatornán ch?v a v értéket vesszük a ch csatornáról Mutex A mutex (mutual exclusion) változó tulajdonképpen egy bináris szemafor, két lehetséges állapota van: lezárt (0) egy szál tulajdona Soha sem lehet egyszerre több szálnak a tulajdona. Ha egy szál egy lezárt mutexet szeretne megkapni, akkor várnia kell, amíg azt a foglaló szál felszabadítja. nyitott (1) egyetlen szálnak sem a tulajdona Egy mutex változón a következő műveleteket végezhetjük: Inicializálás (statikus vagy dinamikus) lezárás (hozzáférés igénylése a védett erőforráshoz = mutex igénylése) nyitás (felszabadítja az erőforrást) megsemmisítése a mutex változónak Feltételes változó A feltételes változók szinkronizációs és kommunikációs objektumok egy feltétel teljesülésére várakozó szál és egy feltételt teljesítő szál között. A feltételes változóhoz hozzá van rendelve egy: predikátum a feltétele aminek teljesülnie kell mutex változó a mutex változó biztosítja, hogy a feltétel ellenőrzése és a várakozás, vagy a feltétel ellenőrzése és teljesülésének jelzése atomi műveletként legyen végrehajtva. Egy feltételes változón a következő műveleteket végezhetjük: Inicializálás (statikus vagy dinamikus) Várakozás (WAIT) a szál várakozik amíg kívülről jelzik a feltétel teljesülését Jelzés (NOTYFY) az aktuális szál jelez az összes szálnak, amelyek várják a feltétel beteljesedését Megsemmisítés Kritikus szakasz Ha egy szál belép egy kritikus szakaszban, akkor lefoglal egy erőforrást és más szál nem férhet hozzá az adott erőforráshoz, ameddig a szál ki nem lép a kritikus szakaszból. Egy jól definiált kritikus szakasz a következő tulajdonságokkal rendelkezik: Egy adott időpontban egyetlen szál található a kritikus szakaszban, bármely más szál, amely hozzá akar férni a kritikus erőforráshoz, várakozik, míg az eredeti szál ki nem lép a kritikus szakaszból. A szálak relatív sebességei nem ismertek. Bármely szál leállítása csak a kritikus szakaszon kívül történhet. Egyetlen szál sem fog végtelen időt várni a kritikus szakaszban. A kritikus szakasz legegyszerűbb megvalósítása egy bináris szemafor segítségével történik.

8 Szemafor A folyamatok szinkronizálására speciális nyelvi elemeket kell bevezetni. A legelőször bevezetett nyelvi elem a szemafor volt, amelyet Dijkstra mutatott be 1968-ban a kölcsönös kizárás problémájának megoldására. Ez az eszköz a nevét a vasúti jelzőberendezésről kapta, logikai hasonlósága miatt. A szemafor általánosan egy pozitív egész értékeket vehet fel. Speciális a bináris szemafor, amelynek értéke csak 0 és 1 lehet. A lehetséges műveletek neve wait és signal. A műveletek hatása a következő: wait(s): ha s > 0, akkor s := s 1, különben blokkolja ezt a folyamatot s-en; signal(s): ha van blokkolt folyamat s-en, akkor indít közülük egyet, különben s := s + 1. Lényeges, hogy ezek a műveletek oszthatatlanok, azaz végrehajtásuk közben nem történhet folyamatváltás. Ugyancsak lényeges a szemafor inicializálása is, mert itt határozzuk meg, hogy egyszerre hányan férhetnek hozzá az erőforráshoz. Monitor A monitorokat Hoare vezette be 1974-ben. A monitor objektum egy több szál által használt eljárás nem párhuzamos végrehajtását teszi lehetővé. A monitor tulajdonképpen ötvözi az objektum orientált programozást a szinkronizációs metódusokkal. Egy monitor objektum részei: osztott adat ezeket az adatokat feldolgozó eljárások monitort inicializáló metódusok Mindegyik eljárás halmazt egy monitor kontrolál. A többszálas alkalmazás futásakor a monitor egyetlen szálnak engedélyezi egy adott időpontban az eljárás végrehajtását. Ha egy szál éppen egy monitor által kontrolált eljárást akar futtatni, akkor az lefoglalja a monitort. Ha a monitor már foglalt, akkor várakozik, amíg a monitort lefoglaló szál befejezi a adott eljárás végrehajtását és felszabadítja a monitort. Folyamatszál megsemmisítése A szálak, mint bármely más objektum, memória és erőforrás lefoglalást igényelnek. Így a befejezés után a szálakat meg kell semmisíteni, fel kell őket szabadítani. Erre két lehetőségünk van: Hagyjuk magát a szálat, hogy felszabadítsa önmagát. Ez akkor hasznos, ha: a szál az eredményeket még a befejeződése előtt visszaadja a főszálnak a szál befejeződéskor nem tartalmaz semmilyen hasznos információt, amelyre a főszálnak szüksége lenne. A szál befejeződése után a főszál kiolvassa a szükséges információkat és ő maga szabadítja fel a szálat. Folyamatszál megsemmisítése Ha hagyjuk, hogy a szál önmagát szabadítsa fel, kellemetlen következményekre is számíthatunk. Az egyik az, ha megpróbálunk az alkalmazásból kilépni, miközben a szál még aktív és dolgozik. Ekkor az alkalmazást befejezzük anélkül, hogy figyelemmel lennénk a szál állapotára. A másik: az alkalmazásból akkor akarunk kilépni, amikor a szálunk fel van függesztve. Ekkor az operációs rendszer erőszakosan fejezi be a szál futását. Nem helyes programozási stílus, ha erőszakosan semmisítjük meg a szálat, nem vagyunk tekintettel arra, hogy az épp mit csinált (pl. lehet, hogy éppen egy állományba ír. Ha a felhasználó ilyenkor kilép az alkalmazásból, akkor a fájl sérült lesz). Helyesebb, elegánsabb, ha mindig a főszál szabadítja fel az általa létrehozott szálakat. Étkező filozófusok

9 A párhuzamos paradigma talán legnépszerűbb feladata az étkező filozófusok (dining philosophers), amelyet Edsger Wybe Dijkstra ( ) javasolt 1971-ben a holtpont helyzetek és a párhuzamos szinkronizálás szemléltetésére. Egy tibeti kolostorban öt filozófus él. Minden idejüket egy asztal körül töltik. Mindegyikük előtt egy tányér, amelyből soha nem fogy ki a rizs. A tányér mellett jobb és bal oldalon is egyegy étkezőpálcika található. A filozófusok gondolkodnak, majd amikor megéheznek felveszik a tányérjuk mellett lévő két pálcikát, esznek, majd visszateszik a pálcikákat és ismét gondolkodni kezdenek. Evés közben mivel mindkét pálcika foglalt a filozófus szomszédai nem ehetnek. Amikor egy filozófus befejezte az étkezést, leteszi a pálcikákat, így ezek elérhetővé válnak a szomszédai számára. Holtpont A nagy kérdés pedig az, hogy mit kell csináljanak a filozófusok, hogy ne vesszenek össze a pálcikákon. Ha mindegyikük felveszi például a jobb pálcikát és nem teszi le, mindegyik várakozni fog a szomszédjára és éhen halnak. A holtpont (deadlock) akkor következhet be, amikor két (vagy több) folyamat egyidejűleg verseng erőforrásokért, és egymást kölcsönösen blokkolják. A két vagy több folyamat közül egyik sem tud továbblépni, mert mindkettőnek éppen arra az erőforrásra lenne szüksége, amit a másik lefoglalt. Köszönöm a figyelmet!

Folyamatszálak szinkronizálása

Folyamatszálak szinkronizálása Több mint negyven éves kutatómunkájának szakterülete a felületi kémia. A szilárd felületek szerkezetkutatásán belül azok reakciókészségét, a felületi folyamatok dinamikáját (az oszcilláló reakciók nem

Részletesebben

Előadás_# Az első ZH megírása

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

Részletesebben

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

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)

Részletesebben

Operációs rendszerek. Az NT folyamatok kezelése

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

Részletesebben

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

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)

Részletesebben

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. 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)

Részletesebben

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. 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

Részletesebben

Szálak szinkronizálása (Ro- Sincronizarea threadurilor)

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:

Részletesebben

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

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

Részletesebben

Szenzorhálózatok programfejlesztési kérdései. Orosz György

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

Részletesebben

Operációs rendszerek Folyamatok 1.1

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

Részletesebben

Számítógép architektúra

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

Részletesebben

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é 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

Részletesebben

... 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.

... 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

Részletesebben

Előadás_#04. Előadás_04-1 -

Előadás_#04. Előadás_04-1 - Előadás_#04. 1. Szálak (thread) [OR_02_Folyamatok_zs.ppt az 13-14. diáig] A szálakról általános érvényű megfogalmazásokat általában a multiprogramozott rendszerekre vonatkozóan csak nagyon óvatosan lehet

Részletesebben

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor Ismerkedjünk tovább a számítógéppel Alaplap és a processzeor Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív

Részletesebben

Operációs rendszerek. 3. előadás Ütemezé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:

Részletesebben

UNIX: folyamatok kommunikációja

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ó

Részletesebben

Operációs rendszerek MINB240

Operációs rendszerek MINB240 Processzusok, szálak Operációs rendszerek MINB240 2. előadás Szálak, IPC Egy processzus Saját címtartomány Egyetlen vezérlési szál Hasznos lehet több kvázi párhuzamos vezérlési szál használata egy címtartományban

Részletesebben

Konkurens TCP Szerver

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ó

Részletesebben

Tartalomjegyzék. Előszó... 10

Tartalomjegyzék. Előszó... 10 Előszó... 10 1. Bevezetés a Symbian operációs rendszerbe... 11 1.1. Az operációs rendszer múltja...11 1.2. Az okos telefonok képességei...12 1.3. A Symbian felépítése...15 1.4. A könyv tartalma...17 2.

Részletesebben

Windows ütemezési példa

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

Részletesebben

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés. 2.1. Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

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:

Részletesebben

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 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

Részletesebben

Folyamatok. 6. előadás

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

Részletesebben

Dr. Mileff Péter

Dr. Mileff Péter Dr. Mileff Péter 1 2 1 Szekvencia diagram Szekvencia diagram Feladata: 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é

Részletesebben

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 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

Részletesebben

Operációs rendszerek. Folyamatok

Operációs rendszerek. Folyamatok Operációs rendszerek Folyamatok Folyamatok A folyamat (process) a multiprogramozott rendszerek alapfogalma. Folyamat általános definíciója: Műveletek meghatározott sorrendben történő végrehajtása. Műveletek

Részletesebben

(kernel3d vizualizáció: kernel245_graph.mpg)

(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

Részletesebben

Programozási nyelvek és módszerek Java Thread-ek

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

Részletesebben

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek. Az NT memóriakezelése Operációs rendszerek MS Windows NT (2000) memóriakezelés Az NT memóriakezelése 32-bites virtuális memóriakezelés: 4 GB-os címtartomány, alapesetben: a fels! 2 GB az alkalmazásoké, az alsó 2 GB az OPR-é.

Részletesebben

Párhuzamos programozási platformok

Párhuzamos programozási platformok Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási

Részletesebben

Operációs rendszerek. Bemutatkozás

Operációs rendszerek. Bemutatkozás Bevezetés az operációs rendszerek világába dr. Benyó Balázs benyo@sze.hu Bemutatkozás www.sze.hu/~benyo 1 Számítógép HW-SW felépítése felhasználó felhasználó felhasználó Operációs rendszer Operációs rendszer

Részletesebben

Operációs rendszerek MINB240

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;

Részletesebben

Párhuzamos programozási platformok

Párhuzamos programozási platformok Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási

Részletesebben

Operációs rendszerek

Operációs rendszerek Operációs rendszerek 2. EA Regiszter: A regiszterek a számítógépek központi feldolgozó egységeinek (CPU-inak), illetve mikroprocesszorainak gyorsan írható-olvasható, ideiglenes tartalmú, és általában egyszerre

Részletesebben

Nyíregyházi Főiskola Matematika és Informatika Intézete. Holtpont (Deadlock) Alapfogalmak, példák, ábrázolás. Biztonságos és nem biztonságos állapot

Nyíregyházi Főiskola Matematika és Informatika Intézete. Holtpont (Deadlock) Alapfogalmak, példák, ábrázolás. Biztonságos és nem biztonságos állapot 1 Holtpont (Deadlock) Alapfogalmak, példák, ábrázolás Kialakulási feltételek Biztonságos és nem biztonságos állapot Holtpont kezelési stratégiák Problémák 2 Alapfogalmak A deadlock (holtpont) az az állapot,

Részletesebben

Matematikai és Informatikai Intézet. 4. Folyamatok

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

Részletesebben

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

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

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Operációs rendszerek. Holtpont

Operációs rendszerek. Holtpont Operációs rendszerek Holtpont Holtpont (deadlock) fogalma A folyamatok egy csoportja olyan eseményre vár, amelyet egy másik, ugyancsak várakozó folyamat tud előidézni. Esemény: tipikusan erőforrás felszabadulása.

Részletesebben

Operációs rendszerek

Operációs rendszerek Operációs rendszerek 10. előadás - Holtpont kezelés, szignálok 2006/2007. II. félév Dr. Török Levente Links A. Tanenbaum: Op. rendszerek http://www.iit.uni-miskolc.hu/%7evadasz/geial201/jegyzet/3rd.pdf

Részletesebben

Iman 3.0 szoftverdokumentáció

Iman 3.0 szoftverdokumentáció Melléklet: Az iman3 program előzetes leírása. Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1. Az Iman rendszer...2 1.1. Modulok...2 1.2. Modulok részletes leírása...2 1.2.1. Iman.exe...2 1.2.2. Interpreter.dll...3

Részletesebben

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 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás - Pál László 12. ELŐADÁS Állomány-kezelés 2 Objektumorientált programozás - Pál László Mi a

Részletesebben

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges

Részletesebben

Digitális technika VIMIAA01 9. hét

Digitális technika VIMIAA01 9. hét BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges

Részletesebben

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Mi az IMDG? Nem memóriában futó relációs adatbázis NoSQL hagyományos relációs adatbázis Más fajta adat tárolás Az összes adat RAM-ban van, osztott

Részletesebben

AZ OPERÁCIÓS RENDSZER MINT ABSZTRAKT, VIRTUÁLIS GÉP

AZ OPERÁCIÓS RENDSZER MINT ABSZTRAKT, VIRTUÁLIS GÉP 2. AZ OPERÁCIÓS RENDSZER MINT ABSZTRAKT, VIRTUÁLIS GÉP Mint az előző fejezetben megállapítottuk, az operációs rendszer egyik fő feladata, hogy egy kényelmesen kezelhető virtuális gépet jelenítsen meg a

Részletesebben

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter Dr. Mileff Péter 1 2 Szekvencia diagram Feladata: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őtengelyt képvisel.

Részletesebben

Az operációs rendszer szerkezete, szolgáltatásai

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

Részletesebben

OPERÁCIÓS RENDSZEREK. Elmélet

OPERÁCIÓS RENDSZEREK. Elmélet 1. OPERÁCIÓS RENDSZEREK Elmélet BEVEZETÉS 2 Az operációs rendszer fogalma Az operációs rendszerek feladatai Csoportosítás BEVEZETÉS 1. A tantárgy tananyag tartalma 2. Operációs rendszerek régen és most

Részletesebben

Számítógépek felépítése

Számítógépek felépítése Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák

Részletesebben

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt segédlet A Szilipet programok az adatok tárolásához Firebird adatbázis szervert használnak. Hálózatos

Részletesebben

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor A szotverarchitektúra fogalma A szoftverarchitektúra nagyon fiatal diszciplína. A fogalma még nem teljesen kiforrott. Néhány definíció: A szoftverarchitektúra

Részletesebben

A programozás alapjai

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,

Részletesebben

Számítógép felépítése

Számítógép felépítése Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége

Részletesebben

Operációs rendszerek. Folyamatok ütemezése

Operációs rendszerek. Folyamatok ütemezése Operációs rendszerek Folyamatok ütemezése Alapok Az ütemezés, az események sorrendjének a meghatározása. Az ütemezés használata OPR-ekben: az azonos erőforrásra igényt tartó folyamatok közül történő választás,

Részletesebben

Operációs Rendszerek II.

Operációs Rendszerek II. Operációs Rendszerek II. Második előadás Első verzió: 2004/2005. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter Visszatekintés Visszatekintés Operációs rendszer a számítógép hardver elemei és az

Részletesebben

Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus.

Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus. Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus. Input/Output I/O Hardware I/O eszközök (kommunikációs portok szerint

Részletesebben

Operációs rendszerek MINB240

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

Részletesebben

Podoski Péter és Zabb László

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ő

Részletesebben

13. óra op. rendszer ECDL alapok

13. óra op. rendszer ECDL alapok 13. óra op. rendszer ECDL alapok 1. Mire szolgál az asztal? a) Az ideiglenesen törölt fájlok tárolására. b) A telepített alkalmazások tárolására. c) A telepített alkalmazások ikonok általi gyors elérésére.

Részletesebben

Grafikus csővezeték 1 / 44

Grafikus csővezeték 1 / 44 Grafikus csővezeték 1 / 44 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve Raszterizálás

Részletesebben

Webprogramozás szakkör

Webprogramozás szakkör Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás

Részletesebben

Operációs rendszerek. Folyamatok

Operációs rendszerek. Folyamatok Operációs rendszerek Folyamatok Folyamatok A folyamat (process) a multiprogramozott rendszerek alapfogalma. Folyamat általános definíciója: műveletek meghatározott sorrendben történő végrehajtása. A műveletek

Részletesebben

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Jogosultságkezelés, linkelés, csővezeték Operációs rendszerek 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientált paradigma és programfejlesztés Bevezető Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján

Részletesebben

elektronikus adattárolást memóriacím

elektronikus adattárolást memóriacím MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Példa. Job shop ütemezés

Példa. Job shop ütemezés Példa Job shop ütemezés Egy üzemben négy gép működik, és ezeken 3 feladatot kell elvégezni. Az egyes feladatok sorra a következő gépeken haladnak végig (F jelöli a feladatokat, G a gépeket): Az ütemezési

Részletesebben

Adatstruktúrák, algoritmusok, objektumok

Adatstruktúrák, algoritmusok, objektumok Adatstruktúrák, algoritmusok, objektumok 3. Az objektumorientált paradigma alapelemei Objektum Osztály Példányosítás A konstruktor és a destruktor Osztályok közötti kapcsolatok Miklós Árpád, BMF NIK, 2006

Részletesebben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben

OOP. Alapelvek Elek Tibor

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

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama 10. évfolyam: 105 óra 11. évfolyam: 140 óra 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra 36 óra OOP 14 óra Programozási

Részletesebben

3Sz-s Kft. Tisztelt Felhasználó!

3Sz-s Kft. Tisztelt Felhasználó! 3Sz-s Kft. 1158 Budapest, Jánoshida utca 15. Tel: (06-1) 416-1835 / Fax: (06-1) 419-9914 E-mail: zk@3szs. hu / Web: http://www. 3szs. hu Tisztelt Felhasználó! Köszönjük, hogy telepíti az AUTODATA 2007

Részletesebben

A Novitax ügyviteli programrendszer első telepítése

A Novitax ügyviteli programrendszer első telepítése Telepítő fájl letöltése honlapunkról A Novitax ügyviteli programrendszer első telepítése A honlapunkon (www.novitax.hu) található telepítő fájlt (novitax2007-setup.exe) le kell tölteni a számítógép egy

Részletesebben

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc - OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc - koczka.ferenc@ektf.hu KÖVETELMÉNYEK GYAKORLATI JEGY: Két zárthelyi dolgozat eredményes megírása. Forrás: http://wiki.koczka.hu ELMÉLETI VIZSGA Az előadások

Részletesebben

Előadás_#02. Előadás_02-1 -

Előadás_#02. Előadás_02-1 - Előadás_#02. 1. Folyamatok [OR_02_Folyamatok_zs.ppt az 1-12. diáig / Előadás_#02 (dinamikusan)] A multiprogramozott rendszerek előtt a tiszta szekvenciális működés volt a jellemző. Egy program (itt szándékosan

Részletesebben

Operációs Rendszerek II.

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

Részletesebben

Mappák megosztása a GroupWise-ban

Mappák megosztása a GroupWise-ban - 1 - Fő me nü Mappák megosztása a GroupWise-ban Amennyiben a feladataink végzése szükségessé teszi, lehetővé tehetjük, hogy a GroupWise rendszerben tárolt személyes mappáinkat, az ott található tételeket

Részletesebben

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés . Számítógépek működési elve Bevezetés az informatikába. előadás Dudásné Nagy Marianna Az általánosan használt számítógépek a belső programvezérlés elvén működnek Külső programvezérlés... Vezérlés elve

Részletesebben

Digitális írástudás 2012. március 13. TÁMOP-5.3.1-C-09/2-2010-0068 Trambulin

Digitális írástudás 2012. március 13. TÁMOP-5.3.1-C-09/2-2010-0068 Trambulin Digitális írástudás 2012. március 13. TÁMOP-5.3.1-C-09/2-2010-0068 Trambulin Cél: A képzés célja, hogy a projekt résztvevői tudják kezelni a számítógépet és perifériáit, ismerjék a szoftvereket. Képessé

Részletesebben

LabView Academy. 4. óra párhuzamos programozás

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

Részletesebben

Előadás_#06. Előadás_06-1 -

Előadás_#06. Előadás_06-1 - Előadás_#06. 1. Holtpont, Éheztetés [OR_04_Holtpont_zs.ppt az 1-48. diáig / nem minden diát érintve] A holtpont részletes tárgyalása előtt nagyon fontos leszögezni a következőt: Az éheztetés folyamat szintű

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Rendszám felismerő rendszer általános működési leírás

Rendszám felismerő rendszer általános működési leírás Rendszám felismerő rendszer általános működési leírás Creativ Bartex Solution Kft. 2009. A rendszer funkciója A rendszer fő funkciója elsősorban parkolóházak gépkocsiforgalmának, ki és beléptetésének kényelmesebbé

Részletesebben

Az interrupt Benesóczky Zoltán 2004

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

Részletesebben

Bepillantás a gépházba

Bepillantás a gépházba Bepillantás a gépházba Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív memória: A számítógép bekapcsolt

Részletesebben

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

találhatók. A memória-szervezési modell mondja meg azt, hogy miként Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési

Részletesebben

12. óra op. rendszer 1

12. óra op. rendszer 1 12. óra op. rendszer 1 1. Mire szolgál az asztal? A telepített alkalmazások ikonok általi gyors elérésére. 2. Fejezze be a mondatot. A tűzfal funkciója, hogy... biztosítsa a számítógép hálózati védelmét

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus

Részletesebben

Dinamikus modell: állapotdiagram, szekvencia diagram

Dinamikus modell: állapotdiagram, szekvencia diagram Programozási : állapotdiagram, szekvencia diagram osztályszerep Informatikai Kar Eötvös Loránd Tudományegyetem 1 osztályszerep Tartalom 1 2 3 osztályszerep 2 Bevezető Állapot Interakciós Tevékenység osztályszerep

Részletesebben

A számítógépek felépítése. A számítógép felépítése

A számítógépek felépítése. A számítógép felépítése A számítógépek felépítése A számítógépek felépítése A számítógépek felépítése a mai napig is megfelel a Neumann elvnek, vagyis rendelkezik számoló egységgel, tárolóval, perifériákkal. Tápegység 1. Tápegység:

Részletesebben

Operációs rendszerek III.

Operációs rendszerek III. A WINDOWS NT memóriakezelése Az NT memóriakezelése Memóriakezelő feladatai: Logikai-fizikai címtranszformáció: A folyamatok virtuális címterének címeit megfelelteti fizikai címeknek. A virtuális memóriakezelés

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson OTDK 2007, Miskolc Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK

Részletesebben