A vizsga szóbeli, a tételsor 2009-ben az alábbi:

Hasonló dokumentumok
Számítógépes információs rendszerek az iskolában és a gazdaságban Ismerjen számítógépes katalógusokat és adatbázisokat.

Verzió CompLex Officium Felhasználói kézikönyv

Rendszerintegráció és -felügyelet

Concurrency in Swing

Mérnöknek lenni annyit jelent: előre látni, hogy egy megvalósítandó rendszer/termék hogyan működik, viselkedik majd a hétköznapokban.

MasterLogic-200 PLC. Nagy teljesítményű és sokrétűen alkalmazható CPU (nagy sebesség / memória, IECprogramozás

A PC születése, fejlődése, belső felépítése, hardware, software.

Már megismert fogalmak áttekintése

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Adatbenyújtási kézikönyv

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

ÚTMUTATÓ A PROJEKTMENEDZSMENT TÁMOGATÓ RENDSZER

Programozási nyelvek Java

VESZPRÉM MEGYEI ÖNKORMÁNYZAT KÖZGYŰLÉSE HATÁROZAT

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

Microsoft Excel alapok

LOGO-VIR Teszt terv. Pécs Megyei Jogú Város Önkormányzata Kontrolling (vezetői információs) rendszer teszt terve

10XONE Szoftver és szolgáltatási szerződés Általános Szerződési Feltételek (ÁSzF) XONE V3.3 SZERZŐDÉS

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

Binarit.KPKNY. Áttekintés. BINARIT Informatikai Kft Budapest, Váci út 95.

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

OmniTouch 8400 Instant Communications Suite One Number szolgáltatások, Webes hozzáférés

VESZPRÉM MEGYEI ÖNKORMÁNYZAT KÖZGYŰLÉSÉNEK ELNÖKE 8200 Veszprém, Megyeház tér 1. Tel.: (88) , Fax: (88)

A PUBLIC RELATIONS TEVÉKENYSÉG ESZKÖZEI

IBM BladeCenter megoldások

Linux-os ábrák és fontos ismeretek:

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

Számítási felhők (Cloud computing)

BUDAPEST FŐVÁROS XI. KERÜLET ÚJBUDA ÖNKORMÁNYZATA PROJEKTSZERVEZÉSI KONCEPCIÓJA

2. A számítógépes hálózatok előnyei 2.1. Elektronikus üzenetek, levelek, fájlok küldésének lehetősége o

Interfészek. PPT 2007/2008 tavasz.

Osztályozó vizsga követelmények Informatika

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

Általános gimnáziumi képzés és német nemzetiségi nyelvoktató program 9. évfolyam

A fogyasztói tudatosság növelése. az elektronikus hírközlési piacon

A KÓS KÁROLY ÁLTALÁNOS ISKOLA PEDAGÓGIAI PROGRAMJA

A JUNIPER NETWORKS UNIFIED ACCESS CONTROL PORTFOLIÓJA

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

Pályázati felhívás az EGT Finanszírozási Mechanizmus es időszakában a Megújuló Energia

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

DEvent PC. Elektronikus mérők Esemény napló adatállományának feldolgozása, szoftveres kiértékelés PC-n. Műszaki leírás

GetFit applikáció Felhasználói leírás

és az instanceof operátor

LUDA SZILVIA. sikerül egységnyi anyagból nagyobb értéket létrehozni, gyorsabban nő a GDP, mint az anyagfelhasználás.

Mélyhúzás lemezanyagai és minősítési módszereik. Oktatási segédlet.

3. prioritás: A minıségi oktatás és hozzáférés biztosítása mindenkinek

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

EGYSZERŰSÍTETT PROJEKTMÓDSZERTAN AZ ÚJBUDA ÖNKORMÁNYZAT POLGÁRMESTERI HIVATALA RÉSZÉRE

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Bevezetés a számítástechnikába

ZÁRÓ VEZETŐI JELENTÉS TEVÉKENYSÉGELEMZÉS ÉS MUNKAKÖRI LEÍRÁSOK KÉSZÍTÉSE SZÁMÍTÓGÉPES ADAT- BÁZIS TÁMOGATÁSÁVAL

INFORMATIKAI STRATÉGIA

Lekérdező HypEx bankterminál

Rendszertervek és követelmények KeySafe és ProxerSafe rendszerek esetén... 1

Feladatok (task) együttműködése

WEBSHOP FELHASZNÁLÓI KÉZIKÖNYV

Vállalatok K+F+I tevékenységének támogatása

Konkurens TCP Szerver

Tájékoztató. Használható segédeszköz: -

Az interrupt Benesóczky Zoltán 2004

Kerékpárosokra vonatkozó legfontosabb ismeretek 3. rész Oldal 1

Rendszerintegráció és -felügyelet

Prototípus, termék-, technológia- és szolgáltatásfejlesztés

cato II. rész: Protokollok és Terápiatervek

Windows7 felhasználóknak

PEDAGÓGIAI PROGRAM Némann Valéria Általános Iskola 5932 Gádoros, Iskola u

Projekt címe: Az IKT fejlesztése a sopronhorpácsi Általános Iskolában

2013. novemberi jóváhagyás tervezett decemberi jóváhagyás tervezett

Rekurzió. Dr. Iványi Péter

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

DIGITÁLIS UJJLENYOMAT AZ ADATBIZTONSÁGBAN

A felülvizsgálatok során feltárt hibákat a döntések tartalmához igazodó sorrendben csoportosítottuk.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Windows felhasználói felület

Egyéni álláskeresési tanácsadás a Pro-Team Nonprofit Kft.-nél

Javaslat AZ EURÓPAI PARLAMENT ÉS A TANÁCS HATÁROZATA

OOP és UML Áttekintés

Webprogramozás szakkör

Az Alsózsolcai 2. sz. Óvoda önértékelése

MODERN, BIZTONSÁGOS BUDAPESTET!

1. Az ajánlatkérő neve, címe, telefon- és telefaxszáma; elektronikus levelezési címe

Osztálytervezés és implementációs ajánlások

ÁLLÁSHIRDETÉS TARTALÉKLISTA LÉTREHOZÁSÁHOZ. IT szakértő (F/N)

Programozás C++ -ban 2007/7

Esztergom Város integrált településfejlesztési stratégiája

Osztálytervezés és implementációs ajánlások

A nyilvános tér, művészet és társadalom viszonyrendszere

A HAND Szövetség válaszai a 2015 utáni globális fejlesztési/fenntartható fejlődési agendára vonatkozó külügyminisztériumi konzultációs kérdésekre

Tájékoztató ÖFR Verzióváltásról

Szkriptnyelvek. 1. UNIX shell

Az Elektronikus közigazgatási keretrendszer szolgáltatásmenedzsment tárgyú ajánlásai

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Már meglévő Microsoft szoftverlicencekhez kapcsolódó emelt szintű konzultációs, frissítési és terméktámogatási szolgáltatások

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

5CG. számú előterjesztés

Objektum orientált programozás Bevezetés

Számítógépes alapismeretek-kidolgozott szóbeli tételek I.(1-5 )

PÁLYÁZATI FELHÍVÁS. Észak-Magyarországi Operatív Program

Átírás:

A vizsga szóbeli, a tételsr 2009-ben az alábbi: 1. Technlógia, kmplex szftverrendszerek alapprblémái, szftverminőség, fejlesztési flyamat és kézbentartása. Diszkrét rendszerek leírásának nehézségei, hibakezelés, tesztelés prblémái. Atechnlógia:műveleteksrzata,amelyegyadttkezdetiállaptbóladtterőfrrásk felhasználásávalmegismételhetőmódnegykívántvégállapteléréséhezvezet. Erőfrrásk:infrmáció,anyagk,idő,munkaerő,szakértelem,eszközök pénz(többékevésbélehet knvertálni) Beágyazttszftver(firmware):skszempntbóleltératöbbiSWterülettől: Szrsinfrmációskapcslatbanállakülvilággal Humáninterfész:beágyazttSW rendszerekbenskkalváltzatsabb Kmmunikációsinterfész(hálózat) Érzékelésésbeavatkzásafizikaikörnyezetbe Biztnságkitikuskörnyezet(járműipar,energetikastb) Alacsnyfelhasználóihibatlerancia Kívülrőllátszólagegyszerűműködésjellemzőrájuk Szftverésannakkörnyezetestabil Árérzékeny:magaazeszközlcsó,ahibajavításadrága(visszahívás) Eltérőfejlesztésimódszerek HgyanállunktechnlógiávalSW esterületen? ASWterületvisznylagúj Nagynskszínű Nagynflexibilis látszólagahibásdöntéskisebbkártkzvnemkzkárt SWegyrefntsabb(kellatechnlógia) EgyretöbbéskritikusabbfeladattbízunkSW re Anépességegyrenagybbrészeleszprgramzó,deaképességekadttak anyiditcanwritecde Képességésmtiváció:kb.6hónapalattegyadttterületenprfilehet Kmplex szftverrendszerek alapprblémái, szftverminőség: Kmplexrendszerek,melyektöbbnyirehierarchikusfelépítésűek Rendszer alrendszer..alrdsz elemikmpnens errekellfelbntaniaprblémát Avilághierarchikusviselkedésetermészetesemberiviselkedés Azelemikmpnensekhalmazaabsztrakciófüggő:nézőpntéscélkérdéseazelemikmpnens pl.:adatbázisnál:ahasználórekrdkat,aprgramzói/oműveletetlát

Akmpnensen(alrendszeren)belülikapcslatkerősebbek,mintazaznsszintenlevő kmpnensekköztikapcslat.pl.:tanszékéstanszékközöttkisebb,minttanszékenbelül az alrendszerekfelismerésétsegíti,akapcslatkerőssége Akmplexrendszerektöbbnyirenéhányalapvetőkmpnensváltzatskapcslatábólépülfel ezértkmplexpl.:számítógépeshálózat,internet(3kmpnens:végeszköz,hálózati eszközök/ruter/,hálózatikapcslatk) Akmplexrendszerektöbbnyirenemelőzményeknélküljelennekmeg,hanemegyrenövekvő kmplexitásúelődökönkeresztülfejlődik/evlúció/ 0 rólfejlesztettkmplexrendszerektöbbnyireműködésképtelenek (evlutinnt revlutin) bekelljárniafejlődésifkkat inkrementálisfejlesztés:képességben,méretben, teljesítményben,időben KmplexSWrendszerekkelkapcslatsprblémáktöbbnyire Okk: A,Amegldandóprblémabnylultsága B,Afejlesztésiflyamat(prcess)kézbentartásánaknehézségei C,ASWeszközökrugalmassága D,adiszkrétidejűrendszerekviselkedésénekleírásinehézségei A,Amegldandóprblémabnylultsága felhasználó/megrendelőmegadegykövetelményt(requirements) nagyszámú bnylult ellentmndóak inknzisztencia:követelményekkövetkezményeiparadxntkznak nehezenszámszerüsíthetőésmérhető megrendelőésmegvalósítóköztiellentét megrendelősajátszakterületéneknyelvénfgalmazzamegkövetelményeket amegrendelőmagasemtudjamitszeretne,menetközbeniterálnak amegvalósítóprgrambangndlkdik,aszámítógépekvilágábanél beflyásljákkrábbitapasztalatai azajó,haamegrendelőésmegvalósítóegyüttválasztjákkiaspecifikációt

Specifikációhasználatakészprgramesetén: javítás/karbantartás:hiba(bug)specifikációtóleltérőműködés ingyenjavítás fejlesztés(featureupdate):új,spec bennemmegadttfunkció pénzértcsináljuk knzerválás:swkörnyezeteváltzikmeg,amiaváltzatlanswmelletthibákatkz(win XP nismenjen) pénztkérünkérte B,Afejlesztésiflyamat(prcess)kézbentartásánaknehézségei hsszú,bnylultprgramkírásacsakakezdőketvillanyzzafel akmplexitásésafejlesztésiflyamathierarchikusfelépítésekézbentartható csakafeltétlenülszükségesrészleteketkellmegismerni alrendszerekköztiinterfészekfntsak egyszerűségre,rövidségretörekvés(kiss:keepitsimplestupid) előregyártttelemekhasználata/elemikmpnens/ SWkmpnensek,példaprgik,minta(pattern):tervezésiv.architektúrálisminta mdularizált,újrafeldlgzhatóelemekbőlvalóépítkezés:feladatkszétsztásafejlesztőkközött inkrementálisfejlesztés kritikusrészekkelvalóismerkedés funkcióibaninkrementálisfejlesztéséstesztelés:unitteszt aspektusrientáltprgramzás:funkcináliséssecurity:emberihibákcsökkentése C.Szftvereszközökrugalmassága Amegfelelőabsztrakciósszintmegtalálása feladattamegfelelőeszközökkel Alegalacsnyabbabsztrakciósszintagépiutasítás Prgramzásinyelv,környezeteltérőabsztrakciósszintetteszlehetővé Magasabbabsztrakciósszintektöbbnyiremagasabbfutásiidejűerőfrrásigénnyeljárnak Nemcsakafutásiidejűerőfrrás felhasználásazérdekes/labview C/ FejlesztésierőfrráskésaSWminőségiselőtérbekerülhet D.Diszkrétidejűrendszerekleírásánaknehézségei SW: Állapttere: Adatelemek+inputk Nbit Műveletek/állaptátmenetek/:azállapttérbenmilyenműveleteklehetnek Pl.:1.fkúszűrő,32bitbelsőáll,16bitbemenet 2^16*2^32állapt 2.fkúszűrő 2^16*(2^32)^2lehetségesállapt azállapttéróriásiésarajtavégezhetőműveletekbnylultak

Tesztelés,Hibakezelés: állaptszámnő műveletekszámaexpnenciálisannő Aprgramkműködésénekmegértéseéstesztelésenagynnehéz Azösszeslehetségesállaptraazösszeslehetségesállaptátmenetettesztelnikell Akérdésatesztlefedettség Beágyazttrendszerek: Abeágyazókörnyezetmdelljenehezenelőállítható:nemcsakajóműködés,hanema rsszműködésmdelljévelisrendelkeznünkkell Akódnagynnagyrészehibakezelés/70 90%/:hibakezelőkódtesztelésenehéz,merta hibákelőállításanehéz,vagylehetetlen/cpujó e,mjó e/ E.W.Dijkstra/E.W.D/: Onthecruentlyfreallyteachingcmputerscience nehézasw sdlgkktatása SW sfejlesztés:swéletciklusmdell/vízesésmdell/: Elemzés/MIT?/ Tervezés/HOGYAN?/ Implementálás Üzemeltetés Intuíció(mikrazinfrmaciszerzesnemagndlkdaseskvetkeztetesutjantrtenik)elkerülésea flyamatban/perszeelemzéstervezéssránkell/ Asrrendfejlesztéskr:Üzemeltetés implementáció tervezés elemzés???? Azimplementációabsztrakciósszintjénekkiválasztása:

2. Prgramzási paradigmák, prcedurális és deklaratív megközelítés, prcedurális nyelvek fejlődése, strukturáltság megjelenése. Azimplementációabsztrakciósszintjénekkiválasztása: Prgramzásiparadigmák: Aprgramzásalapvetőmódja,stílusa,prgrambelsejénekdefiniálása Egyidőben,egyprgramzásifelületbenakártöbbparadigmáthasználhatnak/ugyanazt anyelvethasználva/ Paradigma: Prcedurálisprgramzás/imperatívprgramzás/: HOW? nagybbprblémátrészfeladatkrabntunk elemiutasításk:függvénvek függvényekethívnak Matematikaifüggvény Aprblémamegldásáhzszükségeslépésekmegadásaafeladat Gtszáműzése Mdularitás,strukturáltság,kódújrafelhasználás:/skalár,vektr,mátrix/ CPUnagynmélyenisezttámgatja/imperatív/:megmndjukaCPU nakalépéseket Objektumrientáltprgramzásisennekakiterjesztése Deklaratívprgramzás:nemkellmegadnunkhgyancsakazthgymit WHAT? Frmálislgikátésakövetkeztetésekethasználja Afeladatmegldásánaklgikájátadjukmeg,amegldásrészletei(vezérlésiszerkezetek cntrlflw)nélkül Pl.:bíróeldöntiegylépésszabálytalan e,c cmpiler,adatbáziskezelőkmtrja Szabálykatértelmeziésvégrehajtjaőketaprcedurálisanmegírtmtr Kiegészítőparadigmák: 1. párhuzamsprgramzás 2. eseményvezéreltprgramzás Prcedurális/imperatívprgramzásinyelvekfejlődése: 0.generáció:bináriskód:gépiutasításkbinárisbevitele 1. generáció/54 58/:matematikaikifejezésekkezeléseFrtranI,Algl58,gépitípusk használhatók 2. generáció/59 61/:adattípuseljárásfvfgalma:FrtranII,Algl60 3. generáció/62 70/:2.generációsnyelvekfinmítása,összetettadattípusk:Algl68,Pascal

Generációsrés:PDP 11:könnyebbszámítógéphzzáférés,evlúciósskszínüség,Cnyelv, UNIXOS 4. generáció:bjektumrientáltnyelvek:smalltalk,c++,java,c#,deklaratívnyelvek:sql, Prlg 0:nincsstrktúra 1 2:adattípus+műveletek 3:mdularitás 4:adatésrajtavégezhetőműveletekszrsegymásbakapcslása

3. Objektumrientált prgramzás, sztály és bjektum visznya, bjektum típusa, az infrmáció rejtés megvalósulása bjektumrientált prgramzás srán, az bjektumrientáltság ismérvei. Java példák. OOP:ObjectOrientedPrgramming A prgramzási feladat megldása lyan módn, hgy a létrejövő OOP együttműködő bjektumk összessége. (magaisegybjektum) Tipikusemberigndlkdás,avilágrólalktttképünkbjektumrientált. - Objektum = tulajdnságai + rajta végezhető műveletek - bjektumk tartalmazhatnak bjektumkat (tulajdnság is lehet bjektum) - bjektumk hivatkzhatnak egymásra, és azk is másra referencia pinter memóriaterületremutatóhivatkzás Egyesprgramzásinyelvekbenapinterareferenciaalkalmazhatómegvalósítása. (C/C++,ésközösmemória) JAVA:referenciáhznemcsatlhatómemóriaterület pl.:javareferencia,url - Az bjektumk lehetnek hasnlóak általánsításésspecializációfgalmaazbjektumkközött (emberek/fglalkzásk) absztraktésknkrét ideszeretnénkeljutni AzbjektumSWszempntból: - a prgram alapköve független összetevők (lehetőleg) rejtett belső állapta van (tulajdnság) saját viselkedésük, működésük van külső bjektumk hatnak rájuk (belső állapt + váltzók) - Az bjektumkat egy vagy több sztályba tartzónak tekintjük sztály (class): absztrakt adattípus, melynek példánya (egyede, instance) az bjektum tervezési idejű fgalm futási idejű fgalm Az bjektumnak lesz élettartama is! Definiáljuk az sztályt: - megadjuk az bjektum állaptát leíró adatszerkezetet tulajdnságk listája - megadjuk az bjektumn végezhető alapműveleteket metódusk

Az bjektumrientáltság 3 fő vnása (ismérvei): - (1) infrmáció rejtés / összefglalás encapsulatin vagy infrmatin hiding - (2) öröklődés (inheritace) az sztályból létrehzunk újabb, speciálisabb sztálykat - (3) plifrmizmus (plifrmism) rajzelemek mzgatása rajzelem pnt vnal stb. rajzelemekből álló listán mindegyik mve(x,y) metódusa, megldható. pl. 2D rajzelemek sztály - mve (dx, dy) metódus - származtatva: pnt, vnal, kör : ugyanez a metódus (mve) meglesz ezekkel a paraméterekkel - legyen egy lista: rajzelem bjektumkat tartalmazó lista (illetve az ezekre mutató pintereket): pnt, pnt, vessző, kör - ha egy iterációval végigmegyünk ez a listán, akkr mindig az bjektumnak meghívódik a mve metódusa - a beágyaztt C++ nyelvekben nincs plimrfizmus, mert futásidejű következményei lehetnek - a C egy nagyn veszélyes nyelv :) (1) infrmáció rejtés: - KIEGÉSZÍTENI A TIPUSOS NYELVEKKEL. - a másik az bjektumt használó prgramzó elől - a kmplexitás csökkentése - interfészt definiálk public, prtected, private senki a metódusra a hzzáférés megadható (snpe), friend módsító: a prtectedet teszi elérhetővé - a mdern prgramzási nyelvek kivétel nélkül típussak adattípus: - értékkészlet lehetséges értékek - jelölés hivatkzás szintaxisa - műveletek típusn belül, v. más típuskba vezető knverzió - frdítóprgram: tárterület fglalás: - explicit típusdeklaráció (C/C++, JAVA) - dinamikus típus knverzió PHP ellenőrzés szigrúan típuss nyelvek TP? gyenge ellenőrzés PHP C/C++/JAVA autmatikus knverzió Az bjektum típusa az sztály + minden felette álló!!! többféle típusunk van - A prgramzó szempntjából is fnts az sztály és a típus magyar ntáció a váltzó nevében a típus legyen benne JAVA PÉLDÁK

