Atomi műveletek őrfeltételének meghatározása. Konkrét program elkészítése. 1. Példa: Számítógép labor használata.

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

Download "Atomi műveletek őrfeltételének meghatározása. Konkrét program elkészítése. 1. Példa: Számítógép labor használata."

Átírás

1 Funkcionalitás és szinkronizáció SZINKRONIZÁCIÓS KÓD SZINTÉZISE A konkurens programokkal megoldandó feladatok jelentős részénél a szinkronizációs problémák megoldása (és az ehhez szükséges szinkronizációs kód előállítása) elválasztható a funkcionális probléma megoldásától. 3 Szinkronizációs kód szintézisének lépései Modell alkotás Feladat Modell Absztrakt program Konkrét program Elemzés Követelmények leírása Statikus modell Dinamikus modell Változók kezdeti értékei Folyamatok szerkezete Atomi műveletek kijelölése Szemaforok bevezetése Egyszerűsítés, ha lehet Kijelöljük a feladat megoldásának folyamatait, és az azok által közösen használt erőforrásokat, a folyamatok egymáshoz viszonyított szerepét (osztálydiagram). Meghatározzuk a folyamatok és az erőforrások lehetséges állapotait (állapotdiagram). A folyamatok állapotai aktív állapotok, tehát tevékenységekre (köztük az erőforrásokra irányuló tevékenységekre) utalnak. Az erőforrások állapotai a folyamatok tevékenységei közötti szinkronizációs feltételeiket tükrözik. Ha a folyamatoknak különböző prioritásaik is lehetnek, akkor a magasabb prioritásúak számára speciális állapotokat vezetünk be a korrekt ütemezés érdekében. 4 5 Modell alkotás Meghatározzuk az állapot-átmenetek műveleteit, az előfeltételeikkel együtt különös tekintettel az aktív állapotok be- (entry) és kilépési (exit) fázisaira (ezek őrfeltételes atomi műveletek lesznek majd az absztrakt programban), illetve az erőforrás-igénylést elindító (request) tevékenységre. Töröljük azokat a műveleteket, amelyek nem eredményeznek állapot-átmenetet. Absztrakt program tervezése A rszer állapotait jellemző változókat vezetünk be. Az állapotok invariánsát felírjuk a változók segítségével. Meghatározzuk az így bevezetett változók kezdeti értékeit. Elkészítjük a folyamatok vázát a kezdeti értékadásokkal együtt. Az osztott változókon dolgozó értékadásokat (az állapotdiagram műveleteit) a folyamatokhoz reljük úgy, hogy a folyamatok önmagukban helyes eredményt adjanak. Az értékadó utasításokat (ha kell őrfeltételes) atomi tevékenységekké fogjuk össze, ha azok csak kölcsönös kizárással hajthatók végre. (lásd külön a következő dián) Igazoljuk a az egyes folyamatok helyességét

2 Atomi műveletek őrfeltételének meghatározása Konkrét program elkészítése <await β then S ta> 1. Az S művelet a modell egy aktív folyamatának művelete, amely olyan, úgynevezett szinkronizációs feltétellel van ellátva, amelyik egy közös erőforrás állapotától függ. Ekkor ez a feltétel lesz a β őrfeltétel. 2. Kezdetben csak az S műveletet és az ahhoz tartozó I invariánst (a közös, osztott változókra hivatkozó predikátum) ismerjük. Először meghatározzuk a {K} <S> {L} tételt úgy, hogy a K és L csak az S-re lokális változókra hivatkozhatnak. Ellenőrizzük, hogy az egyes folyamatok bizonyításai ezzel nem interferálnak. A β őrfeltételre az alábbinak kell teljesülni: K I β lf(s, L I) Szemaforokat relünk az őrfeltételes utasításokhoz. Definiáljuk a szemaforok kezdeti értékeit. Implementáljuk az őrfeltételes utasításokat a szemaforokat használó sémákkal. Ha lehetséges, akkor egyszerűsítjük a programot Példa: Számítógép labor használata (Sike Sándor és Varga László esettanulmánya) Egy számítógép laborban számítógépek vannak van. Hallgatók a tanulmányaikhoz számítógépet is használnak. Ha nincs szabad gép, akkor a laboron kívül várakoznak, amíg fel nem szabadul egy. A számítógép-használat befejeztével elhagyják a labort, és mással foglalkoznak, amíg újra nincs szükségük számítógépre. A labor karbantartását rszergazdák látják el. Bármelyik rszergazda kezdeményezhet karbantartást, de egy adott pillanatban csak egy végezhet karbantartást. A karbantartás addig nem kezdhető meg, amíg hallgató tartózkodik a laborban. Szimuláljuk ennek a rszernek a működését! Osztály diagram System * * Crew maintain use Lab cap Student cap {exclude} Dinamikus modell Állapotok: a rszer állapotát a rszergazdák állapota, a hallgatók állapota és a labor állapota együttesen határozza meg. Hallgatók dinamikus modellje Egy hallgató kétféle állapotban lehet: o Számítógépet használ (do/use). o Egyéb tevékenységet folytat (do/work). system crew i lab student j student j use.ent[φ 1 ] do / work use.ex do / use

