Главная » Просмотр файлов » Лекция 5. Практические приёмы абстракции. Свойства линейного времени. Спецификация и верификация свойств при помощи Spin

Лекция 5. Практические приёмы абстракции. Свойства линейного времени. Спецификация и верификация свойств при помощи Spin (1158558), страница 2

Файл №1158558 Лекция 5. Практические приёмы абстракции. Свойства линейного времени. Спецификация и верификация свойств при помощи Spin (К. Савенков - Верификация программ на моделях (2012)) 2 страницаЛекция 5. Практические приёмы абстракции. Свойства линейного времени. Спецификация и верификация свойств при помощи Spin (1158558) страница 22019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Допустимые состояния останова mtype = {p, v};semaphoreusers0 s0 chan sem = [0] of {mtype};byte count;active proctype semaphore(){end:do:: sem!p ->sem?vod}active proctype user(){end:do:: sem?p;count++;/*critical section*/count--;sem!vod}sem!psem?psem?vs1 s1 count++s2 count-s3 sem!vНи один из процессов не должен завершаться; допустимое состояние останова для обоих процессов – s0. Верификатор должен искать недопустимые состояния останова, не отвлекаясь на допустимые.

Состояния прогресса mtype = {p, v};semaphoreusers0 s0 chan sem = [0] of {mtype};byte count;active proctype semaphore(){do:: sem!p ->progress: sem?vod}active proctype user(){do:: sem?p;count++;/*critical section*/count--;sem!vod}sem!psem?psem?vs1 s1 count++s2 count-s3 sem!vСистема демонстрирует прогресс всякий раз, когда user получает доступ к критической секции, т.е.

когда процесс semaphore достигает состояния s1. Теперь верификатор будет искать достижимые циклы бездействия. Пример byte x = 2;•  x бесконечно варьирует между 2 и 1, •  у каждого процесса – одно состояние, •  метки progress не используются => по умолчанию всякий цикл рассматривается как потенциально бездейственный active proctype A(){do:: x = 3 - xod}>spin -a fair.pml>gcc -DNP -o pan pan.cactive proctype B() >./pan -lОбнаружение циклов pan: non-progress cycle (at depth 2){бездействия pan: wrote fair.pml.traildo(Spin Version 5.1.4 -- 27 January 2008):: x = 3 - xWarning: Search not completedod+ Partial Order Reduction}Запуск алгоритма Full statespace search for:never claim+проверки assertion violations+ (if within scope of claim)Q1: Что будет, если non-progress cycles+ (fairness disabled)invalid end states- (disabled by never claim) отметить один из do-­‐od State-vector 24 byte, depth reached 5, errors: 1 циклов меткой progress? 3 states, storedQ2: А если разметить 0 states, matched3 transitions (= stored+matched) оба цикла? 0 atomic stepshash conflicts:0 (resolved)2.501memory usage (Mbyte)Какой цикл мы обнаружили? >spin -t -p fair.pmlStarting A with pid 0Starting B with pid 1spin: couldn't find claim (ignored)2:proc 1 (B) line 13 "fair.pml"<<<<<START OF CYCLE>>>>>4:proc 1 (B) line 13 "fair.pml"6:proc 1 (B) line 13 "fair.pml"spin: trail ends after 6 steps#processes: 2x = 16:proc 1 (B) line 12 "fair.pml"6:proc 0 (A) line5 "fair.pml"2 processes created(state 1)[x = (3-x)](state 1)(state 1)[x = (3-x)][x = (3-x)](state 2)(state 2)Мы не знаем относительной скорости выполнения процессов: •  возможно, что процесс B выполнит бесконечно больше шагов, чем процесс A; •  цикл бездействия, обнаруженный Spin – это не обязательно справедливый цикл.

Справедливые циклы •  Часто мы ожидаем конечного прогресса: –  если процесс может сделать шаг, он в конце концов его сделает. •  Существует два основных варианта справедливости: 1)  слабая справедливость: –  если оператор выполним бесконечно долго, то он в конце концов будет выполнен; 2)  сильная справедливость: –  если оператор выполним бесконечно часто, то он в конце концов будет выполнен. •  Справедливость применима как к внешнему, так и к внутреннему недетерминизму.

выбор оператора vs. выбор процесса byte x = 2, y = 2;active proctype A(){do:: x = 3 – x;:: y = 3 - yod}active proctype B(){do:: x = 3 – x;:: y = 3 - yod}x = 3-xx = 3-xA B y = 3-yy = 3-yy = 3-yx = 3-xA x = 3-xy = 3-ySPIN поддерживает один из вариантов слабой справедливости (>pan -f): «если процесс содержит хотя бы один оператор, который бесконечно долго остаётся выполнимым, то этот процесс рано или поздно сделает шаг». Это касается только потенциально бесконечных вычислений (циклов).