4.Objektum állapta, viselkedése, aznsság, értékadás, élettartam, interfész, bjektumk közötti kapcslatk, láthatóság, az bjektumk közötti kmmunikáció. Sablnk. Java példák. (élettartam után bjektum tárlási módk) Azbjektumrendelkezik: Belsőállapt/tulajdnságk,attributumk/ Viselkedés/metódus,tagfüggvény/ Élettertam Interfész 1. Belsőállapt: Típusssztály ésegyedváltzók Osztályváltzó:azadttsztályhztartzóösszesegyedbenugyanazamemóriaterületvan jelen staticajava ban:nemegybjektumhztartznak,hanemazegészsztályra közösek(pl.:dlgzóksztályábananyugdíjkrhatár) sztályglbálisváltzó:pl.:adttsztálybatartzóelemekmegszámlálása knstans,amiidőközbenváltzik Egyedváltzó: mindenegyedbenkülönmemóriaterületvanjelen(egyedspecifikus) jellegzetesenezthasználjuk aznsságvizsgálat: névszerinti(ahgyhívm):ritkántámgattt referenciaszerint == perátr:ugyandamutatnak e értékszerintiaznsságvizsgálat === perátrvalahl:akétbjektum tulajdnságaiaznsak e Mivanha: Atulajdnságmagaisbjektum Atulajdnságmagaisreferencia nemegyértelműaművelet (kereszthivatkzásk),láncltlistánálaprgramzódöntiel,milyen mélységigvizsgálunk plimrfizmuskell Cmpare(bj)plimrfizmus Azértékszerintiaznsságműveletnemegyértelmű 2.Viselkedés: Típusssztályésegyedmetódusk/módszer,tagfüggvények/ Osztálymódszer: Static ajava ban Csaksztályváltzókatésmássztálymetóduskathasználhat(nemhasználjukgyakran) Egyedmódszer:egyed éssztályváltzókathasznál.megvanhatárzva,hgyametódusmelyik adatterületenfutle. verlading:többértelműség(ugyanlyannevűmetódus) amódszereketa nyma aznsítja ametódusnyma=avisszatérésiértéktípusa+metódusneve+paramétertípusa

3. Élettartam: azbjektumkategyspeciális knstruktr nevűmetódussalhzzuklétre.fajtái: defaultknstruktr:nincsparamétere cpyknstruktr:paraméterénektípusaaznsalétrehzandóadatktípusával(deep cpy) egyébparaméterezettknstruktrk fntskérdés,hgymitörténikaszülősztálykknstruktraival,lefutnak emaguktól,megkell hívniőket,mitörténiktöbbszörösöröklődésesetén bjektumkmegszüntetése: explicitfelszabadítás:c++ destruktr freeutasításhatásárakerülmeghívásra hatékny,egyszerű nagynveszélyes,skhibalehetőségvan túlkrán,vagynemjóbjektumtszabadítunkfel elfelejtettünkfelszabadítanivalamit(memryleak) autmatikusszemétgyűjtés:java amemóriaautmatikusfelszabadításaanemhasználtbjektumkesetén az összesrátörténőhivatkzásmegszűnik referencecuntnyilvántartása erőfrrásigényes,valósidejűkörnyezetbenazalkalmazásamegkérdőjelezhető finalize()metódus(java):lelehetzárnidlgkat,mielőttazbjektum megszűnne megszüntetésbeágyazttésbiztnságkritikusrendszerekben: halehet,egyiketsehasználjuk(tervezésiidőbenmegadhatóamemóriafelhasználás) explicitmegldáskimerítőtechnikátigényel autmatikusszemétgyűjtésmégnyitttkutatásiterület Azbjektumkskesetbenelválhatnakazőketlétrehzóprgramktól: bjektumkperzisztenstárlása:mentés/visszaállítás/adatbázis bjektumtvábbítása:cpy/paste,hálózatimáslás,elérés(architektúráliskülönbségek) Tranziensbjektum:aprgramelindulásátólamegszűnéséigél Perzisztensbjektum:túlélhetiazőtlétrehzóprgramtvagyátkerülhetmásprgramba. verziókövetés,platfrm függetlenség,típushelyeshelyreállítás(újwrd,régiwrd)

ObjektumTárlásimódk: bjektum rientáltadatbáziskezelő relációsadatbáziskezelő tábla=sztály(adttverziószámú) szlp=tulajdnság(típuss) sr(rekrd)=egyed referencia=idegenkulcs/másiktáblábanlévőkulcs/(másiktáblábanadttsrravaló hivatkzás) XML lásdszftvertervezésvagyweb:definiálunkegynyelvet,amibeneltudjukmenteniaz bjektumt(xml,xslt,xpath) bináriskódlás:binaryencdyrube(ber) Felhasználás: serialize,deserializeinterfész:srsbyte streammélehetalakítanimegvisszaazbjektumt JAVA:implementsserializable C++:többszörösöröklésselérikel,serializableabsztraktsztálybólörökléssel cnvertt/frmxml()interfész(sajátmagamnakkellmegírni) 4.Interfész:bjektumrendelkezzenmetódussalésműködéssel rákényszerítemaprgramzótezen interfészmegvalósítására.pl.:bjektumtfájlbanelakarkmenteni serializerendesenletárlja. azbjektumbóllétrehzttegyedegyvagytöbbjóldefiniáltinterfésztnyújtazőthasználni kívánóbjektumkfelé hzzáféréstbeállíthatjuk:public,prtected,private kérdés:egysztályrahgyantudunk rákényszeríteni egyinterfészt?pl.: C++:többszörösöröklődés,azinterfészmegadásaabsztraktsztályként(direktbenem lehetpéldánysítani) JAVA(csakegyszeresöröklődésvan):interfészekdefiniálása:impements interface jbbanszétvanválasztvaazinterfészésazsztály,azezutánírtinterfésztazsztálynak megkellvalósítani csakpublikusabsztraktfv ekettartalmaz nemlehetpéldánysítani Objektumk/sztálykközöttikapcslatk: kmplexprblémahierarchikusdekmpzíciója együttműködőbjektumkéntképzeljükelamegldást Kapcslatk: 1.tartalmazás(aggregatin): részegész(kutya lába)