3 Rszergazdák dinamikus modellje Egy rszergazda háromféle állapotban lehet: o Pihen (do/rest) o Karbantartási igénye van (requesting). o Karbantart (do/maintain) crew i request do / rest requesting maintain.ex do / maintain maintain.ent[φ 2 ] Labor dinamikus modellje A labor állapotát a benn tartózkodó hallgatók száma (t), a karbantartási igényt benyújtó rszergazdák száma (r), és a karbantartást végző rszergazdák száma (w) határozza meg. Az állapot átmeneteket a Student és a Crew műveletek végzik. use.ent use.ent[φ 3 ] empty normal full use.ex[φ 4 ] use.ex t=0 0<t<cap t=cap lab request maintain.ent OK requested maintained r=0 w=0 maintain.ex[φ 6 ] r>0 w=0 maintain.ex[φ 5 ] w= Állapot-átmenetek feltételei A diagrammokban feltüntettük, hogy hol van szükség őrfeltételre: o φ 1 (use.ent) : in full in OK o φ 2 (maintain.ent) : in empty in maintained o φ 3 (use.ent) : t = cap 1 o φ 4 (use.ex) : t = 1 o φ 5 (maintain.ex) : r>0 o φ 6 (maintain.ex) : r = 0 A fentiek közül a φ 1 és φ 2 szinkronizációs feltétel is egyben. o φ 1 (use.ent) :t cap w=0 r=0 o φ 2 (maintain.ent) : w=0 t=0 Megoldás váza t, r, w :=0, 0, 0; parbegin crew 1 crew n student 1 student m par változók t, r, w : N crew i : request; student j : tevékenység feltétel atomi utasítás request igaz <r := r+1> maintain.ent φ 1 w=0 t=0 <r := r1; w := w+1> maintain.ex igaz <w := w1> use.ent φ 2 t cap w=0 r=0 <t := t+1> use.ex igaz <t := t1> Megoldás váza t, r, w :=0, 0, 0; parbegin crew 1 crew n student 1 student m par A rszer invariánsa: I 0 t cap r 0 (w=0 w=1) crew i : <r := r+1> <w=0 t=0 r := r1; w := w+1> <w := w1> student j : <t cap w=0 r=0 t := t+1> <t := t1> Absztrakt program crew i : await igaz then r := r+1 ta; await w=0 t=0 then r := r1; w := w+1 ta; await igaz then w := w1 ta; student j : await t cap w=0 r=0 then t := t+1 ta; await igaz then t := t1 ta;

4 Helyesség Parciális helyesség: Interferencia-mentesség: crew i crew j? student i student j? crew i student j? student j : { I } { I } await t cap w=0 r=0 then t := t+1 ta; { I t>0 w=0 } await igaz then t := t1 ta; { I t < cap } I 0 t cap r 0 (w=0 w=1) crew i : { I } { I } await igaz then r := r+1 ta; { I r>0 } await w=0 t=0 then r := r1; w := w+1 ta; { I t =0 w=1} await igaz then w := w1 ta; { I } 22 Új annotáció Kisegítő változók: w k, r k : {0,1} k=1..n t k : {0,1} k=1..m Új invariáns: I régi w = Σ k=1..n w k t = Σ k=1..m t k r = Σ k=1..n r k student j : { I } w i = 0 r i = 0 t j = 0 { I } t j = 0 await t cap w=0 r=0 then t := t+1 ta; t t { I t>0 w=0} j = 1 j :=1 await igaz then t := t1 ta; t j :=0 { I } t j = 0 crew i : { I } w i = 0 r i = 0 w i = 0 r i = 0 { I } await igaz then r := r+1 ta; r i :=1 { I r>0 } w i = 0 r i = 1 await w=0 t=0 then r := r1; w := w+1 ta; { I t =0 w=1} w i = 1 r i = 0 await igaz then w := w1 ta; { I} r i :=0; w i :=1 w i :=0 23 Parciális helyesség crew i : { I w i =0 r i = 0 } { I w i =0 r i = 0 } await igaz then r:=r+1; r i :=1 ta; { I r>0 w i =0 r i = 1 } await w=0 t=0 then r:=r1 ; r i :=0; w:=w+1; w i :=1 ta; { I t=0 w=1 w i =1 r i = 0 } await igaz then w:=w1; w i :=0 ta; student j : { I t j =0 } { I t j =0 } await t cap w=0 r=0 then t:=t+1; t j :=1 ta; { I t>0 w=0 t j =1} await igaz then t:=t1; t j :=0 ta; I 0 t cap (w=0 w=1) w = Σ k=1..n w k t = Σ k=1..m t k r = Σ k=1..n r k 24 Interferencia mentesség crew i crew j student i student j crew i student j student j : { I t j =0 } { I t j =0 } await t cap w=0 r=0 then t:=t+1; t j :=1 ta; { I t>0 w=0 t j =1} await igaz then t:=t1; t j :=0 ta; crew i : { I w i =0 r i = 0 } { I w i =0 r i = 0 } await igaz then r:=r+1; r i :=1 ta; { I r>0 w i =0 r i = 1 } await w=0 t=0 then r:=r1 ; r i :=0; w:=w+1; w i :=1 ta; { I t=0 w=1 w i =1 r i = 0 } await igaz then w:=w1; w i :=0 ta; 25 Kölcsönös kizárás use maintain maintain i maintain j legfeljebb cap darab use j crew i : await igaz then r:=r+1 ta; await w=0 t=0 then r:=r1; w:=w+1; w i :=1 ta; { I t=0 w=1 w i =1} await igaz then w:=w1; w i :=0 ta; student j : await t cap w=0 r=0 then t:=t+1; t j :=1 ta; { I t>0 w=0 t j =1} await igaz then t:=t1; t j :=0 ta; I 0 t cap (w=0 w=1) w = Σ k=1..n w k t = Σ k=1..m t k r = Σ k=1..n r k Kiéheztetés lehet 26 Holtpontmentesség student j : { I t j =0 } await t cap w=0 r=0 then t:=t+1; t j :=1 ta; await igaz then t:=t1; t j :=0 ta; i=1..n ( I w i =0 (w 0 t 0)) I 0 t cap (w=0 w=1) w = Σ k=1..n w k t = Σ k=1..m t k r = Σ k=1..n r k crew i : await igaz then r:=r+1 ta; { I w i =0 } await w=0 t=0 then r:=r1; w:=w+1; w i :=1 ta; await igaz then w:=w1; w i :=0 ta; j=1..m (I t j =0 (t=cap w 0 r 0 )) t=0 w=0 t

