21
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Feladatok együttműködésének ellenőrzése Micskei Zoltán http://www.mit.bme.hu/~micskeiz Operációs rendszerek (vimia219)

Feladatok együttműködésének ellenőrzése

  • Upload
    regina

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Operációs rendszerek (vimia219). Feladatok együttműködésének ellenőrzése. Micskei Zoltán http://www.mit.bme.hu/~micskeiz. Hyman algoritmusa. Lehetnek-e ketten egyszerre a kritikus szakaszban?. turn =0, flag [ 0 ]= flag [1]= false ; Protocol (int id ) { do { flag [ id ] = true ; - PowerPoint PPT Presentation

Citation preview

Page 1: Feladatok együttműködésének ellenőrzése

Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék

Feladatok együttműködésének ellenőrzése

Micskei Zoltánhttp://www.mit.bme.hu/~micskeiz

Operációs rendszerek (vimia219)

Page 2: Feladatok együttműködésének ellenőrzése

2

Hyman algoritmusaturn=0, flag[0]=flag[1]=false;

Protocol (int id) { do {

flag[id] = true ; while (turn != id) {

while (flag[1-id]) /* do nothing */ ;turn = id;

}CriticalSection(id);flag[id] = false;

} while (true) ; }

Lehetnek-e ketten egyszerre a kritikus

szakaszban?

Page 3: Feladatok együttműködésének ellenőrzése

3

Peterson algoritmusaturn=0, flag[0]=flag[1]=false;

Protocol (int pid) {while (true) {flag[pid]=true;turn=1-pid;while (flag[1-pid]&&turn==1-pid) /**/;CriticalSection(id);flag[pid]=false;

}}

Lehetnek-e ketten egyszerre a kritikus

szakaszban?

Page 4: Feladatok együttműködésének ellenőrzése

4

Algoritmusok helyességének ellenőrzése Hogyan döntsük el, hogy jó?

Erősen nézzük, és próbálunk rájönni:)

Végigpróbálunk néhány lefutásto Ha hibázik: javítjuk a kódoto Ha nem találunk hibát: ??

Szisztematikus megoldás kell:o „formális módszerek”

Page 5: Feladatok együttműködésének ellenőrzése

5

Algoritmusok helyességének ellenőrzése Milyen jó lenne egy eszköz:

o Algoritmusaink egyszerű leírásárao Rendszer működésének szimulálásárao Összetett követelmények megfogalmazásárao Követelmények ellenőrzésére gombnyomásra

Jó hír: vannak ilyen eszközökoModellellenőrzők (model checkers)o 30+ év kutatás eredményeo Valós ipari eredmények HW és SW rendszereknél

Page 6: Feladatok együttműködésének ellenőrzése

6

Modellellenőrzők

Modell Követelmény

Modellellenőrző

OK Ellenpélda

Page 7: Feladatok együttműködésének ellenőrzése

7

Modellellenőrzők

Modell Követelmény

Modellellenőrző

OK Ellenpélda

Rendszer működésének leírása

Tipikusan valami állapotgépszerű

Page 8: Feladatok együttműködésének ellenőrzése

8

Modellellenőrzők

Modell Követelmény

Modellellenőrző

OK Ellenpélda

Mit akarunk ellenőriznio Kölcsönös kizáráso Holtpont

mentességo…

Logikai kifejezés:o Pl.: ! (A_var AND B_var)

Page 9: Feladatok együttműködésének ellenőrzése

9

Modellellenőrzők

Modell Követelmény

Modellellenőrző

OK Ellenpélda

„Fekete doboz” Automatikus

Eredmény:o Követelmény igazo Követelmény nem

teljesül + ellenpélda

Page 10: Feladatok együttműködésének ellenőrzése

10

UPPAAL Időzítést is támogató modellellenőrző Uppsala & Aalborg egyetemek, 15+ éve fejlesztik Cél: hatékonyság, könnyű használhatóság http://www.uppaal.com/

o Akadémiai célra ingyenesen letölthetőo Leírásoko Részletes súgóo Esettanulmányoko Sok kiegészítés (tesztgenerálás)

Page 11: Feladatok együttműködésének ellenőrzése

DEMO

Példa modell megnyitásao OPRE-hoz kapcsolódó modellek:

http://www.mbsd.cs.ru.nl/publications/papers/fvaan/MCinEdu/

Deklarációk megnézése Szimulátor:

oModell „animálása”o Végrehajtás visszajátszásao Véletlenszerű végrehajtás

Ismerkedés az UPPAAL-lal

11

Page 12: Feladatok együttműködésének ellenőrzése

12

Az UPPAAL felülete: modell szerkesztő Globális változók Automata

o Állapoto Átmenet• Őrfeltétel• Akció

o Órák Rendszer:

o Automata példányok

Page 13: Feladatok együttműködésének ellenőrzése

13

Az UPPAAL felülete: szimulátor

Átmenet kiválasztása

Változók állapota Automaták képe Trace:

o Szövegeso Grafikus: Message

Sequence Charts

Page 14: Feladatok együttműködésének ellenőrzése

14

Az UPPAAL felülete: ellenőrzés Követelmény:

o Logikai formula Elemei:

o Állapotra hivatkozáso NOT, AND, OR

További operátorok:o A: minden útono E: legalább egy útono []: minden időbeno <>: valamikor a

jövőben

Page 15: Feladatok együttműködésének ellenőrzése

Vissza a Hyman algoritmushoz

15

turn=0, flag[0]=flag[1]=false;

Protocol (int id) { do { flag[id] = true ; while (turn != id) { while (flag[1-id]);turn = id;}CriticalSection(id); flag[id] = false;} while (true) ;

}

Page 16: Feladatok együttműködésének ellenőrzése

DEMO

Algoritmusokat leíró modellek vizsgálata Szimuláció Követelmények ellenőrzése:

o Egyszerre csak egy példány lehet a kritikus szakaszban:o A[]( not (P(0).criticalSection and P(1).criticalSection) )

Ellenpélda generálása:o Options / Diagnostic Trace / Shortest

Hyman és Peterson algoritmusa

16

Page 17: Feladatok együttműködésének ellenőrzése

Étkező filozófusok

17

Page 18: Feladatok együttműködésének ellenőrzése

DEMO

- Tanszéki fejlesztés, TDK díjas Modellek: Petri háló Sokféle analízis lehetőség

Holtpont – Étkező filozófusok

Page 19: Feladatok együttműködésének ellenőrzése

További eszközök Java Pathfinder

o Modellellenőrző Java byte kódhozo NASA fejlesztés, 2005 óta nyílt forrású

CHESSo .NET-es kódokhozo Párhuzamosságból fakadó hibák keresése

jchordo Java kód statikus analíziseo Versenyhelyzet, holtpont detektálás

Static Driver Verifier (SDV, korábban SLAM)o Windows eszközmeghajtók ellenőrzése

…19

Page 20: Feladatok együttműködésének ellenőrzése

Összefoglalás

Feladatok együttműködésénél sok hibalehetőség

Versenyhelyzet, holtpont…

DE: léteznek eszközök a vizsgálathoz

Modellellenőrzők, tételbizonyítók, statikus ellenőrzők…

20

Page 21: Feladatok együttműködésének ellenőrzése

További információ R. Hamberg and F. Vaandrager.

Using Model Checkers in an Introductory Course on Operating Systems. OSR 42(6):101-111.

Formális módszerek MSc tantárgy (VIMIM100)

UPPAAL modellellenőrző

PetriDotNet modellellenőrző

21