2.társítás(assciatin): lazakapcslat(kutya harap pstás) 3.öröklés(inheritance): általánsítás/specializáció 3.Öröklés: általánsítás/specializáció sztálykközöttértelmezhetőkapcslatkövetkezményekkelazegyedre AörökölB től: AalsztályaB nek(descendant) leszármaztt BszülősztályaA nak(superclass) hierarchiatetejénabaseül(szűznemzésseljönlétre) öröklésihierarchia:többnyiregráfvagyfa,haegyszeresöröklésvan többnyireazalsólegspeciálisabbsztálybólhzunklétreegyedeket,vagyezeket specializáljuktvább(ezekbőlszármaztatunkleújsztálykat) absztraktsztály:nemtudunkegyedeketlétrehzni:haebbőlleszármaztatksztályt, csakakkrtudkegyedeketlétrehzni alsztályörökliaszülősztálytulajdnságaitésviselkedését azalsztályelfedheti(felüldefiniálhatja)aszülősztálytulajdnságaitésviselkedését többnyirevanlehetőségaszülőtulajdnságainakésviselkedésénekelérésére egyadttsztálynaktöbbaznsnevűmetódusalehet(verlading) metódusnymánakkellkülönböznie perátrverlading:értlemezhetőségpl.:vektr mátrix,deember?? egyszeresvagytöbbszörösöröklődés:egyszeres(c++:rszlánmacskaféleésragadzóis), többszörös(java:öröklődésihierarchiafa) Sablnk: tipikusprbléma:hasnlóviselkedés(pl.:fifo),különbözőtípusúsztálykra.pl.:int etkezelő FIFOésadtt(detetszőleges)sztálytkezelőFIFO sabln Osztály1,cmpiler Osztály2:Osztály1kezelésére egyed/sztály2ből/ pl.:fifosabln int FIFOsztályintkezelésére FIFObjektuminttárlására pl.:tárlásisztályk(cntainerclass) C++:standardtemplatelibrary JAVA:Generics 1.Összetétel,tartalmazás(aggregatin): irányítttreláció,azegésztartalmazzaarészt értékvagyreferenciaszerintlehetcsprtsítani: érték:fizikailagegymásbaágyaztttárterület(memória) együttjönneklétreésszűnnekmeg referenciaszerint:egészegyreferenciáttartalmazarészre

különéletetélarészésazegész,deazegészkezeliarészt 2.Társítás(assciatin):kutyaésapstás 2irányúösszeköttetés:milyenpstás szigrúannemtartalmazás:azbjektumkkülönéletetélnek tipikusanreferenciákkalvalósítjukmeg számsság:jellegzetes: egy egy:férj feleség egy több:szultán több több:rgia

5.Párhuzams eseményvezérelt rendszerek, alapfgalmak, ütemező és feladatai, ütemezési algritmusk. Ütemezés hardware és sftware megvalósítása. Java példák. 04.01.text fajl Klasszikusprgramzás(szekvenciálisprgram): szekvenciálisan (egymás után végrehajttt) utasításk srzata. a prgram utasításainak végrehajtási srrendjét a vezérlési szerkezetek önmagukban definiálják a prgram nem mindig csinálja ugyanazt, az adatktól is függ a működése sk prbléma nehezen ldható meg így az erőfrráskn sztzni kell, az erőfrráskkal gazdálkdni kell nagyn gyakran valójában párhuzamsan végrehajtandó feladataink vannak A világ párhuzams eleve sk feladat párhuzams. Ez részfeladatk frmájában kerül megfgalmazásra,ésnehezenfgalmazhatómegszekvenciálismódn. Alapfgalmak: szekvenciális prgram / rendszer tudjuk mi ez párhuzams / knkurens prgram / rendszer: lyan rendszer vagy prgram, amelyben több, egymással együttműködő részfeladat egészeként valósítjuk meg a teljes feladatt. Feladat/részfeladat:Task/subtask: A párhuzams rendszerben egymással párhuzamsan futó, önmagában szekvenciális prgramrészleteket, amelyek egymás nélkül többnyire értelmes működésre nem képesek, részfeladatknaknevezzük. Arészfeladatkhzvégrehajtóegységetkellrendelnünk: Nrészfeladat 1végrehajtóegység Nrészfeladat Mvégrehajtóegység(DualCre ) Vagyis a szekvenciális részfeladatk együtt ldják meg a teljes feladatt, eközben kmmunikálnak egymássalésbeflyásljákegymásműködését,azazegyüttműködnek. eseményvezéreltség (event driven): A prgram lefutása függ a prgram működése srán lezajló történésektől (event).

esemény / jelzés, event / signal: ezekre az eseményekre reagál a rendszer megváltzik a működés azns infrmációs kapcslat. (fntsaválaszidő!(rtrendszerek)) Külső esemény: pl. user input, (A/D) vagy kmmunikációs interfészen küldés / fgadás Belső esemény: A prgram belső állaptában lezajló váltzásk, explicit eseményküldés ( send_event() ) Az esemény többnyire egy összetett adattípusként jelentkezik a SW-en belül (struct / bject) Erőfrrás:mindenlyaneszköz,amirearészfeladatnakfutásközbenszükségevan.Alegfntsabb:CPU. Kellmég:memóriaésannaktartalma,illetvekülönbözőperifériák. Közöserőfrrás(sharedresurce):Egyidőbentöbbpárhuzamsanfutórészfeladatnakisszükségevan rá. Az ilyen erőfrrásn sztznak. Többnyire egy, vagy maximum megadtt számú részfeladat tudja helyesenhasználni. Egyfelhasználó:printer,srsprt,bus,MEMírása Többfelhasználó:SCSI,SATA,HDD nélncq A rendszertervezőnek és a prgramzónak a legfntsabb feladata, hgy felismerje a közös erőfrráskat,ésbiztsítsaazknakahelyeshasználatát. Inknzisztens állapt lesz, mert a memóriát csak félig írtuk tele. Subtask2 rsszat lvas, rsszul fg működni.

Kölcsönös kizárás (mutual exclusin, MUTEX): annak a biztsítása, hgy a közös erőfrrást egy időben CSAK annyi részfeladat használja, amennyi mellett a helyes működés garantálható. többnyire a használt erőfrrást valamilyen módn lck-ljuk, lezárjuk. nem engedjük hzzáférni a többi részfeladatt Hgyan tudjuk megldani és milyen részletességgel ldjuk meg? mindenhl máshgy van (de csak kicsit ) Kritikus szakasz (critical sectin): a részfeladat azn kódrészletei, ahl biztsítjuk a kölcsönös kizárást egy biznys közös erőfrrásra a kritikus szakasz a közös erőfrráshz tartzik. Atmi művelet (atmic peratin): nem megszakítható művelet, amelyet a prcesszr egyetlen utasítással hajt végre. egyprcesszrs rendszerekben bármilyen műveletsrzat atminak tekinthető a műveletsr elején az IT tiltásával, majd a végén engedélyezéssel. Test and Set vagy Read Mdify Write mdern prcesszrkban utasítás prefixek alkalmazásával érhetünk el hasnló eredményt. a közös erőfrráskhz való hzzáférést (lck) atmi műveletekre fgjuk visszavezetni. Kmmunikáció:részfeladatkegymássalinfrmációtcserélnek(együttműködveldanakmegegyközös feladatt) ezelengedhetetlenfeltételeazegységbefglalásuknak közöserőfrrásknkeresztültörténik többnyirememóriaterületenkeresztültörténik,haazarchitektúralehetővéteszi denagynskfélemegldásvan Részfeladatkállaptai(taszktértalatta,tehátnemjb): FUT:Maxannyilehetahányvégrehajtóegységvan FUTÁSRAKÉSZ:csupánavégrehajtóegységhiányzikafutáshz,mindenmáserőfrrás rendelkezésreáll