5 Három szemafor (s, bw, bt), két egész típusú változó (cw, ct): s ~ univerzális célú, sw, cw ~ await w=0 t=0 then r := r1; w := w+1 ta st, ct ~ await t cap w=0 r=0 then t := t+1 ta s, sw, cw, st, ct, t, r, w :=1, 0, 0, 0, 0, 0, 0, 0; parbegin crew 1 crew n student 1 student m par Használjuk majd az alábbi ütemezőt: if w =0 t =0 cw>0 cw := cw 1; V(sw) t cap w =0 r =0 ct>0 ct := ct1; V(st) crew i : r := r+1; if w 0 t 0 then cw := cw+1; V(s); P(sw) r := r1; w := w+1; w := w1; crew i : await igaz then r := r+1 ta; await w=0 t=0 then r := r1; w := w+1 ta; await igaz then w := w1 ta; student j : if t=cap w 0 r 0 then ct := ct+1; V(s); P(st) t := t+1; t := t1; student j : await t cap w=0 r=0 then t := t+1 ta; await igaz then t := t1 ta; 30 Egyszerűsítés r-t elimináljuk, mert crew i : r és cw jelentése azonos 3 3 r := r+1; if w 0 t 0 then cw := cw+1; V(s); P(sw) 3 r := r1; w := w+1; V(s) 4 rszergazda igényét rögtön elégítsük ki vagy álljon be sw-hez itt nem teljesülhet w =0 w := w1; 3 cw =0 if w =0 t =0 cw>0 cw cw := := cw cw 1; 1; V(sw) t cap w =0 r =0 ct>0 ct ct := := ct1; V(st); 5 schedule helyett V(s) 1 itt nem teljesülhet r =0 (r:=r+1 miatt), sem w =0 t =0 cw>0 (ennek már a megelőző kritikus szakasz végén is fenn kellene állnia, ami nem lehet. Tfh lehet, de ekkor r>0 miatt az ottani schedule a V(sw) révén újabb kritikus szakaszt indít. V(s);P(s) helyett skip 2 31 Egyszerűsítés student j : cw 0 if t=cap w 0 r 0 then ct := ct+1; V(s); P(st) t := t+1; if w =0 t =0 cw>0 cw := cw 1; V(sw) t cap w =0 r =0 ct>0 ct := ct1; V(st) t := t1; elsif V(s) if w =0 t =0 cw>0 cw := cw 1; V(sw) t cap w =0 r =0 ct>0 ct := ct1; V(st) cw = 0 Konkrét program crew i : s, sw, cw, st, ct, t, w :=1, 0, 0, 0, 0, 0, 0; parbegin crew 1 crew n student 1 student m par if w 0 t 0 then cw := cw+1; V(s); P(sw) w := w+1; V(s); w := w1; if cw>0 cw := cw 1; V(sw) r =0 ct>0 ct := ct1; V(st)

6 Egyszerűsítés student j : if t=cap w 0 cw 0 then ct := ct+1; V(s); P(st) t := t+1; if t cap ct>0 ct := ct1; V(st) t := t1; if t =0 cw>0 cw := cw 1; V(sw) r =0 ct>0 ct := ct1; V(st); 2. Példa: kritikus szakaszok Egymással párhuzamosan hajtsunk végre olyan tevékenységeket, amelyekben lehetnek olyan (kritikus) szakaszok, amelyek egy erőforrást kizárólagos módon használnak, és olyan (nem kritikus) szakaszok, amelyek csak lokális adatokat használnak. Egy konkurens program minden folyamata ismétlődően hajtson végre egy kritikus és egy nem kritikus szakaszból álló tevékenységet Statikus modell Dinamikus modell system System client i server Server use * Client client i server do / otherjob unused use.ent[ in unused] use.ex use.ent use.ex do / use used Megoldás váza parbegin client 1 client n par Legyen in:{0,1} n egy tömb, client i : otherjob; in k =1 ~ client k kritikus szakaszában (use) van A rszer invariánsa: I Σ k=1..n in k 1 Kritikus szakaszba lépés őrfeltétele (use.ent): Σ k=1..n in k = 0 in :=0 parbegin client 1 client n par client i : otherjob; <in i :=1> <in i :=0> Atomi értékadások őrfeltételei KIβ lf(s, LI) Tekintsük az <in i :=1> atomi utasítást. lf(in i :=1; in i =1 I) = (1=1 in 1 + +in i 1 +1+in i+1 + +in n 1 ) =(in 1 + +in i 1 +in i+1 + +in n =0 ) Ez nem következik az I-ből, ezért kell őrfeltétel: β= in 1 + +in i 1 +in i in n =0 vagy helyette β = in in n =0 Tekintsük az <in i :=0> atomi utasítást. lf(in i :=0; in i =0 I) = (0=0 in 1 + +in i 1 +0+in i+1 + +in n =0 1 ) Ez következik az I-ből, tehát nem kell őrfeltétel

7 Absztrakt algoritmus in :=0 I Σ k=1..n in k 1 { I Σ k=1..n in k = 0 } parbegin client i : crew 1 crew otherjob; n par { I in i = 0 } await Σ k=1..n in k = 0 then in i :=1 ta ; { I in i = 1 } await igaz then in i :=0 ta ; { I in i = 0 } helyes (interferencia-mentes) kölcsönös kizárás, holtpontmentesség kiéheztetés lehet Konkrét algoritmus in :=0; s, sc, cc:= 1, 0, 0; parbegin client 1 client n par Vezessük be az s 1 Σ k=1..n in k mutexet, amelynek segítségével a várakozó utasításokat client i : másképpen is írhatjuk. otherjob; <s>0 s:=s 1; in i :=1>; <s:=s+1; in i :=0>; client i : otherjob; P(s) ; V(s) ; Ekkor in k (k=1 n) kisegítő változók feleslegessé válnak, és az < s>0 s:=s 1>-t P(s)-sel, az <s:=s+1>-t a V(s)-sel implementálhatjuk Példa: termelő fogyasztó probléma Kétféle fajtájú párhuzamosan futó tevékenység egyetlen egyelemű puffert használ: az egyik fajta beletesz (deposit) egy újabb elemet, feltéve hogy az üres (elem nem írható felül) A másik fajta kivesz (fetch) egy elemet, feltéve hogy nem üres (egy elemet csak egyszer lehet kivenni). Osztály diagram System 1.. n 1.. m Producer deposit fetch Buffer Consumer 0 v cap {exclude} Dinamikus modell producer i do/ produce system buffer d.ex d.ent f.ent f.ex d.ent [v=0] [v=1] f.ent [ in full] normal [ in empty] do/ deposit empty d.ent f.ent [v+1=cap] [v=cap ] full consumer j do/ process do/ fetch 45 Megoldás váza Változók: vol:n, free:{0,1}, p :{0,1} n, c:{0,1} m vol: a puffer feltöltöttsége. P i : produce; deposit; free: 0, ha valamelyik folyamat használja a puffert, különben 1. p i : 1, ha P i folyamat használja a puffert, különben 0. c j : 1, ha C j folyamat használja a puffert, különben 0. Invariáns: I 0 vol cap free=1 Σ k=1..n p k Σ l=1..m c l p, c, vol, free := 0, 0, 0, 1; parbegin P 1 P n C 1 C m par P i : produce; <p i :=1; free:=0; vol:=vol+1>; deposit; <p i :=0; free:=1> C j : fetch; process; C j : <c j :=1; free:=0; vol:=vol 1>; fetch; <c j :=0; free:=1> process; 46 7

8 Atomi értékadások őrfeltételei (termelő) QIβ lf(s, RI) {p j =0 vol=v } <p j :=1; free:=0; vol:=vol+1> {p j =1 free=0 vol=v +1} lf(p j :=1 ; free:=0; vol:=vol+1; p j =1 free=0 vol=v +1 I)= 1=1 0=0 vol+1=v +1 0vol+1cap 0=1 Σ k=1..n p k Σ l=1..m c l Ez nem következik az p j =0 vol=v I-ből, ezért kell őrfeltétel: β= vol<cap free=1 {p j =1} <p j :=0; free:=1> {p j =0 free=1 } lf(p j :=0 ; p j =0 free=1 I)= 0=0 1=1 0vol cap 1=1 Σ k=1..n p k Σ l=1..m c l Ez következik az I-ből, tehát itt nem kell őrfeltétel. I 0 vol cap free=1 Σ k=1..n p k Σ l=1..m c l Atomi értékadások őrfeltételei (termelő) QIβ lf(s, RI) {c j =0 vol=v } <c j :=1; free:=0; vol:=vol 1> {c j =1 free=0 vol=v 1} lf(c j :=1 ; free:=0; vol:=vol+1; c j =1 free=0 vol=v +1 I)= 1=1 0=0 vol 1=v 1 0vol 1cap 0=1 Σ k=1..n p k Σ l=1..m c l Ez nem következik az c j =0 vol=v I-ből, ezért kell őrfeltétel: β= vol>0 free=1 {c j =1} <c j :=0; free:=1> {c j =0 free=1 } lf(c j :=0 ; c j =0 free=1 I)= 0=0 1=1 0vol cap 1=1 Σ k=1..n p k Σ l=1..m c l Ez következik az I-ből, tehát itt nem kell őrfeltétel. I 0 vol cap free=1 Σ k=1..n p k Σ l=1..m c l Absztrakt program P i : {I p i =0} e:= produce(); await vol<cap free=1 then p i := 1; free:=0; vol:=vol+1 ta; {I p i =1 free=0} deposit(e); await igaz then p i := 0; free:=1 ta; {I p i =0} helyes (interferencia) free=0 p i =1 c j =1 kölcsönös kizárás p i =1 c j =1 holtpontmentesség free=0 p i =0 c j =0 kiéheztetés lehet p, c, vol, free:= 0, 0, 0, 1; parbegin P 1 P n C 1 C m par C j : {I c j =0} await vol>0 free=1 then c j := 1; free:=0; vol:=vol 1 ta; {I c j =1 free=0} e:=fetch(); await igaz then c j := 0; free:=1 ta; {I c j =0} process(e); I 0 vol cap free=1 Σ k=1..n p k Σ l=1..m c l 49 Három szemafor (s, bw, bt) és két egész típusú változó (cw, ct): s ~ univerzális célú, sp, cp ~ await vol<cap free=1 sc, cc ~ await vol>0 free=1 Használjuk majd az alábbi ütemezőt: s, sp, cp, sc, cc, p, c, vol, free :=1, 0, 0, 0, 0, 0, 0, 0, 1; parbegin P 1 P n C 1 C m par if vol<cap free=1 cp>0 cp := cp1; V(sp) vol>0 free=1 cc>0 cc := cc1; V(sc) igaz V(s) 50 P i : e:= produce(); if vol=cap free=0 then cp:=cp+1; V(s); P(sp); fi p i := 1; free:=0; vol:=vol+1; deposit(e); p i := 0; free:=1; P i : e:= produce(); await vol<cap free=1 then p i := 1; free:=0; vol:=vol+1 ta; deposit(e); await igaz then p i := 0; free:=1 ta; C j : if vol=0 free=0 then cc:=cc+1; V(s); P(sc); fi c j := 1; free:=0; vol:=vol 1; e:=fetch(); c j := 0; free:=1; process(e); C j : await vol>0 free=1 then c j := 1; free:=0; vol:=vol 1 ta; e:=fetch(); await igaz then c j := 0; free:=1 ta; process(e);

9 Egyszerűsítés P i : e:= produce(); if vol=cap free=0 then cp:=cp+1; V(s); P(sp); fi p i := 1; free:=0; vol:=vol+1; deposit(e); V(s); p i := 0; free:=1; V(s); if vol<cap free=1 cp>0 cp := cp1; V(sp) vol>0 free=1 cc>0 cc := cc1; V(sc) Egyszerűsítés C j : if vol=0 free=0 then cc:=cc+1; V(s); P(sc); fi c j := 1; free:=0; vol:=vol 1; e:=fetch(); V(s); c j := 0; free:=1; process(e); if vol<cap free=1 cp>0 cp := cp1; V(sp) vol>0 free=1 cc>0 cc := cc1; V(sc); Példa: Étkező filozófusok Osztály diagram Adott számú filozófus ül egy kör alakú asztal körül, az asztal közepén egy nagy tál étel, minden filozófus előtt egy tányér, attól jobbra illetve balra egy-egy villa, amelyet jobb illetve baloldali szomszédjukkal közösen, de nem egyszerre használhatnak. A filozófusok felváltva esznek és gondolkodnak. Ha enni akarnak, meg kell várniuk, hogy a tőlük jobbra illetve balra eső villa is szabad legyen, ezután megkezdhetik az evést, majd az evés végeztével visszateszik az asztalra villáikat. n Fork 0, 2 System use n Philosopher Dinamikus modell philosopher i do/ think system fork j eat.ex eat i.ex eat.ent [ in free i eat i.ent eat i 1.ex in free i 1 ] eat i 1.ent do/ eat free used P i : Megoldás váza think; eat; Változók: p :{0,1} n, p k =1 k. filozófus eszik f :{0,1} n, f k =1 k. filozófustól balra eső villa használatban Invariáns: I k {1 n}: (p k =0 p k 1 =0) p k =1 (f k =1 f k 1 =1) f k =1 (f k 1 =1 f k 1 =1) p, f := 0, 0; parbegin P 1 P n par P i : think; < f i =0 f i 1 =0 p i := 1; f i :=1; f i 1 :=1>; eat; < p i := 0; f i :=0; f i 1 :=0 >

10 Absztrakt program I k {1 n}: (p k =0 p k 1 =0 ) p k =1 (f k =1 f k 1 =1) f k =1 (f k 1 =1 f k 1 =1) P i : { I p i =0 } think; await f i =0 f i 1 =0 then p, f := 0, 0; p i := 1; f i :=1; f i 1 :=1 ta; parbegin P 1 P n par { I p i = 1 f i =1 f i 1 =1 } eat; await igaz then p i := 0; f i :=0; f i 1 :=0 ta; { I p i =0 f i =0 f i 1 =0 } helyesség (interferencia) {(I p j =0) pre(u ik )} u ik {I p j =0} {(I p j = 1 f j =1 f j 1 =1 ) pre(u ik )} u ik {I p j = 1 f j =1 f j 1 =1 } kölcsönös kizárás (csak a szomszédos filozófusokra) (I p i = 1 f i =1 f i 1 =1) (I p i 1 = 1 f i 1 =1 f i 2 =1) holtpontmentesség (kiéheztetés lehet) i {1 n}: I p i = 0 (f i =1 f i 1 =1) Három szemafor (s, bw, bt) és két egész típusú változó (cw, ct): s ~ univerzális célú, sf, cf ~ await f i =0 f i 1 =0 p, f, s, se, ce:= 0, 0, 1, 0, 0, 0, 0; parbegin P 1 P n par Használjuk majd az alábbi ütemezőt: if f i =0 f i 1 =0 cf>0 then cf := cf1; V(sf) P i : think; if f i 0 f i 1 0 then cf:=cf+1; V(s); P(se) p i := 1; f i :=1; f i 1 :=1; eat; p i := 0; f i :=0; f i 1 :=0; P i : think; await f i =0 f i 1 =0 then p i := 1; f i :=1; f i 1 :=1 ta; eat; await igaz then p i := 0; f i :=0; f i 1 :=0 ta; Példa (adatbázis) Egy adatbázist kétféle folyamat használhat n>0 darab író (writer) és m>0 darab olvasó (reader) Az író folyamatok egymást kölcsönösen kizárják az adatbázis használatából. Az olvasó folyamatok közül tetszőleges számú folyamat használhatja egyidejűleg az adatbázist. Egy író és egy olvasó folyamat kölcsönösen kizárja egymást az adatbázis használatából. parbegin W 1 W n R 1 R m par Osztály diagram Dinamikus modell system System writer i database reader j 1.. n 1.. m Writer write read Database 0..1 * Reader reader j read.ex do / read read.ent[φ 1 ] do / work database {exclude} writer i write.ent[φ 2 ] do / work write.ex do / write write.ent read.ent unused used read.ex[φ 3 ] write.ex read.ex[φ 4 ]

11 Megoldás váza Az adatbázis állapotát az olvasás illetve írás flagjei (r, w : {0,1}), és az olvasást végző folyamatok száma (c : N) jellemzi. tevékenység feltétel atomi utasítás write.ent φ 1 w=0 r=0 <w := 1> write.ex igaz <w := 0> read.ent φ 2 w=0 <c := c+1; r:=1> read.ex igaz <c := c 1; if c=0 then r := 0 > w, r, c := 0, 0, 0; parbegin W 1 W n R 1 R m par W i : write; R j : read; Példa (adatbázis): segédváltozók Vezessünk be megfelelő annotáláshoz kisegítő változókat: w i :{0,1} ~ 1, ha az i-dik folyamat éppen ír (i=1...n) r j : {0,1} ~ 1, ha a j-dik folyamat éppen olvas (j=1...m) Invariáns állítás: I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0) w, r, c, w, r:=0, 0, 0, 0, 0; {I} parbegin W 1 W n R 1 R m par { } Példa (adatbázis): annotálás és helyesség R j : { I r j =0 } await w=0 then c:=c+1; r:=1; r j :=1 ta; { I r j =1 r=1 c>0 } read; { I r j =1 r=1 c>0 } await igaz then c:=c 1; if c=0 then r := 0 r j :=0 ta; { I r j =0 } W i : { I w i =0 } { I w i =0 } await w=0 r=0 then w:=1; w i :=1 ta; { I w i =1 w=1 } write; { I w i =1 w=1 } await igaz then w:=0; w i :=0 ta; I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0) Példa (adatbázis): interferencia-mentesség { I r j =0 } await w=0 then c:=c+1; r:=1; r j :=1 ta; { I r j =1 r=1 cr>0 } await igaz then c:=c 1; if c=0 then r := 0 r j :=0 ta; { I w i =0 } await w=0 r=0 then w:=1; w i :=1 ta; { I w i =1 w=0 } await igaz then w:=0; w i :=0 ta { I r k =1 r=1 c>0 } { I r k =1 r=1 c>0 } { I r k =0 } { I w k =0 } { I w k =1 w=1 } { I w k =1 w=1 } { I r k =1 r=1 c>0 } { I r k =1 r=1 c>0 } { I r k =0 } { I w k =0 } { I w k =1 w=1 } { I w k =1 w=1 } I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0) Példa (adatbázis): kölcsönös kizárás Egy író és egy olvasó folyamat kölcsönösen kizárják egymást az adatbázis használatából, azaz bármelyik i {1 n}-re és bármelyik j {1 m}-re: pre writei pre readj o [ I w i =1 w=1] [I r j =1 r=1 c>0] Az író folyamatok kölcsönösen kizárják egymást az adatbázis használatából, azaz bármelyik i,j {1 n}-re, ahol i j : pre writei pre writej o [ I w i =1 w=1] [ I w j =1 w=1] Példa (adatbázis): holtpontmentesség A holtpontmentességhez bizonyítani kell, hogy: i=1..n D(W i ) j=1..m D(R j ) ahol D(W i ) = I w i=0 (w=1 r=1) és D(R j ) = I r j=0 w=1 i=1..n D(W i ) j=1..m D(R j ) I k=1..n w k =0 w=1 I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0) I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0)

12 Példa (adatbázis): koplaltatás A rszer nem mentes a koplaltatástól. Lehet olyan helyzet hogy o minden író folyamat várakozik: i=1..n ( I w i =0 (w=1 r=1)) o mert az adatbázist olvasó folyamatok használják: I r=1 o és további olvasó folyamatok részére szabad az út a belépéshez: I r j =0 w=0 I w=sgn( k=1..n w k ) c = k=1..m r k r=sgn(c) (w=0 r=0) W i : if w 0 r 0 then cw:=cw+1;v(s); P(sw) w:=1; write; w:=0; W i : await w=0 r=0 then w:=1 ta; write; await igaz then w:=0 ta R j : if w 0 then cr:=cr+1; V(s); P(sr) c:=c+1; r:=1; read; c:=c 1; if c=0 then r := 0 R j : await w=0 then c:=c+1; r:=1 ta; read; await igaz then c:=c 1; if c=0 then r := 0 fi ta; 73 12

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

Termelő-fogyaszt. fogyasztó modell

Termelő-fogyaszt. fogyasztó modell Termelő-fogyaszt fogyasztó modell A probléma absztrakt megfogalmazása Adott egy N 1 kapacitású közös tároló. Adott a folyamatok két csoportja, amelyek a tárolót használják. n 1 termelő folyamat, m 1 fogyasztó

Részletesebben

6. Közös változóval rendelkező párhuzamos program, Közös változó,

6. Közös változóval rendelkező párhuzamos program, Közös változó, 6. Közös változóval rendelkező párhuzamos program, Közös változó, Reynold kritérium. Atomi művelet, atomi utasítás. szintaxis, szemantika, tulajdonságok. Szinkronizációs párhuzamos program, szintaxis,

Részletesebben

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere Szekvenciális programok kategóriái strukturálatlan strukturált NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE Hoare-Dijkstra-Gries módszere determinisztikus valódi korai nem-determinisztikus általános fejlett

Részletesebben

Osztott rendszer. Osztott rendszer informális definíciója

Osztott rendszer. Osztott rendszer informális definíciója Osztott rendszer Osztott rendszer informális definíciója Egymástól elkülönülten létező program-komponensek egy halmaza. A komponensek egymástól függetlenül dolgoznak saját erőforrásukkal. A komponensek

Részletesebben

S0-01 Szintézis és verifikáció (Programozás elmélet)

S0-01 Szintézis és verifikáció (Programozás elmélet) S0-01 Szintézis és verifikáció (Programozás elmélet) Tartalom 1. Programozási alapfogalmak 2. Elemi programok és program konstrukciók definíciói 3. Nem-determinisztikus strukturált programok formális verifikációja

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

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:

Részletesebben

Operációs rendszerek Folyamatközi kommunikáció 1.1

Operációs rendszerek Folyamatközi kommunikáció 1.1 Operációs rendszerek Folyamatközi kommunikáció 1.1 Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK Operációs rendszerek p. Az IPC

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

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus. 8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus. Ágens rendszer definíciója. Példák. Fairness. (Fair tulajdonság). Gyenge fair követelmény. A fair nem determinisztikus szemantika definíciója

Részletesebben

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6. Programkonstrukciók Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π]

Részletesebben

Kiterjesztések sek szemantikája

Kiterjesztések sek szemantikája Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból

Részletesebben

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha ALAPFOGALMAK 1 Á l l a p o t t é r Legyen I egy véges halmaz és legyenek A i, i I tetszőleges véges vagy megszámlálható, nem üres halmazok Ekkor az A= A i halmazt állapottérnek, az A i halmazokat pedig

Részletesebben

PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK

PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK Szerkesztette: Bókay Csongor 2012 tavaszi félév Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2012. június

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

Programok értelmezése

Programok értelmezése Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése

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

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

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

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

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18 Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda

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

Gráfelméleti feladatok. c f

Gráfelméleti feladatok. c f Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,

Részletesebben

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei A Gauss-Jordan elimináció, mátrixinvertálás Gauss-Jordan módszer Ugyanazzal a technikával, mint ahogy a k-adik oszlopban az a kk alatti elemeket kinulláztuk, a fölötte lévő elemeket is zérussá lehet tenni.

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

Időzített átmeneti rendszerek

Időzített átmeneti rendszerek Időzített átmeneti rendszerek Legyen A egy ábécé, A = A { (d) d R 0 }. A feletti (valós idejű) időzített átmeneti rendszer olyan A = (S, T,,, ) címkézett átmeneti rendszert ( : T A ), melyre teljesülnek

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 modell-ellenőrzés gyakorlata UPPAAL

A modell-ellenőrzés gyakorlata UPPAAL A modell-ellenőrzés gyakorlata UPPAAL Uppsalai Egyetem + Aalborgi Egyetem közös fejlesztése; 1995. első verzió megjelenése; részei: - grafikus modellt leíró eszköz (System editor) - szimulátor (Simulator)

Részletesebben

Programozási módszertan

Programozási módszertan 1. fejezet Programozási módszertan elmélete 1.1. Az absztrakt adattípus egy matematikai modellje. (Univerzális algebra és absztrakt adattípus). Az adattípus egy komplex leírása, típusosztály morfizmusdiagramja.

Részletesebben

Alapszintű formalizmusok

Alapszintű formalizmusok Alapszintű formalizmusok dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1 Mit szeretnénk elérni? Informális tervek Informális követelmények Formális modell Formalizált követelmények

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Rendszermodellezés Modellellenőrzés Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Ismétlés: Mire használunk modelleket? Kommunikáció, dokumentáció Gondolkodás,

Részletesebben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Algoritmusok helyességének bizonyítása. A Floyd-módszer Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12 Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban

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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1 Turing-gépek Logika és számításelmélet, 7. gyakorlat 2009/10 II. félév Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1 A Turing-gép Az algoritmus fogalmának egy intuitív definíciója:

Részletesebben

Tartalom. Operációs rendszerek. Precedencia. 3.2 Szinkronizáció. 3.1 Folyamatokból álló rendszerek. Együttműködő folyamatok használatának indokai

Tartalom. Operációs rendszerek. Precedencia. 3.2 Szinkronizáció. 3.1 Folyamatokból álló rendszerek. Együttműködő folyamatok használatának indokai Tartalom Operációs rendszerek 3. Folyamatok kommunikációja Simon Gyula Bevezetés Szinkronizáció A kritikus szakasz megvalósítási módozatai Információcsere ok között Felhasznált irodalom: Kóczy-Kondorosi

Részletesebben

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 04. 17. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési

Részletesebben

Előadó: Dr. Oniga István DIGITÁLIS TECHNIKA 3

Előadó: Dr. Oniga István DIGITÁLIS TECHNIKA 3 Előadó: Dr. Oniga István DIGITÁLIS TEHNIK 3 Logikai függvények logikai függvény olyan egyenlőség, amely változói kétértékűek, és ezek között csak logikai műveleteket végzünk függvények megadása történhet

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.cs.ubbcluj.ro/~kasa/formalis.html Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezet ), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

Algoritmizálás, adatmodellezés tanítása 6. előadás

Algoritmizálás, adatmodellezés tanítása 6. előadás Algoritmizálás, adatmodellezés tanítása 6. előadás Tesztelési módszerek statikus tesztelés kódellenőrzés szintaktikus ellenőrzés szemantikus ellenőrzés dinamikus tesztelés fekete doboz módszerek fehér

Részletesebben

ZH feladatok megoldásai

ZH feladatok megoldásai ZH feladatok megoldásai A CSOPORT 5. Írja le, hogy milyen szabályokat tartalmazhatnak az egyes Chomskynyelvosztályok (03 típusú nyelvek)! (4 pont) 3. típusú, vagy reguláris nyelvek szabályai A ab, A a

Részletesebben

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája? ,,Alap kiskérdések Logika és informatikai alkalmazásai kiskérdések 2012. február 19. 1. Hogy hívjuk a 0 aritású függvényjeleket? 2. Definiálja a termek halmazát. 3. Definiálja a formulák halmazát. 4. Definiálja,

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Időzített rendszerek és az UPPAAL II

Időzített rendszerek és az UPPAAL II Időzített rendszerek és az UPPAAL II Dr. Németh L. Zoltán (zlnemeth@inf.u-szeged.hu) SZTE, Informatikai Tanszékcsoport 2008/2009 I. félév 2008.11.15 MODELL 11 1 Rendszerek leírása az UPPAAL-ban Modellelenőrzés

Részletesebben

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január Osztott jáva programok automatikus tesztelése Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január Osztott alkalmazások Automatikus tesztelés Tesztelés heurisztikus zaj keltés Tesztelés genetikus

Részletesebben

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

Operációs rendszerek II. Folyamatok ütemezése Folyamatok ütemezése Folyamatok modellezése az operációs rendszerekben Folyamatok állapotai alap állapotok futásra kész fut és várakozik felfüggesztett állapotok, jelentőségük Állapotátmeneti diagram Állapotátmenetek

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

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 11. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm () 1 / 1 NP-telesség Egy L nyelv NP-teles, ha L NP és minden L NP-re L L. Egy Π döntési feladat NP-teles, ha Π NP és

Részletesebben

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Formális modellek használata és értelmezése Formális modellek

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

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

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

Csima Judit november 15.

