2. Model Checking. Вериф. парал. и распределенных программных систем. Карпов (2010) (1185529), страница 40
Текст из файла (страница 40)
Г польз ЗЗы ыхьзе ехпе ло итю е : хг ня: Г: 1-вз нз: х ~ нг тяы «ЬЬЗе Зкее Ее пз| Ь: уг п2: х ! 1-Ы пз; к : Ьг 5.19. рого З но ра 5 5. Две параллельных нити (потони) запущены асинхронно. Обшаа перемен- ная х вначале ранив О. Кмкдый оператор црисввивания вычисляется атомар- но. Чему будут по окончании равны знвчыиы переменных у и х2 5.б. Два параллельных процесса Р, и Рз выпоянвют оператор: к: хех; при иачвльном значении х, равном 1. Рассмотреть возмомные значения х по- сле завершения процессов в двух случавс в) кюкдый оператор выполняется втомарно; б) оператор присваивания транслируется в неделимые операции стековой машины с командамн С/ зезртзка значение нз нчеахи пензии е // Сезенреснее мзмнга сноненне летн верхних нпемхтое огекн с // ззпсеенмние» резгньтнте а нерхтихе сте«н // зепоиинаюм верхнего нннченин стека е пеннти по еыесу н 5.7.
Рассмотрим пвраллеаьную программу Р: З-Щ1~ Ш, Нредлолопим, что шскдый оператор выполшытся неделимо (атомврно). Переменные е, ь, х, г н * явнпотся целыми с начальными значениями е-ь-х-г-1, х с. Проверьте длв программы Р свойство "если к никогда не усманоеимса и О, мо г никогда не уснкикмнанм е О", построив структуру Кринке, определив атоьмрные предпкаты и сформулировав проверяемое свойсшо кек формулу темпоральной логики. 55. Г аой н зелнз ло тк будет ным ' 5.8.
Проанализируйте работу следующей параллельной программы. написанной на языке Ргове!в (пример взят нз руководства по этому языку). Здесь не. делимым счичается кюкдый оператор. Выполнение оператора задерживается ло тех пор, пока он не может быль выполнен. Например, оператор зевсе - -1 булег щкержаи до тех пор, пока значение переменной зевсе не станет рэв ным 1. юменюма(> Ьуэе атаев 1г рссссура АП ( ьусе ою) [зевсе 1) -> сэр . асасег пю пцг+1) зсасе пч> . [ з по. настоя :рации ртсссурв в() ( .
Ьуее ПЮг [зевсе Ы -> свр эсасег (эр о|р-Ы «сазе пю' ) «а с )лзс ою Ю)г сса ВИ 558 Проанализируйте работу следующей программы на к)ыке РгоюеЬ, ис- пользуклцей ключевое слово ассмо (пример азат нз руководства по юыку). Ьуее «С*Се 1г рссссуре лп ( ассэцс ( [зевса 1] -> зевсе зсэсэ+1 ) рссссуре вп [ асогас ( [зевса ы -> зевсе зевсе-1 ) о). Пс- )эсс [ ою л () г пм В О ) зу1, гя в й еделнв )рмулу 5.10. Рассмотрите возможность реалммцин атомарною выполнения некото- рого учвепщ параллельной программм с помощью комацл, которые вппэрэп но реализуются иеделимымн в немпорых архнтмаурвх процессоров: 2(2 Ряс«а В Ок 0 т««к «хе кек(а) (проверить и усыновить) — операция с одним ар)ументом: неделимо установить значение аргумента в!, а предыдущее его значение возвраппь как результат операции (реализована, например, в архитектуре )386); (2 з р(«,щ (атомарный свопинг) — операция с двумя аргументами: неделимо обмевпъ значения лвух.своих ар)умению.
гк Оп ма) По нс) $.11. Проанализируйте коррекпюсгь алгоритма взаимного исключения Пе. терсона(Ому Рею)зон, )98!)) щ:: Р2:: 1сср Яака«ак зо«р Рока«ак Наккскьсзс«1 1) Ис«ощсгс«1 2; «ааас( Щ: Кк«вк х: 2)к анаис(Ь2: кпак к: 1)) ««1««аШ (х 1 х Ы)) ««Зк ««к(1 (х 2 ч Ы1)к скгк(са(1> Ск1«1са12 1 Щ: Газке Ь2: г«ге« ° се ыхр ° аа )еср Проанавизнруйте работу этого алгоритма в случае, если пара присваиваний Ьг:" Кки«к х: 3-1 в квлщом процессе РР 8.12.
Постройте структуру Крищм параллельной композиции паук процессов Ре !! Р) ) Ры: лар(а як к «Ыге Кха ° Лс «сп «аза (кокс: 0)) ктп кскп: 1) сЖ си «к«Е 8.12. Пос р йю структуру ((рип е парваюльной м)мпознцнн д ух проц с- сов Рс))Р,: в кюкдом процессе Р, будет выполвпъся неатомарно, Проанализируйте так'же работу этого алгоритма в случае, если зтв пара присваиваний будет выполнена неатомарно, но в другом порядке: х: э-Ы ы: кк«« глвеа Е мо ус- Ватить Оператор, помеченный е„, является парой присваиваний, выполняемых ато- марно.
Постройте структуру Кринке и проверьте выполнение свойства атаимного нсключения. ~я Пе- <нй а такт еы- яь:: ымае стае ио '. яо: кчм ям' им~ ее ее Мюссяс1сат вессяаю ~у„е): (м м~ ьк муз. я <у,, -о~ т <е е ы ! > сясх т сь с у,:- о Спе реа Ф ~ ззолход .аза мод авк выр ° лзязне алорые эхзины зазосы: О заказ ренн О когда Русе Иевозмс йок" в с~ зо отсут Вум тое ° асмой < аехннче~ ° зраллез ботас ла ко удозн мне н зк ых для лукзн свойс рые с~ ГЛАВА 6 Спецификация свойств реагирующих систем формулами темпоральной логики Полход к вернфнкацнн на основе 'метода юлие! слеслгнй состоит в том, чго лля моделн снсгемы формально проверяется выпслненне логической форму лы, выражмощей некоторое свойство ее "правнльного" повеления.
Обычно понятне "правильного поведення" включает некотощю множество свойств, которые лелают снстему полезной для нспсльзовання, н все зтн свойства должны быть проверены последовательно, одно за другим. Вознпншст во. проси: О канне свойства следует проверить у системы, тпгбы убеднться в ее кор- ректностгтз О котла мевю прекращать верификацию, т.
е. кмюй набор свойств гаремно руст полное отсутствие ошибок в снстеме"г Невозмо кно определить формально, что означает "наглое омсуюсямпе ошнбок" в снстеме. Поэтому вернфнкацня так же не может гарантировать полного отсугспшл ошибок в анвлпзнруемой снстейе, как н тестнрованне. Мякснмум того, что может быль сделано дяя повышения наапкностп разрабатываемой системы — это доказать, что система удовлетворяет тем требованням технического задания, которые разработчик можш выразгпь формально, н не нмеет тех ошибок, которые типичны для реагнрующнх систем, состоящих нз параллельных взанмодействукнцнх процессов.
Иными словамн, прн разработке параллельных систем кроме специфичных требований, которым должно удовлетворять поведенне данной конкретной снстемы, следует проверять еще н общие свойства, гарантирующие отсутствие некорректностей, тнпнчпых для параллельных снстем. Такие свойства трвднцнонно разбнваются на следующне классы: О свойства достнпммсстн йчасйаогйггу1 которые устанавливают, что некото- рые спецнфнческне сосгояннв аютемы мшуг быть дсстнгнугы; Глава а О свойства безопасности (за(ету), устанавлщмюшне, чю нечто плохое, нежелательное, никогда не произойдет с системой; (З свойства живости (1Ьенюз), устанавливающие.
что прм некоторых уела виях нечто "хорошее" в конце концов обязательно произойдет при любом развитии процесса; О свойства справедливости (тамию), устанавливающие, что нечто будет выполняться неопределенно часто. Разбиение свойств на классы важно с двук точек эрвина. Первая — это взгляа пользователя, который при верификации долами проверить систему на выполнение в ней заданных требований и отсутствие ошибок. карактерных лля параллельных процессов. Вторая — это взгляд разработчика алгоритмов верификации: разлнчнме классы свойств вырюкаются рюными типами формул и, в общем, требуют разных подходов к нх проверке. Мы будем здесь рассматривать этн кяассы с точки зренив пользователя.
В этой главе сначала рассматриваются примеры свойств, которые часю проверяются в технических системах. Затем вводятся и анализируются общие классы свойств — достижимость, безопасность, жиають и справедливость. Отметим еще рак что выбор мнохиствв проверяемых свойств осуществляется человеком аернфикатором, никто не может сказать, насколько ПОЛНО осуществлена проверка — все лн нужные свойства системы проверены. 6.1. Примеры спецификации свсйств технических систем Причинно-следственная связь собьзтий Выражение требований к поведению систем с помощью формул темпоральной логики не всегда является простым и очевидным делом.
рассмотрим, например, задачу формальной спецификации причинно. следственной свеи событий, которую обозначим Р: "посылка сообщения зеа( всегда, в кона конпов, приведет к лаяученню подтверждения оск ". Построим формулу линейной темпоральной логики, отражюощую это свойство. рассмотрим несколько вариантов решения. 0 зендюасФ Очевидно, что зто неправильная формализация свойства Р, построенная формула намет елещчощнй смысл: "если в ночазьном сасяюянаи ванд исанвяо, вю е аам ме сосвюялни нсаннно н аск ". П Оз Пе лог она вид Па(, ния ся и О С(, Эту ниб фор част Нап~ СТО введ Эта саян сосо ду щ прис сл) ° форь О О(эь Эта < сабы звлд каин~ еперь Глава в сесяспм сигпюи л мерв исп ятг 0 СгелИ=>асй , неже- Поскольку темпоральные операторы имеют более высокий приоритет, чем логические свюки, зта формупа будет пониматься как (СкегИ) ю асд, т.
е. она имеет следующий смысл: "если ео всех сосмаяяикт еычисягкня еьюсляяется зеяИ, то е яачагьяом сткысялии довясяо еынаянеыься аск ". Очевидно, что зто тоже неверная формула для вырмкения свойства Р . О С(зелИюася) Зта формула таке неверна: она говорит, что в любом состоянии вычисле. иия если выполняется яепИ, то е эмом зее сосюояяин должно выполняться и ася. х уело. любом взгляд на вы~ых лля иов аврор муз сь рас- го про. общие кть. ЮЛНО юрая ь. им, на.язи с~ ~ конце улу ли~ни не- ъ згм О С (зенИ =э КасА) Зту формулу можно назвать "темпоральным следствием".
Сгщып ее ичпмг что в любом состоянии вычисления если выполняется гепИ, то когданибудь в булущем (включая настоящее) должно выполнятьса н асй. Зта формула досщточно точно отрыкаст свойство Р, она часто используется для спецификации свойств параллельных систем. В системах верификации часто используется специальный знак длв обозначения этого свойства.
Например, в инструментальной системе УРРАА формула ф -+ Ч означает "р всегда ведет к м" и эквищлентна ЬТ1 формуле С(рю Кцг) н СТ1 формуле АС(ф =г Арцг) . Под названием ЧепИг-гоч зта формула была введена в (12 Ц н получила там свой знак "-> ". Эта формула часто используется дня вмрмкения причинно-следственной сааза событий, однако онв будет истинна и в тех случаях, когла в том же состоянии, в котором истинно зелИ, будет истинно и аск.