ESEMÉNYREVÁR:CPU nkívülmáserőfrrásishiányzikafutáshz(pl.:másrészfeladatáltal használtközöserőfrrás) Azállaptátmenetiábrajellegzetes,szintemindenOS benmegtalálhatóbiznyskiegészítésekkel (extraállaptk,állaptátmenetek)(preemptívos ekesetén:fut Futásrakészátmenet) Végrehajtóegységekszáma? 2szélsőség sk végrehajtóegység és egy többnyire nehezen párhuzamsítható feladat (a feladatbólarészfeladatknemtriviálisanhatárzhatókmeg) Példa: High Perfrmance Cmputing: szuperszámítógépek, grid rendszerek,skmagscpu k,gpgpu(cudaopencl) Egy vagy több végrehajtó egység: egy párhuzams,vagy többé kevésbé jól aznsíthatórészfeladatk beágyazttrendszerek erőfrráskmegsztása A kihívás a párhuzams részfeladatk és az egész prbléma hatéknyéshelyesmegvalósítása Preemptívütemezés:Azprendszerelvehetiafutásjgátazéppenfutóflyamattól,és"futásrakész" állaptúváteheti.közbenegymásikflyamattindíthatel. Nempreemptívütemezés:Azperációsrendszernemvehetielafutásjgátaflyamattól.Aflyamat addigfut,amígazáltalakiadttutasításhatásáraállapttnemvált,azazcsakmagaaflyamat válthatjakiazújütemezést.(befejeződik,erőfrrásravagyeseményrevár,lemndafutásról) Ütemezés():afutásrakészrészfeladatkközülkiválasztaniafutórészfeladatkat nagynskféleütemezőalgritmusvan sft,hardütemezők statikusvagydinamikusütemezés nagynnagykmplexitásikülönbségek preemptív,nempreemptív, valósvnemvalósidejű azütemezőamunkájasránszükségesadatkatkülönbözőadatstruktúrákbantárlja leszmemóriaigénye AzadatstruktúrávalperálásamiattleszCPUhasználatais kntextustkellváltani,haegyújtaszkkerülütemezésre: ütemezőfutásaelőtt: lekellmenteniafutórészfeladatállaptát(kntextus) helyrekellállítanunkazütemezőállaptát ütemezőfutásaután lekellmenteniazütemezőállaptát helyrekellállítaniafutásrakiválasztttrészfeladatállaptát

Ütemezőválasztás: nincsuniverzálisütemezőalgritmus afeladatkismeretébenafeladatnakmegfelelőütemezésialgritmustkellválasztani alegtöbbbeágyazttperációsrendszererrelehetőségetad ütemezőisegylecserélhetőszftverkmpnens(mégwinxp benis) azütemezőlecserélhető,kibővíthető,vagymegkerülhető(intervalzerrtx:windwsbólvalós idejűütemezőtcsinál) Kérdések: késleltetés/válaszidő megszakításkésleltetés:interruptlatencyt~ms,dertos nél:~us annakingadzása(jitter) statisztikaijellemzők ütemezőésazidőkapcslata: ütemezőalgritmuskjelentősrészénekkövetniekellazidőt ütemezésifeladat(részfeladatkperidikus,vagyadttidőbentörténőfuttatása) időmérés,időtúllépésmeghatárzása HWidőzítő:megszakításperidikusan:HWütemező??? azegyiklegfntsabberőfrrás,amitazos benmegkellvalósítani ezutánazütemezőperidikusanfut fntsfunkció:virtuális(sw)timermegvalósításalehetségesígy egyidőzítőarészfeladatkszámára:kbmennyiidőtszeretnénekvárni virtuálisswtimernekvanperiódusideje~1 10ms(régebben20ms)=systemtick:ennyi időnkéntfutazosütemezője időszelet ha40ms takarunkvárni:vár4órajeletésaprgifutásrakészállaptbakerül nem tudjuk pntsan biztsítani mikr fgunk futni + jittere is van nem használható mindenre (lehet: passw megadására 10 sec e van vkinek, de pl nagy pntsságk elérésérenemjó)(egyláncltlistábanvannakrészfeladatkhwinterruptjönütemező jönéskiválasztjakifgfutni) Mittudunktenni,haennélrövidebbideigszeretnénkvárakzni? másütemezésialgritmustválasztunk:időalapúütemezéstválasztunk(sjf,srtf,hrr) aktívanvárakzni CPUciklusúvárakzás: azutasításvégrehajtásiidőváltakzhat bgmips cmpilerkiszedhetiazptimalizációtólfüggően timestampcunteralapú HWtimerszámlálója PentiumTimestampCunter

máshwinterruptalapúvárakzás azaktívvárakzástésamáshwalapúakatazütemezőbeflyáslja Mekkrasystemtickamegfelelelő? egyikldalrólminélkisebbfelbntástszeretnénk másikldalrólminélkisebb,annálnagybbazverhead hanemrealtimeinterrupttelfgadunkalkalmazásainkbanazgázlehetrealtimerendszerekben Mikrfutazütemező? havanóraütés mindenmáskülsőhwinterruptra belsőeseménylétrejöttekr közöserőfrrásfelszabadul egyrészfeladategyeseménytküld futórészfeladatvárakzóállaptbahelyeződik(erőfrrásrakezdvárni) futórészfeladatlemndafutásijgáról(yield) 04.08 TEXT fajl