Csima Judit november 15. Adatbáziskezelés Normalizálás Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2017. november 15. Csima Judit Adatbáziskezelés Normalizálás 1 / 26 Normalizálás Tétel Tetszõleges (R,

Részletesebben

angolul: greedy algorithms, románul: algoritmi greedy

angolul: greedy algorithms, románul: algoritmi greedy Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város

Részletesebben

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

A számítógépes nyelvészet elmélete és gyakorlata. Automaták A számítógépes nyelvészet elmélete és gyakorlata Automaták Nyelvek és automaták A nyelvek automatákkal is jellemezhetőek Automaták hierarchiája Chomsky-féle hierarchia Automata: új eszköz a nyelvek komplexitásának

Részletesebben

Szoftver karbantartási lépések ellenőrzése

Szoftver karbantartási lépések ellenőrzése Szoftverellenőrzési technikák (vimim148) Szoftver karbantartási lépések ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.inf.mit.bme.hu/

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

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar. 2010. január 4.

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar. 2010. január 4. Név, felvételi azonosító, Neptun-kód: MI pont(90) : Csak felvételi vizsga: csak záróvizsga: közös vizsga: Közös alapképzéses záróvizsga mesterképzés felvételi vizsga Mérnök informatikus szak BME Villamosmérnöki

Részletesebben

Assembly. Iványi Péter

Assembly. Iványi Péter Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter

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

Maximum kiválasztás tömbben

Maximum kiválasztás tömbben ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while

Részletesebben

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések 1. Az informatikai rendszereknél mit ellenőriznek validációnál és mit verifikációnál? 2. A szoftver verifikációs technikák

Részletesebben

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára. 11. Előadás

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára. 11. Előadás ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára 11. Előadás Előadó: Hajnal Péter Jegyzetelő: Hajnal Péter 2011. április 26. 1. Mahaney-tétel bizonyítása Emlékeztető. Mahaney-tétel

Részletesebben

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám. 1 Az utazó ügynök problémája Utazó ügynök feladat Adott n számú város és a városokat összekötő utak, amelyeknek ismert a hossza. Adott továbbá egy ügynök, akinek adott városból kiindulva, minden várost

Részletesebben

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel (record) tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel elemei mezők. Például tétel: személy elemei: név, lakcím, születési

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

Architektúra, megszakítási rendszerek

Architektúra, megszakítási rendszerek Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép

Részletesebben

Programozási nyelvek 6. előadás

Programozási nyelvek 6. előadás Programozási nyelvek 6. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan

Részletesebben

Modellek és Algoritmusok - 2.ZH Elmélet

Modellek és Algoritmusok - 2.ZH Elmélet Modellek és Algoritmusok - 2.ZH Elmélet Ha hibát elírást találsz kérlek jelezd: sellei_m@hotmail.com A fríss/javított változat elérhet : people.inf.elte.hu/semsaai/modalg/ 2.ZH Számonkérés: 3.EA-tól(DE-ek)

Részletesebben

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba Első lépések File/New A mentés helyét érdemes módosítani! Pl. Dokumentumok Fájlnév: pl. Proba (megj. ékezetes karaktereket nem használhatunk a fájlnévben) 1 Konvejor pálya elkészítése System/New Rendszer

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

Csima Judit október 24.

Csima Judit október 24. Adatbáziskezelés Funkcionális függőségek Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2018. október 24. Csima Judit Adatbáziskezelés Funkcionális függőségek 1 / 1 Relációs sémák

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

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai Optimalizálási eljárások MSc hallgatók számára 10. Előadás Előadó: Hajnal Péter Jegyzetelő: T. Szabó Tamás 2011. április 20. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai A feltétel nélküli optimalizálásnál

Részletesebben

Számításelmélet. Második előadás

Számításelmélet. Második előadás Számításelmélet Második előadás Többszalagos Turing-gép Turing-gép k (konstans) számú szalaggal A szalagok mindegyike rendelkezik egy független író / olvasó fejjel A bemenet az első szalagra kerül, a többi

Részletesebben

Csima Judit BME, VIK, november 9. és 16.

Csima Judit BME, VIK, november 9. és 16. Adatbáziskezelés Függőségőrzés, 3NF-re bontás Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2018. november 9. és 16. Csima Judit Adatbáziskezelés Függőségőrzés, 3NF-re bontás 1

Részletesebben

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y. Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME

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

Programozási Nyelvek: C++

Programozási Nyelvek: C++ Programozási Nyelvek: C++ Gyakorló feladatkönyv Umann Kristóf #include "CppStudent.h" int main() { CppStudent *reader = new CppStudent(); reader->readbook(); while(!reader->doesunderstand()) { reader->exercise();

Részletesebben

A logikai következmény

A logikai következmény Logika 3 A logikai következmény A logika egyik feladata: helyes következtetési sémák kialakítása. Példa következtetésekre : Minden veréb madár. Minden madár gerinces. Minden veréb gerinces 1.Feltétel 2.Feltétel

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

2018, Funkcionális programozás

2018, Funkcionális programozás Funkcionális programozás 6. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018, tavaszi félév Miről volt szó? Haskell modulok, kompilálás a

Részletesebben

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei 1. Mi az elsődleges következménye a gyenge logikai redundanciának? inkonzisztencia veszélye felesleges tárfoglalás feltételes függés 2. Az olyan tulajdonság az egyeden belül, amelynek bármely előfordulása

Részletesebben

Intellio Video System 2. Csatlakozási útmutató a demószerverhez

Intellio Video System 2. Csatlakozási útmutató a demószerverhez Intellio Video System 2 Csatlakozási útmutató a demószerverhez Az Intellio Video System Client 2 telepítése Az Intellio Video System Client 2 kliens telepítését az IntellioClient2Setup.exe fájl elindításával

Részletesebben

OE-NIK 2010/11 ősz OE-NIK. 2010. ősz

OE-NIK 2010/11 ősz OE-NIK. 2010. ősz 2010/11 ősz 1. Word / Excel 2. Solver 3. ZH 4. Windows 5. Windows 6. ZH 7. HTML 8. HTML 9. ZH 10. Adatszerkezetek, változók, tömbök 11. Számábrázolási kérdések 12. ZH 13. Pótlás A Windows felhasználói

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

ń ó ľ ó ę ľ Ĺ ü ľ ó ľ ľ ľ Í ü ľ ľ ó ľ ľ ü đö ź É É ó ł Á É ľ ľ É Íľ ľ Ü ľ łą É Ü É É ł ą ľ É Ł Á Á ł ťą łł ą ą ľ ü ź ź ü ę ę Í ź ü ü ú ó ľ ľ ľ ó ó ľ ó ľ ó ü ó ö ź ű ö öľ ü ü ľ ű ö ľ ó ű ź ű ü ę ö ó ľó

Részletesebben

Programfejlesztési Modellek

Programfejlesztési Modellek Programfejlesztési Modellek Programfejlesztési fázisok: Követelmények leírása (megvalósíthatósági tanulmány, funkcionális specifikáció) Specifikáció elkészítése Tervezés (vázlatos és finom) Implementáció

Részletesebben

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások Megoldások 1. Tekintsük az alábbi szabályos hatszögben a következő vektorokat: a = AB és b = AF. Add meg az FO, DC, AO, AC, BE, FB, CE, DF vektorok koordinátáit az (a ; b ) koordinátarendszerben! Alkalmazzuk

Részletesebben

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 7. Előadás Árazási interpretáció Tekintsük újra az erőforrás allokációs problémát (vonat

Részletesebben

A digitális számítás elmélete

A digitális számítás elmélete A digitális számítás elmélete 8. előadás ápr. 16. Turing gépek és nyelvtanok A nyelvosztályok áttekintése Turing gépek és a természetes számokon értelmezett függvények Áttekintés Dominó Bizonyítások: L

Részletesebben

Fordítás Kódoptimalizálás

Fordítás Kódoptimalizálás Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás 2016. október 20. Izsó Tamás Fordítás Kódoptimalizálás / 1 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó

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