Поиск слабо справедливых циклов бездействия >./pan -l -fpan: non-progress cycle (at depth 6)pan: wrote fair.pml.trail>./spin -t -p fair.pmlStarting A with pid 0Starting B with pid 1spin: couldn't find claim (ignored)2:proc 1 (B) line 13 "fair.pml"4:proc 1 (B) line 13 "fair.pml"6:proc 0 (A) line6 "fair.pml"<<<<<START OF CYCLE>>>>>8:proc 1 (B) line 13 "fair.pml"10:proc 0 (A) line6 "fair.pml"spin: trail ends after 10 steps#processes: 2x = 110:proc 1 (B) line 12 "fair.pml"10:proc 0 (A) line5 "fair.pml"Теперь в цикле есть шаги 2 processes createdобоих процессов (state 1)(state 1)(state 1)[x = (3-x)][x = (3-x)][x = (3-x)](state 1)(state 1)[x = (3-x)][x = (3-x)](state 2)(state 2)Указываем полезные действия byte x = 2, y = 2;active proctype A(){do:: x = 3 – x;:: y = 3 – y; progress: skipod}active proctype B(){do:: x = 3 – x;:: y = 3 – y; progress: skipod} ВОПРОСЫ: •  Будут ли циклы бездействия с меткой progress в одном процессе? •  А справедливые циклы? •  А если метки есть в обоих процессах? Использование условий справедливости •  Любой тип справедливости можно описать при помощи формулы LTL (позже) •  добавление предположения о справедливости всегда увеличивает сложность верификации •  использование сильной справедливости существенно дороже слабой: –  слабая: сложность (по времени и памяти) растёт линейно от числа активных процессов, –  сильная: сложность растёт квадратично.

Пример: протокол голосования #define N#define I#define L5 /* nr of processes (use 5 for demos)*/3 /* node given the smallest number*/10 /* size of buffer (>= 2*N) *//* file ex.8 */mtype = { one, two, winner };chan q[N] = [L] of { mtype, byte};byte nr_leaders = 0;proctype node (chan in, out; byte mynumber){bit Active = 1, know_winner = 0;byte nr, maximum = mynumber, neighbourR;...}init {byte proc;atomic {proc = 1;do:: proc <= N ->run node (q[proc-1], q[proc%N],(N+I-proc)%N+1);proc++:: proc > N ->breakod}}out!one(mynumber);do:: in?one(nr) ->if:: Active ->if:: nr != maximum ->out!two(nr);neighbourR = nr:: else ->know_winner = 1;out!winner,nr;fi:: else ->out!one(nr)fi:: in?two(nr) ->if:: Active ->if:: neighbourR > nr && neighbourR > maximum ->maximum = neighbourR;out!one(neighbourR):: else ->Active = 0fi:: else ->out!two(nr)fi:: in?winner,nr;if:: nr != mynumber:: else -> nr_leaders++;fi;if:: know_winner:: else -> out!winner,nrfi;breakodЗапускаем моделирование >spin -cproc 0 =proc 1 =proc 2 =proc 3 =proc 4 =proc 5 =q\p05.3.2.4.2.4.1.3.1.5.2.1.5.3.5.4.1.4.leader.pml:init:nodenodenodenodenode12345...out!one,5.out!one,2out!one,3..out!one,1.in?one,3...in?one,1....out!one,4..in?one,2in?one,4....in?one,5out!two,4....out!two,5...out!two,1.out!two,3....in?two,1..out!two,2in?two,5...in?two,21.....out!one,53...in?two,32..in?two,41.in?one,52.out!one,52..in?one,53..out!one,53...in?one,54...out!one,54....in?one,55....out!one,55.....in?one,51.....out!winner,51.in?winner,52.out!winner,52..in?winner,53..out!winner,53...in?winner,54...out!winner,54....in?winner,55....out!winner,55.....in?winner,5------------final state:------------6 processes createdВерификация по умолчанию >./spin -a leader.pml>./gcc -o pan pan.c>./pan(Spin Version 5.1.4 -- 27 January 2008)+ Partial Order ReductionFull statespace search for:never claim- (none specified)assertion violations+acceptancecycles- (not selected)invalid end states+State-vector 200 byte, depth reached 106, errors: 04813 states, stored1824 states, matched6637 transitions (= stored+matched)12 atomic stepshash conflicts:13 (resolved)Stats on memory usage (in Megabytes):0.991equivalent memory usage for states (stored*(State-vector + overhead))1.070actual memory usage for states (unsuccessful compression: 107.92%)state-vector as stored = 217 byte + 16 byte overhead2.000memory used for hash table (-w19)Ошибок нет, но мы ещё 0.305memory used for DFS stack (-m10000)не сказали, что должен 3.282total actual memory usageunreached in proctype nodeделать алгоритм line 40, state 26, "out!two,nr"(1 of 44 states)unreached in proctype :init:Похоже, в модели есть (0 of 11 states)pan: elapsed time 0.03 secondsнедостижимый код pan: rate 160433.33 states/secondСвойства правильности •  При помощи ассертов можно проверить два простых факта: –  должен выиграть процесс с максимальным номером, –  должен быть только один победитель.

Характеристики

Тип файла
PDF-файл
Размер
1,55 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6548
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее