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

Post on 16-Jan-2016

45 views 0 download

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

Transcript of 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)

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?

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?

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”

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

6

Modellellenőrzők

Modell Követelmény

Modellellenőrző

OK Ellenpélda

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ű

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)

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

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)

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

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

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

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

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

}

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

Étkező filozófusok

17

DEMO

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

Holtpont – Étkező filozófusok

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

Ö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

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