6.Flyamatk leírásának eszközei, szálak, architektúrális és tervezési minták (általában és ebben a környezetben Hgyan tudunk párhuzams flyamatkat leírni szftverben - architektúrális minták. Párhuzamseseményvezéreltprgramzástámgatása: néhány kísérleti rendszertől eltekintve ugyanazkn az elveken alapulnak, hasnló funkciókat támgatnak. ugyanakkr az interfész és az interfész mögött elrejtett funkció sk esetben eltérő (kis mértékben) Tervezési/architektúrálisminta(pattern): újrafelhasználásszintjei: kódújrafelhasználás(kódvagylibraryhasználata) példaprgram ötletek,megldáskújrafelhasználásáthgyantudjukbiztsítani? tervezési / architektúrális minta: A szftverfejlesztés srán felmerülő prblémákra adhatóáltalánsmegldás.amintaleírásatartalmazza: 1. mintaneve 2. a minta céljának és alkalmazási környezetének, követelményeinek egyértelmű megldása 3. amegldásmegadása 4. követelményekfelsrlása 5. alkalmazásipéldavagypéldák antiminták(antipattern): Hgyannecsináljuk? vita:jóötlet ersszmegldáskatbemutatni? Preemptívütemezés:Azprendszerelvehetiafutásjgátazéppenfutóflyamattól,és"futásra kész"állaptúváteheti.közbenegymásikflyamattindíthatel. Nempreemptívütemezés:Azperációsrendszernemvehetielafutásjgátaflyamattól.A flyamataddigfut,amígazáltalakiadttutasításhatásáraállapttnemvált,azazcsakmaga aflyamatválthatjakiazújütemezést.(befejeződik,erőfrrásravagyeseményrevár,lemnda futásról) Párhuzamsrészfeladatk(vagyflyamatk)leírása:(Architekturálisminták) alacsnyszintűvezérlésiszerkezetek Rund Rbinarchitektúra Rund Rbinmegszakításkkal függvény sralapú(fifo FCFS?) nemalacsnyszintűek perációsrendszerek:

c rutinvagyfiber prcess(flyamat) thread(szál) Rund Rbinarchitektúrák: while(1){ if(){subtask1();} if(){subtask2();} if(){subtask3();} } adttfeladatkatfeltételesenciklikusanfuttat nincsmegszakításkezelés aperifériákatpllinggalkezeljük valós idejűség rund rbin, a wrst-case végrehajtási idő lényegében megadható törékenyarchitektúra újrészfeladatkhzzáadásafelbntjaazütemezéstésazidőzítést részfeladatkleírásátafrrásnyelvnyelviknstrukcióiszeparáljákkönnyű hibázni kölcsönöskizárásiprblémaegyszerűszabálykbetartásávalbiztsítható előnye:egyszerű prckihasználtság100% HRTviselkedéslassú Taskkközöttikmm.Megsztttváltzókkal Nempreemptív Rund Rbinarchitektúramegszakításkkal: megszakításkathasznál,mindeneszközhözflagetrendelünk flaget billenti be a megszakításkezelő rutin - hardverspecifikus dlgkat is kezeli egy végtelen ciklus a flaget ellenőrzi ha a flag be van billentve, akkr meghívja a kezelő függvényt utána visszabillentjük a flaget jbban kezeli az időkritikus részeket??? megszakításkezelő rutinban történik??? ha van priritás a megszakításkr, akkr még kedvezőbb a válaszidő szórása még mindig nagy (válaszidő: interrupt bejön, a teljes feldlgzás végéig tart) azarchitektúratörékeny ennél az architektúránál el lehet a prcesszrt küldeni aludni, ha nincs munka (fgyasztás szempntjából kedvező: IT alapú) - a beérkező IT-re a prcesszr felébred függvénypinterek: milyen memóriacímtől kezdődő függvényt kívánunk meghívni

- azt kell tudni, hgy milyen hívási paraméterű és visszatérési értékű függvényről van szó (stack miatt) időkritikusrészfeladatttöbbszörisfelsrlhatunk,ezzelcsökkentveakiszlgálásiidőt alacsnyfgyasztásúrendszerbenalkalmazható IT velkiegészítettciklikusprgramszervezés FLAGA,B; vidinterrupta_handler(){handle_hw_a();a=true;} vidinterruptb_handler(){handle_hw_b();b=true;} vidinterruptc_handler(){handle_hw_c();c=true;} vidmain(){ while(true){ ifa{a=false;service_a();} ifb{b=false;service_b();} ifc{c=false;service_c();}... } } ciklushatárk Függvény sralapúarchitektúra(fcfs): képesapriritáskkezelésére ezasrkezelésétőlfügg,alapvetőenfifo,cpu 100% ITszintenMCU/CPUITvezérlő kölcsönöskizárásazitszintenésarészfeladatkközött preemptivitásnincs! nemannyiratörékeny a függvény nyelvknstrukcióerős,jólszeparál megszakítástkezelőrutinkkielégítikazeszközsürgősigényeit

tvábbifeldlgzáshzegyvárakzásisrbanelhelyeznekegyfüggvényremutatópintert avárakzásisrtamain bendlgzzukfel meghatárzttalgritmusszerintasrbólkivesszükafüggvényremutatópintereket lényegében ez is interrupt alapú - interrupt: kezeli a hardvert (időkritikus hardver közeli dlgkat) - majd önmaga egy függvényekre mutató pintereket tartalmazó srba behelyezi a magas szintű (nem időkritikus) feladatkat - végtelen ciklusban: ha a sr nem üres, levesszük a függvényt (első függvény) és meghívjuk - a kölcsönös kizárást meg kell ldani az IT-kezelő és a magas szintű (nem időkritikus) feladatkat ellátó függvény között - mert elképzelhetó, hgy miközben a magas szintű feladat fut, befut még egy interrupt - válaszidő = a leghsszabb task + az IT végrehajtása + a kezelő függvény végrehajtása - nem brul fel annyira könnyen az architektúra (csak azk a kódk futhatnak le, amelyek egy függvényben benne vannak) - a függvény szeparálja a taskkat - az új feladatk csak akkr tudják felbrítani a rendszer működését, ha magasabb priritásúak (a magasabb priritású task egyébként minden architektúrában felbrítja a működést) - nem preemptív: ha már fut egy kezelő függvény, akkr hiába érkezik be egy újabb kérés (és lefut az IT kezelő függvénye), csak akkr futhat le, ha az előző befejezte Crutine(CperativeOS):ezpntsanmiis? - kperatív feladatk leírására szlgál - a szubrutin általánsítása

- megvalósítható OS-ben, nyelvi elemként, saját magunknak is megvalósítható (OS: fiber, nyelvi elem: crutine) - stack alapú nyelvekben (C, C++) nehezen implementálható, de pl. FreeEcs támgatja a crutine-t - első belépési pntnál úgy működik, mint függvény v. szubrutin - tvábbi belépéseknél: utlsó kilépési pntnál flytatja - kilépés: yield t crutine - mintha lenne egy függvény több returnnel, és a a függvény újbóli meghívásakr az előző return utánról indulunk var q := new queue; crutine prduce { lp while q is nt full { create new item; add item t queue;} yield t cnsume;} crutine cnsume { lp while q is nt empty { remve item frm q; use item; } yield t prduce; } Operációsrendszerek(knkurensprgramzás): Prcess(flyamat)ésThread(szál) Prcess: sajátstackésmunkaterület(memória) kmplexflyamatleíró:létrehzásaésmegszüntetésebnylultéserőfrrásigényes nemférhethzzámásflyamatkmunkaterületéhez memóriavédelemhardvertámgatással(mmuvanacpu ban) kmmunikációazos enkeresztültörténik Linux/Windwsalkalmazás:Linuxdaemn(frk)vagyWindwsService(CreatePrcess) Beágyazttrendszerek:WindwsCEvagyXPEmbedded,RTLINUX,VxWrks,QNX Thread/szál(pehelysúlyúflyamat)frdítunk: Általábanmindenprgramtöbbszálbóláll.Mindenegyesszálegyrészprgramkéntértendő,sezeket különfuttatjaazos.(szálakbaszervezzükarészfeladatkat.) párhuzamsan futó részfeladatk kmmunikálni tudnak spec függvényből hzható létre, az őket tartalmazó flyamat munkaterületén futnak szálaknak saját stack-jük van egyszerű szálleíró alacsny erőfrrású a létrehzásuk és megszüntetésük definíció szerűen hzzáférhetnek a saját flyamatuk munkaterületéhez

a saját flyamatukban létrehztt szálakkal memórián keresztül kmmunikálhatnak kis erőfrrásigény és késleltetés más flyamatkkal csak OS híváskn keresztül kmmunikálhatnak OS támgatás (jellemző) vagy thread library (pthreadunkat OS a mi flyamatunkat ütemezi, a szálakat pedig más fgja ütemezni) Megvalósítás: Windws és linux (esetleg beágyaztt rendszerek MMU-val): alkalmazás, service, daemn (Linux)= flyamat (flyamatkn belül futhatnak szálak) beágyaztt rendszerek MMU nélkül: csak szálakat tudunk létrehzni 7.A beágyaztt rendszerek gyakri rendszerarchitektúrái és azk hatása a párhuzams eseményvezérelt szftverre. Párhuzams részfeladatk (vagy flyamatk) leírása: (Ütemezési algritmusk Beágyaztt rendszerekarchitekturálismintái)

alacsnyszintűvezérlésiszerkezetek Rund Rbinarchitektúra Rund Rbinmegszakításkkal függvény sralapú(fifo FCFS?) nemalacsnyszintűek perációsrendszerek: c rutinvagyfiber prcess(flyamat) thread(szál) Rund Rbinarchitektúrák: while(1){ if(){subtask1();} if(){subtask2();} if(){subtask3();} } adttfeladatkatfeltételesenciklikusanfuttat nincsmegszakításkezelés aperifériákatpllinggalkezeljük valós idejűség rund rbin, a wrst-case végrehajtási idő lényegében megadható törékenyarchitektúra újrészfeladatkhzzáadásafelbntjaazütemezéstésazidőzítést részfeladatkleírásátafrrásnyelvnyelviknstrukcióiszeparáljákkönnyű hibázni kölcsönöskizárásiprblémaegyszerűszabálykbetartásávalbiztsítható előnye:egyszerű Rund Rbinarchitektúramegszakításkkal: megszakításkathasznál,mindeneszközhözflagetrendelünk flaget billenti be a megszakításkezelő rutin - hardverspecifikus dlgkat is kezeli egy végtelen ciklus a flaget ellenőrzi ha a flag be van billentve, akkr meghívja a kezelő függvényt utána visszabillentjük a flaget jbban kezeli az időkritikus részeket??? megszakításkezelő rutinban történik??? ha van priritás a megszakításkr, akkr még kedvezőbb a válaszidő szórása még mindig nagy (válaszidő: interrupt bejön, a teljes feldlgzás végéig tart) azarchitektúratörékeny ennél az architektúránál el lehet a prcesszrt küldeni aludni, ha nincs munka (fgyasztás szempntjából kedvező: IT alapú) - a beérkező IT-re a prcesszr felébred

függvénypinterek: milyen memóriacímtől kezdődő függvényt kívánunk meghívni - azt kell tudni, hgy milyen hívási paraméterű és visszatérési értékű függvényről van szó (stack miatt) időkritikusrészfeladatttöbbszörisfelsrlhatunk,ezzelcsökkentveakiszlgálásiidőt alacsnyfgyasztásúrendszerbenalkalmazható Függvény sralapúarchitektúra(fcfs): képesapriritáskkezelésére ezasrkezelésétőlfügg,alapvetőenfifo ITszintenMCU/CPUITvezérlő kölcsönöskizárásazitszintenésarészfeladatkközött preemptivitásnincs! nemannyiratörékeny a függvény nyelvknstrukcióerős,jólszeparál megszakítástkezelőrutinkkielégítikazeszközsürgősigényeit tvábbifeldlgzáshzegyvárakzásisrbanelhelyeznekegyfüggvényremutatópintert avárakzásisrtamain bendlgzzukfel meghatárzttalgritmusszerintasrbólkivesszükafüggvényremutatópintereket lényegében ez is interrupt alapú - interrupt: kezeli a hardvert (időkritikus hardver közeli dlgkat) - majd önmaga egy függvényekre mutató pintereket tartalmazó srba behelyezi a magas szintű (nem időkritikus) feladatkat - végtelen ciklusban: ha a sr nem üres, levesszük a függvényt (első függvény) és meghívjuk - a kölcsönös kizárást meg kell ldani az IT-kezelő és a magas szintű (nem időkritikus) feladatkat ellátó függvény között - mert elképzelhetó, hgy miközben a magas szintű feladat fut, befut még egy interrupt - válaszidő = a leghsszabb task + az IT végrehajtása + a kezelő függvény végrehajtása - nem brul fel annyira könnyen az architektúra (csak azk a kódk futhatnak le, amelyek egy függvényben benne vannak) - a függvény szeparálja a taskkat - az új feladatk csak akkr tudják felbrítani a rendszer működését, ha magasabb priritásúak (a magasabb priritású task egyébként minden architektúrában felbrítja a működést) - nem preemptív: ha már fut egy kezelő függvény, akkr hiába érkezik be egy újabb kérés (és lefut az IT kezelő függvénye), csak akkr futhat le, ha az előző befejezte Crutine(CperativeOS):ezpntsanmiis? - kperatív feladatk leírására szlgál - a szubrutin általánsítása - megvalósítható OS-ben, nyelvi elemként, saját magunknak is megvalósítható (OS: fiber, nyelvi elem: crutine)

- stack alapú nyelvekben (C, C++) nehezen implementálható, de pl. FreeEcs támgatja a crutine-t - első belépési pntnál úgy működik, mint függvény v. szubrutin - tvábbi belépéseknél: utlsó kilépési pntnál flytatja - kilépés: yield t crutine - mintha lenne egy függvény több returnnel, és a a függvény újbóli meghívásakr az előző return utánról indulunk var q := new queue; crutine prduce { lp while q is nt full { create new item; add item t queue;} yield t cnsume;} crutine cnsume { lp while q is nt empty { remve item frm q; use item; } yield t prduce; } 8. Kölcsönös kizárás, szinkrnizáció, kmmunikáció módszerei közös memóriával rendelkező rendszerekben Hgyanvédjükaközöserőfrráskat?(Kölcsönöskizárásbiztsítása(MUTEX)) 1.Flyamatkleírásánakeszközei??

Kik férhetnek hzzá a közös ef-khz? ISR Interrupt Service Rutine Részfeladatk DMA Direct Memry Access (CPU mentes memriakezel blkk) Lehetőségek: IT tiltás és engedélyezés ütemező tiltása és engedélyezése lcking (nem jó megldás, de minden más rsszabb) Új kutatási területek, megldásk: Sftware Transactinal Memry (STM) Sftware Islated Precesses (pl.: MS Singularity) Ezekkifejtése: IT tiltás IT rutin és részfeladatk közötti prblémák megldására az egyetlen lehetőség könnyű hibázni (elfelejtünk tiltani vagy engedélyezni /lehet, hgy valamelyik feltételes utasítás ágn az IT rutin tiltva marad/ ) Ütemező tiltás: OS híváskkal (ha támgattt) egyszerűen megldható ütemező skáig nem tiltható értelmét veszti az ütemező könnyű hibázni (tiltás/engedélyezés elhagyása) Lcklás: behajtani tils tábla az erőfrrásra erőfrrás specifikus az a kérdés hgyan várakzunk az erőfrrásra: aktív várakzás (live lck, spin lck, busy waiting, spining) CPU erőfrrás pazarlás történik (flyamatsan ellenőrizzük az erőfrrás felszabadult-e) a rendszer csak külső esemény hatására haladhat előre ezt a fajta prblémát javítani lehet: Rund Rbin megszakítással mintája aktív várakzás timerral kis fgyasztású rendszerekben kerülendő passzív várakzás(sleeplck) az ütemező által karbantarttt várakzási srkban várnak a részfeladatk mi történik, ha részfeladat közös erőfrrást akar használni: ha nem lcklt lckl és fut tvább ha lcklt, akkr felfüggesztődik és az adtt erőfrráshz tartzó várakzási srba kerül

lényegesen erőfrrástakaréksabb, mint az aktív várakzás, de van verhead (rezsiköltség?) a felszabaduló erőfrrásra váró részfeladat csak futásra kész állaptba kerül időzítést vizsgálni kell emiatt-(cpu munka) alacsny fgyasztású rendszerekben a CPU aludhat, ha nincs futásra kész részfeladatrész van egy Idle részfeladat, ami a CPU sleep utasítását hajtja végre végtelen ciklusban IT-re ébred fel a rendszer, hiszen belső esemény nem történhet, mert nincs futó részfeladat Hgyanlcklhatunk? lck bit többnyire egyszerű OS használata nélkül megvalósíttt szftverekben használjuk védendő erőfrráshz tartzó lgikai váltzó (blean) lck bit jelentése: FALSE: az erőfrrás szabad (használható) TRUE: az erőfrrás használt (számunkra nem használható) Belépés srán: teszt: Lck bit == FALSE lck bit = TRUE használjuk ez EF-t if (lck_bit == TRUE) wait amíg FALSE nem lesz tiszta aktív várakzás Kilépési művelet: lck_bit = FALSE gnd: ha megvizsgáljuk és látjuk, hgy szabad,de jön egy IT ami előttünk lefglalja az erőfrrást az gnd lck_bit figyelése, állítása atmi műveletként végzendő IT tiltás, vagy CPU utasítás (Test and Set) szemafr lehet bináris és cunter típusú bináris: egy időben egy részfeladat lehet a kritikus szakaszban cunter t<p: egy időben max N részfeladat lehet a kritikus szakaszban (pl.: ha winchi több parancs végrehajtására alkalmas, írhat lvashat is egyszerre) ez már OS szlgáltatásként kerül megvalósításra belépés: P(), Wait() esetleg Pend() utasítással kilépés: V(), Signal() esetleg Pst() utasítással cunter típusú esetén a belépés és a kilépés számmal paraméterezett (egy időben egynél több erőfrrás lefglalható és felszabadítható jbb, mint ha egymás

után 2-t fglalk le, pl.: ha nekem 2 kell, de egyszerre csak egyet kapk meg, mert más megelőz, akkr hltpnt lehet) hány egység lép ki és be kritikus szakasz bjektum CriticalSectin bjektum létrehzása Enter() metódust meghívhatjuk Leave() a kilépésre szlgál az bjektum megszüntethető tulajdnképpen bináris szemafr szerű működés (WINDOWS) mutex ugyanaz csak más a neve Aquire(), Waitne() Release() kilépésre kritikus szakasz és bjektum majdnem ugyanaz, csak más a neve miért is jó a lcklás kölcsönös kizárás szinkrnizációt visszavezetjük lcklásra létrehzunk egy védendő bjektumt, ami valójában nem közös erőfrrás a rendszer elsődleges működése szempntjából egy és kétldalú randevú: egyldalú: van egy szemafr, egy taszk_1 és taszk_2: taszk_1 szólni akar taszk_nek(taszk2_nek?) a taszk_2 waittel vár a szemafrra, a taszk_1 pedig szignalt küld a szemafrnak ha azt szeretné, hgy taszk_2 fussn Taszk_1 signal() szemafr wait() Taszk_2 kétldalú ugyanaz csak 2 szemafrral Alcklássránelkövetetttipikushibák: belépés / kilépés elmaradása: ha nem lépek be, de lefut a kilépés erőfrrás instabil állaptba kerülhet többszöri be vagy kilépés más erőfrráskat lcklunk (pl hasnló váltzóneveink vannak srs helyett a párhuzams prtt lcklm) deadlck v. livelck: erőfrrásk srrendjének hibás kezelése: a rendszer részfeladatai képesek lennének működni, de a rendszer nem, livelck: a rendszer csinál valamit, de nem jut el a céljáig (hibás deadlck felldás eredménye) az erőfrrásk indklatlan lassan történő lezárása kiéheztetődik

lcklás finmsága (cnse r fire gain lcking) priritás inverzió prblémája prendszer knfigurálásával kiküszöbölhető Biznyshibákkivédhetőkmnitralkalmazásával.Lkalizáljukalcklássalkapcslatsfeladatkata közöserőfrrástkörülvevőapi val. a lcklás nem szétszórtan történik a prgramban, hanem egyetlen, a közös erőfrráshz szrsan tartzó prgramrészletben (mdulban) autmatikus nyelvi szinten támgattt (JAVA): a cmpiler szúrja be a kölcsönös kizárást biztsító knstrukciókat hasnlót kézzel is készíthetünk egy mnitrszerű funkciót hzunk létre jbban járunk: nem kell a párhuzams prgramzással fglalkzni a prgramzónak Hare és Meza szemantika (működés) Charles Richard Hare a mnitr ötletadója és az elméleti alapk kidlgzója: erőfrrás felszabadítása után az erőfrrásra váró flyamat aznnal futni kezd nehéz megvalósítani preemptív ütemezők működésével nehezen összeegyeztethető Meza egy prgramzási nyelv vlt, amit a Xerx Parc: párhuzams prgramzást támgató prgramnyelv: az erőfrrás felszabadulása után az erőfrrásra váró flyamat csak futásra kész állaptba kerül ntfied all bradcast jellegű üzenetek küldése is lehetséges minden az adtt eseményre várórészfeladat futásra kész állaptba kerül Kmmunikáció: 1. közös erőfrrásként kezelt memóriaterületen keresztüli kmmunikáció ha van közös Memória 2. adatstruktúra: b. prcedurális nyelvek: tömb, struktúra c. OO nyelvek: bjektum 1. HW analógia: dual prts RAM: párhuzamsan 2 adatvezeték és címvezeték van, kölcsönös kizárást HW útn biztsít 2. kölcsönös kizárás biztsítása kötelező 3. mailbx és message queue: perációs rendszer szlgáltatás, mely elsősrban kmmunikáció célú: prendszer által szlgáltattt kmmunikációs célú adatstruktúra d. referenciák (C/C++ pinter)-t rakunk a queueba: ha ksan használjuk, akkr nem is kell kölcsönös kizárás e. message queue n darab ilyen pintert tud tárlni: akkr használható ha a termelő rövid idő alatt sk infót állít elő, fgyasztó szép lassan használja fel a dlgkat

f. ha elszttt rendszerbe kerülünk, akkr érték szerinti infrmáció átadás történik az infót fizikailag küldjük el (Micrsft MSMQ, IBM WebShpere MQ, UNIX PIPE (ls la /les)ilyeneknél üzenet nem veszhet el, pl.: banki tranzakcióknál), 9.Kölcsönös kizárás, szinkrnizáció, kmmunikáció módszerei elszttt rendszerekben, architektúrális minták elszttt rendszerekhez Elsztttrendszerek: nincs közös memória

valamilyen kmmunikációs hálózat a nde-k között ez többnyire szftvervezérelt a HW a mai világban: CAN, FlexRay, TT Ethernet, AFDX az infrmációküldés a kmmunikációs interfészen keresztül történik alacsnyabb megbízhatóságú, mint az szttt (megszttt??-ez kulcsszó) memórián keresztüli kmmunikáció nagyságrendsekkel nagybb a késleltetés, és annak ingadzása (jitter) nagyságrendekkel kisebb a sávszélesség lehetnek architektúrális különbségek (endianess /little vagy big endian/) Üzenet küldés és fgadás: SendMessage(t, frm, message) jellegű függvénnyel rmiepc többnyire aszinkrn, aznnal visszatér FROM mezőt autmatikusan az alacsnyabb SW réteg beszívhatja unicast multicast bradcast RecieveMessage(), Listen() blkkló, a megérkezett üzenettel tér vissza pcinálisan megadhatunk szűrőfeltételeket (pl.: frráscím, üzenettípus) pcinálisan lehet timeut (ha 5 másdpercig nem jött, akkr hibát küld) Lehetséges eegynemmegbízhatókmmunikációscsatrnán1valószínűséggelmegbízhatóan kmmunikálni? NEM 2hadseregprbléma:2sereg2dmbn,ellenségavölgyben:ha2hadseregegyütttámad,akkrtud csakgyőzni futárkatküldenek,aközöstámadásiidőpntról,deafutárkatazellenségeltudjakapni. 1valószínűséggelnemlehetmegállapítani,hgymikrleszatámadás,mertazegyikfélshanemlehet 100% igbizts,hgyazüzenetemegérkezett eamásiktábrbavagysem. Gyakrlatban:3utas kézfgás(tcpisígyveszifelésbntjaakapcslatt) Virtuálissztttmemória: Egy szlgáltatás, melyet üzenetekkel tudunk igénybe venni, és a nyújttt szlgáltatás jellegrehasnlóafizikaisztttmemóriáhz íráséslvasásleképzéseüzenetekre A mdern buszk (pl. PCIe) is üzenet alapúak a tényleges, fizikai memória üzenetekkelkezelhető AWEBisfelfghatóennek MailbxésMessageQueue(márkrábbanvltszóróla) Távlieljárás/metódushívás: Remte Prcedure Call, Remte Methd Invcatin, perációs rendszerekben elterjedten alkalmazzák

Rendszerarchitektúrák: Publich Subscribe VirtualDatabus Prxy Bróker(Brker) Távlieljáráshívás(RemtePrcedureCall): nde1 nde2 nde2:f1 Neve, paraméterek Visszatérésiérték :f1 f1 nde2:f1 Ahívóldaln(nde1)egyStub(függvényfej)futle Paramétereketszabványsfrmábaknvertálja(csmaglja) Üzenetekben átküldi a függvényhívás tényét és paramétereit a nde2 nek (tételezzük fel,hgynde2 nafüggvénylétezik) AhívttfélldaliStubazüzenetvételeután Üzenetvétele Lkálisfrmárahzzaaparamétereket Lkálisf1hívása(mellékhatásk!):nde2 nmaradandóváltzásk Visszatérésiértékszabványsfrmárahzása Üzenetbenelküldeniavisszatérésiértéketahívófélnek(nde1) AhívóldalnaStubvisszatérésekr Üzenetvétele Visszatérésiértéklkálisfrmárahzása Visszatérésalkálisfüggvénybealkálisvisszatérésiértékkel Ahívttfélmegtalálásánakmódszerei(Hgyantörténiknde2kiválasztása?) Manuálisknfiguráció Brókerarchitektúra Bradcastvagymulticastüzenet Távlimetódushívás: adttnde nadttbjektumadttmetódusáthívjuk Adttndeadttbjektum:referenciaaznsítja

HTTP:URLadjamegazbjektumt Ténylegestechnlógiák: JAVARMI=távlieljáráshívásvirtuálisgépekközött DCE/RPC(ezthasználjanémimódsításkkalaMicrsft) SUNRPC RemtePrcedureCall Atávlieljáráshívásnalapulatávlimetódushívásiscsakmagasabbszintenműködik. DCOM(Micrsft) WCF WindwCmmunicatinFundatin,.NET benhasználják Újtechnlógiák:elsősrbanWEB estechnlógiák XML RPC SOAP Szabványsadatfrmátumk: BER(BinaryEncdingRules) Nagyszámúeltérőszabványvan Médiaknténerfrmátumk avi,mkv, XML(eXtendableMarkupLanguage) <int16>896</int16> httpjelölőelemekhezhasnló Publish Subscribe:(bserver) Résztvevők: Publisher=termelő Subscriber=fgyasztó Bnylulthálóztképíthetőekfel Nemelsztttkörnyezetben: típus méret Binárisadat nde1 nde3 nde2 subscribers nde2 nde3 Lista:ebbentárljande1,hgykinek kellazadattelküldeni Előállítjaazadatt,amelyrende2ésnde3 kíváncsi,ezértutóbbi2idecsatlakzik

MATLABSimulink NILabview Adatvezéreltszerkezet(dataflw) Pushmódszer(adatküldése) nde1tvábbnymjaazadattnde2 nekésnde3 nak Virtuálisadatbusz:(VirtualDatabus) Publish suscriberalapján Abuszegyközpntindearendszerben nde1 nde0 Virtual databus nde3 nde2állap tmnetes vagy Havalakitőllvas,aztutánakiírjamindegyikndeszámára állapttal nde1 3adattállíthatelő nde1 3termelő,nde0fgyasztó rendelkezik nde1 3értesülnde0 tólmindeninfrmációról nde0termelőnde1 3fgyasztó Prxy: beállkétvagytöbbfélközéakmmunikációsrán cél: kmpatibilitásmegteremtése nde1 CmX Prxy CmY nde2 CmX CmYközöttifrdítás (állaptmentesvagyállapttalrendelkezik) funkciókelrejtése

nde1 Prxy nde2 f1 Firewalljellegű f2 (csakf1ésf2elérhető) f3 Teljesítményillesztés:Σ(kérésnde1 N)>>max.kérésnde0 nde1 Prxy nde0 nde2 cachejellegű Kisteljesítményű nden Bróker: Közpntiszereplő,amelyösszepársítjaatöbbiszereplőt Ismertaszereplőkszámára,egyszerűautmatizmussalmegtudható,vagystatikusanmegadható knfigurációban Afelekmegadjákazigényeketésaképességeket Abrókerösszeválgatjaőket 10. A párhuzams eseményvezérelt prgramzás architektúrális mintái, egyszerű párhuzams architektúráktól a beágyaztt perációs rendszerig. Hgyan tudunk párhuzams flyamatkat leírni szftverben - architektúrális minták. Párhuzamseseményvezéreltprgramzástámgatása: néhány kísérleti rendszertől eltekintve ugyanazkn az elveken alapulnak, hasnló funkciókat támgatnak. ugyanakkr az interfész és az interfész mögött elrejtett funkció sk esetben eltérő (kis mértékben)

Tervezési/architektúrálisminta(pattern): újrafelhasználásszintjei: kódújrafelhasználás(kódvagylibraryhasználata) példaprgram ötletek,megldáskújrafelhasználásáthgyantudjukbiztsítani? tervezési / architektúrális minta: A szftverfejlesztés srán felmerülő prblémákra adhatóáltalánsmegldás.amintaleírásatartalmazza: 6. mintaneve 7. a minta céljának és alkalmazási környezetének, követelményeinek egyértelmű megldása 8. amegldásmegadása 9. követelményekfelsrlása 10. alkalmazásipéldavagypéldák antiminták(antipattern): Hgyannecsináljuk? vita:jóötlet ersszmegldáskatbemutatni? Preemptívütemezés:Azprendszerelvehetiafutásjgátazéppenfutóflyamattól,és"futásra kész"állaptúváteheti.közbenegymásikflyamattindíthatel. Nempreemptívütemezés:Azperációsrendszernemvehetielafutásjgátaflyamattól.A flyamataddigfut,amígazáltalakiadttutasításhatásáraállapttnemvált,azazcsakmaga aflyamatválthatjakiazújütemezést.(befejeződik,erőfrrásravagyeseményrevár,lemnda futásról) Párhuzamsrészfeladatk(vagyflyamatk)leírása:(Architekturálisminták) alacsnyszintűvezérlésiszerkezetek Rund Rbinarchitektúra Rund Rbinmegszakításkkal függvény sralapú(fifo FCFS?) nemalacsnyszintűek perációsrendszerek: c rutinvagyfiber prcess(flyamat) thread(szál) Rund Rbinarchitektúrák: while(1){ if(){subtask1();} if(){subtask2();} if(){subtask3();} }