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.
|
|
- Ernő Gáspár
- 8 évvel ezelőtt
- Látták:
Á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.
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
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ó
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,
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
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
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
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)
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:
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
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
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
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 [π]
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
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
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
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.
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
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
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
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
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:
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
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
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,
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.
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.
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
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
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)
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.
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
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.
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
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,
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
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.
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
... 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
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
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
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:
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
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
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
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.
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
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
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,
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
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
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
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
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)
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
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
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ó
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(
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)
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,
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
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
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/
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
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
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
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
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
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
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
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
ú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
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
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
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
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
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)
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
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
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
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;
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
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
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
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
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,
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();
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
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
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
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
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
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
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
ń ó ľ ó ę ľ Ĺ ü ľ ó ľ ľ ľ Í ü ľ ľ ó ľ ľ ü đö ź É É ó ł Á É ľ ľ É Íľ ľ Ü ľ łą É Ü É É ł ą ľ É Ł Á Á ł ťą łł ą ą ľ ü ź ź ü ę ę Í ź ü ü ú ó ľ ľ ľ ó ó ľ ó ľ ó ü ó ö ź ű ö öľ ü ü ľ ű ö ľ ó ű ź ű ü ę ö ó ľó
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ó
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
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
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
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ó
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