Взаємодія послідовних процесів (англ. Communicating Sequential Processes, CSP) — формальна мова для опису закономірностей взаємодії в рівночасних системах. Це член сім'ї математичних теорій рівночасності, відомої як алгебра або [en], в основі якої лежить обмін повідомленнями через канали. CSP відіграв важливу роль у розробці мови програмування occam, а також вплинув на дизайн таких мов програмування, як Limbo, [en], Go, та бібліотеки core.async в Clojure.
CSP описує послідовні процеси, які взаємодіють лише через передачу повідомлень (і не через використання спільної пам'яті).
CSP був вперше описаний в 1978, у публікації Гоара, але з тих пір суттєво змінився. CSP практично застосовувався в промисловості як інструмент для специфікації і верифікації рівночасних аспектів різних систем, таких як Transputer T9000, а також безпечної системи електронної комерції. Теорія самого CSP досі є предметом активних досліджень, у тому числі робота з підвищення його спектру практичної застосовності (наприклад, збільшення масштабів систем, які можуть бути проаналізовані).
Історія
Версія CSP, представлена в оригінальній публікації Хоара 1978 року була, по суті, рівночасною мовою програмування, а не [en]. CSP мав принципово інший синтаксис, ніж у більш пізніх версіях, не володів математично-визначеною семантикою і не був в змозі представляти [en]. Програми в оригінальному CSP були написані, як паралельні композиції фіксованого числа послідовних процесів, які спілкувалися один з одним строго через синхронну передачу повідомлень. На відміну від пізніших версій CSP, кожному процесу призначалось явне ім'я, а джерело або адресат повідомлення визначались задаванням імені передбачуваного відправника або процесу отримувача. Наприклад процес
COPY = *[c:character; west?c -> east!c]
без перестану отримує символ від процесу west
та відправляє цей символ процесу east
. Паралельна композиція
[west::DISASSEMBLE || X::COPY || east::ASSEMBLE]
присвоює ім’я west
процесу DISASSEMBLE
, X
процесу COPY
і east
процесу ASSEMBLE
та виконує ці три процеси паралельно.
Після публікації оригінальної версії CSP, Хоар, Стівен Брукс та Біл Роско розвинули та вдосконалили теорію CSP до її сучасної форми, алгебри процесів. Підхід використаний при перетворенні CSP в алгебру процесів, був обраний під впливом під впливом роботи Робіна Мілнера над [en] (CCS) та навпаки, CSP вплинула на CCS. Теоретична версія CSP була спочатку представлена у статті Брукса, Хоара і Роско 1984р, пізніше – у книзі Хоара «Communicating Sequential Processes», що була опублікована у 1985р. У вересні 2006 ця книга все ще була однією з найбільш цитованих публікацій у комп’ютерних науках всіх часів за версією Citeseer. Теорія CSP пережила декілька незначних змін з моменту публікації книги Хоара. Більшість змін була викликана появою автоматизованих інструментів для аналізу та верифікації процесів. «The Theory and Practice of Concurrency» від Роско описує новішу версію CSP.
Використання
Раннім і важливим використанням CSP була специфікація і верифікація елементів транспютера INMOS T9000, комплексного суперскалярного конвеєрного процесора, розробленого для підтримки крупномасштабного мультипроцесингу. CSP було використано у верифікації коректності конвеєра та процесора віртуального каналу (англ. Virtual Channel Processor), що керував позачіповими комунікаціями процесора.
Індустріальне використання CSP у розробці програмного забезпечення, зазвичай, сфокусоване на надійних та критично-безпечних системах. Наприклад, Bremen Institute for Safe Systems та Daimler-Benz Aerospace змоделювали з допомогою CSP систему керування помилками та інтерфейс авіоніки (з приблизно 23000 рядків коду) для використання на Міжнародній космічній станції, та проаналізували модель, перевіривши відсутність в їхньому проекті взаємних блокувань та livelock-ів.. Процес моделювання та аналізу допоміг відшукати помилки, які було б важко знайти, використовуючи лише тестування. Аналогічно, [en] використали CSP-моделювання і аналіз під час розробки програмного забезпечення (приблизно 100000 рядків коду) для безпечної сертифікації смарт-карток. Praxis стверджує, що система має значно меншу частоту дефектів, порівняно з аналогічними системами.
Оскільки CSP є вдалим рішенням у моделюванні та аналізі систем, які містять складний обмін повідомленнями, він також використовується у перевірці безпеки протоколів зв'язку. Гарним прикладом такого застосування є використання CSP та [en] для знаходження невідомої раніше атаки на протокол аутентифікації з відкритим ключем Нідгема — Шредера, а потім розробити виправлену версію протоколу, що спроможна протистояти атаці.
Неформальний опис
Виходячи з назви, CSP дозволяє опис систем з точки зору складових процесів, що працюють незалежно та взаємодіють один з одним виключно через обмін повідомленнями. Тим не менш, слово "послідовні" в назві комунікуючих послідовних процесів на сьогодні дещо недоречне, тому що сучасна CSP дозволяє визначати процеси компоненти як послідовними процесами, так і паралельною композицією більш примітивних процесів. Зв’язки між різними процесами і спосіб взаємодії процесу зі своїм середовищем описуються за допомогою різних операторів [en]. Використовуючи такий алгебраїчний підхід, доволі складний опис процесу може бути легко побудований з декількох примітивних елементів.
Примітиви
CSP забезпечує два класи примітивів в алгебрі процесів:
- Події
- Події являють собою комунікацію чи інші взаємодії. Припускається що вони нероздільні і миттєві. Вони можуть мати як атомарні імена (наприклад вкл, викл), складені імена (наприклад кран.відкрити, кран.закрити), або події вводу/виводу (наприклад mouse?xy, screen!bitmap).
- Примітивні процеси.
- Примітивні процеси задають фундаментальні поведінки, наприклад STOP (процес який не комунікує, який також називають deadlock), та SKIP (який завжди має успішне завершення).
Алгебраїчні оператори
CSP має широкий спектр алгебраїчних операторів. Основними з них є:
- Префікс
- Оператор «префікс» з'єднує подію і процес для отримання нового процесу. Наприклад:
- процес який передає в навколишнє середовище подію , після чого поводиться як процес .
- Детермінований вибір
- Оператор детермінованого (або зовнішнього) вибору дозволяє визначити майбутній розвиток процесу як вибір між двома складовими процесами і дозволяє навколишньому середовищу зробити вибір по початковій події одного з процесів. Наприклад:
- це процес, який залежно від початкової події, або , поводить себе як або . Якщо одночасно відбудуться і і , вибір буде здійснено недетерміновано.
- Недетермінований вибір
- Оператор недетермінованого (або внутрішнього) вибору дозволяє визначити майбутній розвиток процесу як вибір між двома складовими процесами, але не надає навколишньому середовищу контроль над цим вибором. Наприклад:
- може поводити себе, як чи . Він може відкинути або і зобов’язаний продовжити роботу, якщо середовище пропонує і , і . Недетермінізм може бути ненавмисно введений у детермінований вибір, якщо початкові події обох сторін є ідентичними. Наприклад:
- еквівалентно до
- Чергування
- Оператор чергування представляє абсолютно незалежну одночасну діяльність.
- поводить себе одночасно і як , і як . Події з обох процесів довільно чергуються у часі.
- Інтерфейсний паралелелізм
- Оператор інтерфейсного паралелелізму представляє одночасну діяльність, що потребує синхронізації між складовими процесами: будь-яка подія з набору інтерфейсів може відбутися лише тоді, коли всі складові процеси мають можливість виконати цю подію. Наприклад:
- перед виконанням події необхідно, щоб і , і були в змозі виконати цю подію. Тому, наприклад, процес
- може виконати подію і стати процесом
- в той час як на
- чекає deadlock.
- Приховування
- Оператор приховування дозволяє робити деякі події неможливими для спостереження. Тривіальний приклад:
- який, припустивши, що подія не з’являється у , спрощується до
Рекурсія
Префіксний запис дозволяє нам описувати поведінку скінченного процесу, але у випадку торгового автомата буде не зручно описувати все його життя з його сотнями і тисячами продажів. Таким чином нам потрібен спосіб для опису повторюваних дій, що дасть нам побічно можливість описувати нескінченно живуть процеси.
Розглянемо механічний годинник, зважаючи на те, що нас цікавлять лише його тіки, тоді:
αCLOCK = {tick}
Після того як годинник тікнув, він залишаться тим же годинником, тоді ми можемо сказати, що об'єкт після тіку стає годинником що виглядає наступним чином:
CLOCK = (tick → CLOCK)
Підставляючи CLOCK в праву частину ми будемо отримувати:
CLOCK
= (Tick → CLOCK) [початкове рівняння]
= (Tick → (tick → CLOCK)) [перша підстановка]
= (Tick → (tick → (tick → CLOCK))) [друга підстановка]
Отже поведінку годинника може бути описано як нескінченна кількість повторюючихся тиків:
tick → tick → tick → · · ·
Даний спосіб посилання на себе буде працювати тільки у випадку якщо з правого боку рівняння вказано вираз, що починається з префіксу, наприклад рівняння:
X = X
Нічого не визначає, тому йому відповідає будь-який процес. Будемо далі називати опис процесу починаються з префіксу «захищеним». Таким чином якщо F (X) захищене вираз містить ім'я процесу X і αX = A, то рівняння:
X = F (X)
має єдине рішення з алфавітом A.
Твердження про те, що захищений вираз має рішення і воно, можливо, унікальне легко демонструється за допомогою методу підстановок: підставляючи у вираз процес ми його подовжуємо, що може тривати необмежено, таким чином ми можемо написати довільно довгий (але кінцевий) опис процесу, а якщо два процеси протягом довільно довгого часу мають однакову поведінку, то ми говоримо що вони однакові.
Формальне визначення
Синтаксис
Синтаксис CSP визначає «легальні» способи комбінування подій і процесів. Нехай - подія, - множина подій. Тоді базовий синтаксис CSP можна визначити як:
Відзначимо, що в інтересах стислості, описаний синтаксис опускає процес , який являє собою [en]», а також різні оператори, такі як алфавітний паралелелізм, конвеєризація та індексований вибір.
Формальна семантика
CSP був доповнений кількома різними (семантиками), які визначають значення синтаксично правильного виразу CSP. Теорія комунікуючих послідовних процесів включає взаємно узгоджені денотативну семантику, алгебраїчну семантику та операційну семантику.
Денотативна семантика
Основними денотативними моделями в CSP є модель слідів (англ. traces model), модель стабільних невдач (англ. stable failures), та модель невдач/розбіжностей (англ. failures/divergences). Відображення з виразів що задають процеси на кожну з цих трьох моделей і задають денотативну смантику CSP.
Модель слідів визначає значення виразу процесу як множину послідовностей подій (слідів) які можна спостерігати при роботі процесу. Наприклад:
- тому що не генерує ніяких подій
- тому що процес може не згенерувати події, згенерувати подію , або послідовність подій
Більш формально, процес в моделі процесів описується як такий що:
- (тобто містить порожню послідовність)
- (тобто замкнута операцією взяття префіксу)
де множина всіх можливих скінченних послідовностей подій.
Модель стабільних невдач розширює модель слідів множинами відмов, які є множинами подій які процес може відмовитись виконати. Невдача це пара , що складається зі сліду , та множини невдач яка визначає події які процес може відмовитись виконати коли він виконав слід . Спостережувана поведінка процесу в моделі стабільних невдач описується парою . Наприклад,
Модель невдач/розбіжностей ще більше розвиває модель невдач, аби працювати з . Семантикою процесу в моделі невдач/розбіжностей є пара де визначається як множина всіх слідів які можуть привести до розбіжної поведінки, а .
Пов’язані засоби специфікації та формалізми
Деякі інші мови специфікації та формалізми були виведені з класичного CSP, включаючи:
- Timed CSP, який об’єднує в собі часову інформацію про системи реального часу
- Receptive Process Theory, спеціалізація CSP, що передбачає асинхронні операції відправлення
- CSPP
- HSCSP
- Wright, мова опису архітектури
- TCOZ, інтеграція Timed CSP і Object Z
- Circus, інтеграція CSP і Z
- CML (Compass Modelling Language), комбінація Circus і VDM, створена для моделювання SoS (Systems of Systems)
- CspCASL, розширення CCCASL, що інтегрує CSP
- LOTOS, міжнародний стандарт, що містить в собі особливості CSP і CCS
Зноски
- Roscoe, A. W. (1997). The Theory and Practice of Concurrency. Prentice Hall. ISBN .
- (12 травня 1995). (PDF). SGS-THOMSON Microelectronics Ltd. Архів оригіналу (PDF) за 1 Серпня 2020. Процитовано 27 Вересня 2017., INMOS document 72 occ 45 03
- . Архів оригіналу за 26 Квітня 2013. Процитовано 15 квітня 2010.
- . Архів оригіналу за 2 Січня 2013. Процитовано 27 Вересня 2017.
- Higginbotham, Daniel. Mastering Concurrent Processes with core.async. (вид. 1 edition). San Francisco: No Starch Press. ISBN . Архів оригіналу за 28 Вересня 2017. Процитовано 27 Вересня 2017.
- Coding Tech. Concurrency Patterns In Go. Процитовано 9 серпня 2018. . Архів оригіналу за 30 грудня 2018. Процитовано 9 серпня 2018.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Hoare, C. A. R. (1978). Communicating sequential processes. Communications of the ACM. 21 (8): 666—677. doi:10.1145/359576.359585.
- Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. (2005). Communicating Sequential Processes: The First 25 Years. . Т. 3525. Springer.
- Barrett, G. (1995). Model checking in practice: The T9000 Virtual Channel Processor. IEEE Transactions on Software Engineering. 21 (2): 69—78. doi:10.1109/32.345823.
- Hall, A; Chapman, R. (2002). (PDF). IEEE Software. 19 (1): 18—25. doi:10.1109/52.976937. Архів оригіналу (PDF) за 2 Грудня 2020. Процитовано 27 Вересня 2017.
- Creese, S. (2001). Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks. D. Phil. Oxford University.
- Hoare, C. A. R. (1985). Communicating Sequential Processes. Prentice Hall. ISBN .
- Clinger, William (June 1981). . Mathematics Doctoral Dissertation. MIT. Архів оригіналу за 25 Липня 2019. Процитовано 8 Лютого 2018.
- Brookes, Stephen; Hoare, C. A. R.; Roscoe, A. W. (1984). A Theory of Communicating Sequential Processes. . 31 (3): 560—599. doi:10.1145/828.833.
- Buth, B.; M. Kouvaras; J. Peleska; H. Shi (December 1997). Deadlock analysis for a fault-tolerant system. Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology (AMAST’97). с. 60—75.
- Buth, B.; J. Peleska; H. Shi (January 1999). Combining methods for the livelock analysis of a fault-tolerant system. Proceedings of the 7th International Conference on Algebraic Methodology and Software Technology (AMAST’98). с. 124—139.
- Lowe, G. Breaking and fixing the Needham-Schroeder public-key protocol using FDR (PDF).
Посилання
- https://swtch.com/~rsc/thread/squint.pdf [ 11 Січня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Vzayemodiya poslidovnih procesiv angl Communicating Sequential Processes CSP formalna mova dlya opisu zakonomirnostej vzayemodiyi v rivnochasnih sistemah Ce chlen sim yi matematichnih teorij rivnochasnosti vidomoyi yak algebra abo en v osnovi yakoyi lezhit obmin povidomlennyami cherez kanali CSP vidigrav vazhlivu rol u rozrobci movi programuvannya occam a takozh vplinuv na dizajn takih mov programuvannya yak Limbo en Go ta biblioteki core async v Clojure CSP opisuye poslidovni procesi yaki vzayemodiyut lishe cherez peredachu povidomlen i ne cherez vikoristannya spilnoyi pam yati CSP buv vpershe opisanij v 1978 u publikaciyi Goara ale z tih pir suttyevo zminivsya CSP praktichno zastosovuvavsya v promislovosti yak instrument dlya specifikaciyi i verifikaciyi rivnochasnih aspektiv riznih sistem takih yak Transputer T9000 a takozh bezpechnoyi sistemi elektronnoyi komerciyi Teoriya samogo CSP dosi ye predmetom aktivnih doslidzhen u tomu chisli robota z pidvishennya jogo spektru praktichnoyi zastosovnosti napriklad zbilshennya masshtabiv sistem yaki mozhut buti proanalizovani IstoriyaVersiya CSP predstavlena v originalnij publikaciyi Hoara 1978 roku bula po suti rivnochasnoyu movoyu programuvannya a ne en CSP mav principovo inshij sintaksis nizh u bilsh piznih versiyah ne volodiv matematichno viznachenoyu semantikoyu i ne buv v zmozi predstavlyati en Programi v originalnomu CSP buli napisani yak paralelni kompoziciyi fiksovanogo chisla poslidovnih procesiv yaki spilkuvalisya odin z odnim strogo cherez sinhronnu peredachu povidomlen Na vidminu vid piznishih versij CSP kozhnomu procesu priznachalos yavne im ya a dzherelo abo adresat povidomlennya viznachalis zadavannyam imeni peredbachuvanogo vidpravnika abo procesu otrimuvacha Napriklad proces COPY c character west c gt east c bez perestanu otrimuye simvol vid procesu west ta vidpravlyaye cej simvol procesu east Paralelna kompoziciya west DISASSEMBLE X COPY east ASSEMBLE prisvoyuye im ya west procesu DISASSEMBLE X procesu COPY i east procesu ASSEMBLE ta vikonuye ci tri procesi paralelno Pislya publikaciyi originalnoyi versiyi CSP Hoar Stiven Bruks ta Bil Rosko rozvinuli ta vdoskonalili teoriyu CSP do yiyi suchasnoyi formi algebri procesiv Pidhid vikoristanij pri peretvorenni CSP v algebru procesiv buv obranij pid vplivom pid vplivom roboti Robina Milnera nad en CCS ta navpaki CSP vplinula na CCS Teoretichna versiya CSP bula spochatku predstavlena u statti Bruksa Hoara i Rosko 1984r piznishe u knizi Hoara Communicating Sequential Processes sho bula opublikovana u 1985r U veresni 2006 cya kniga vse she bula odniyeyu z najbilsh citovanih publikacij u komp yuternih naukah vsih chasiv za versiyeyu Citeseer Teoriya CSP perezhila dekilka neznachnih zmin z momentu publikaciyi knigi Hoara Bilshist zmin bula viklikana poyavoyu avtomatizovanih instrumentiv dlya analizu ta verifikaciyi procesiv The Theory and Practice of Concurrency vid Rosko opisuye novishu versiyu CSP Vikoristannya Rannim i vazhlivim vikoristannyam CSP bula specifikaciya i verifikaciya elementiv transpyutera INMOS T9000 kompleksnogo superskalyarnogo konveyernogo procesora rozroblenogo dlya pidtrimki krupnomasshtabnogo multiprocesingu CSP bulo vikoristano u verifikaciyi korektnosti konveyera ta procesora virtualnogo kanalu angl Virtual Channel Processor sho keruvav pozachipovimi komunikaciyami procesora Industrialne vikoristannya CSP u rozrobci programnogo zabezpechennya zazvichaj sfokusovane na nadijnih ta kritichno bezpechnih sistemah Napriklad Bremen Institute for Safe Systems ta Daimler Benz Aerospace zmodelyuvali z dopomogoyu CSP sistemu keruvannya pomilkami ta interfejs avioniki z priblizno 23000 ryadkiv kodu dlya vikoristannya na Mizhnarodnij kosmichnij stanciyi ta proanalizuvali model perevirivshi vidsutnist v yihnomu proekti vzayemnih blokuvan ta livelock iv Proces modelyuvannya ta analizu dopomig vidshukati pomilki yaki bulo b vazhko znajti vikoristovuyuchi lishe testuvannya Analogichno en vikoristali CSP modelyuvannya i analiz pid chas rozrobki programnogo zabezpechennya priblizno 100000 ryadkiv kodu dlya bezpechnoyi sertifikaciyi smart kartok Praxis stverdzhuye sho sistema maye znachno menshu chastotu defektiv porivnyano z analogichnimi sistemami Oskilki CSP ye vdalim rishennyam u modelyuvanni ta analizi sistem yaki mistyat skladnij obmin povidomlennyami vin takozh vikoristovuyetsya u perevirci bezpeki protokoliv zv yazku Garnim prikladom takogo zastosuvannya ye vikoristannya CSP ta en dlya znahodzhennya nevidomoyi ranishe ataki na protokol autentifikaciyi z vidkritim klyuchem Nidgema Shredera a potim rozrobiti vipravlenu versiyu protokolu sho spromozhna protistoyati ataci Neformalnij opisVihodyachi z nazvi CSP dozvolyaye opis sistem z tochki zoru skladovih procesiv sho pracyuyut nezalezhno ta vzayemodiyut odin z odnim viklyuchno cherez obmin povidomlennyami Tim ne mensh slovo poslidovni v nazvi komunikuyuchih poslidovnih procesiv na sogodni desho nedorechne tomu sho suchasna CSP dozvolyaye viznachati procesi komponenti yak poslidovnimi procesami tak i paralelnoyu kompoziciyeyu bilsh primitivnih procesiv Zv yazki mizh riznimi procesami i sposib vzayemodiyi procesu zi svoyim seredovishem opisuyutsya za dopomogoyu riznih operatoriv en Vikoristovuyuchi takij algebrayichnij pidhid dovoli skladnij opis procesu mozhe buti legko pobudovanij z dekilkoh primitivnih elementiv Primitivi CSP zabezpechuye dva klasi primitiviv v algebri procesiv Podiyi Podiyi yavlyayut soboyu komunikaciyu chi inshi vzayemodiyi Pripuskayetsya sho voni nerozdilni i mittyevi Voni mozhut mati yak atomarni imena napriklad vkl vikl skladeni imena napriklad kran vidkriti kran zakriti abo podiyi vvodu vivodu napriklad mouse xy screen bitmap Primitivni procesi Primitivni procesi zadayut fundamentalni povedinki napriklad STOP proces yakij ne komunikuye yakij takozh nazivayut deadlock ta SKIP yakij zavzhdi maye uspishne zavershennya Algebrayichni operatori CSP maye shirokij spektr algebrayichnih operatoriv Osnovnimi z nih ye Prefiks Operator prefiks z yednuye podiyu i proces dlya otrimannya novogo procesu Napriklad a P displaystyle a rightarrow P dd proces yakij peredaye v navkolishnye seredovishe podiyu a displaystyle mathit a pislya chogo povoditsya yak proces P displaystyle mathit P Determinovanij vibir Operator determinovanogo abo zovnishnogo viboru dozvolyaye viznachiti majbutnij rozvitok procesu yak vibir mizh dvoma skladovimi procesami i dozvolyaye navkolishnomu seredovishu zrobiti vibir po pochatkovij podiyi odnogo z procesiv Napriklad a P b Q displaystyle left a rightarrow P right Box left b rightarrow Q right dd ce proces yakij zalezhno vid pochatkovoyi podiyi a displaystyle mathit a abo b displaystyle mathit b povodit sebe yak P displaystyle mathit P abo Q displaystyle mathit Q Yaksho odnochasno vidbudutsya i a displaystyle mathit a i b displaystyle mathit b vibir bude zdijsneno nedeterminovano Nedeterminovanij vibir Operator nedeterminovanogo abo vnutrishnogo viboru dozvolyaye viznachiti majbutnij rozvitok procesu yak vibir mizh dvoma skladovimi procesami ale ne nadaye navkolishnomu seredovishu kontrol nad cim viborom Napriklad a P b Q displaystyle left a rightarrow P right sqcap left b rightarrow Q right dd mozhe povoditi sebe yak a P displaystyle left a rightarrow P right chi b Q displaystyle left b rightarrow Q right Vin mozhe vidkinuti a displaystyle mathit a abo b displaystyle mathit b i zobov yazanij prodovzhiti robotu yaksho seredovishe proponuye i a displaystyle mathit a i b displaystyle mathit b Nedeterminizm mozhe buti nenavmisno vvedenij u determinovanij vibir yaksho pochatkovi podiyi oboh storin ye identichnimi Napriklad a a STOP a b STOP displaystyle left a rightarrow a rightarrow STOP right Box left a rightarrow b rightarrow STOP right dd ekvivalentno doa a STOP b STOP displaystyle a rightarrow left left a rightarrow STOP right sqcap left b rightarrow STOP right right dd Cherguvannya Operator cherguvannya predstavlyaye absolyutno nezalezhnu odnochasnu diyalnist P Q displaystyle P vert vert vert Q dd povodit sebe odnochasno i yak P displaystyle mathit P i yak Q displaystyle mathit Q Podiyi z oboh procesiv dovilno cherguyutsya u chasi Interfejsnij paralelelizm Operator interfejsnogo paralelelizmu predstavlyaye odnochasnu diyalnist sho potrebuye sinhronizaciyi mizh skladovimi procesami bud yaka podiya z naboru interfejsiv mozhe vidbutisya lishe todi koli vsi skladovi procesi mayut mozhlivist vikonati cyu podiyu Napriklad P a Q displaystyle P left vert left left a right right right vert Q dd pered vikonannyam podiyi a displaystyle mathit a neobhidno shob i P displaystyle mathit P i Q displaystyle mathit Q buli v zmozi vikonati cyu podiyu Tomu napriklad proces a P a a Q displaystyle left a rightarrow P right left vert left left a right right right vert left a rightarrow Q right dd mozhe vikonati podiyu a displaystyle mathit a i stati procesomP a Q displaystyle P left vert left left a right right right vert Q dd v toj chas yak na a P a b b Q displaystyle left a rightarrow P right left vert left left a b right right right vert left b rightarrow Q right dd chekaye deadlock Prihovuvannya Operator prihovuvannya dozvolyaye robiti deyaki podiyi nemozhlivimi dlya sposterezhennya Trivialnij priklad a P a displaystyle left a rightarrow P right setminus left a right dd yakij pripustivshi sho podiya a displaystyle mathit a ne z yavlyayetsya u P displaystyle mathit P sproshuyetsya doP displaystyle mathit P dd Rekursiya Prefiksnij zapis dozvolyaye nam opisuvati povedinku skinchennogo procesu ale u vipadku torgovogo avtomata bude ne zruchno opisuvati vse jogo zhittya z jogo sotnyami i tisyachami prodazhiv Takim chinom nam potriben sposib dlya opisu povtoryuvanih dij sho dast nam pobichno mozhlivist opisuvati neskinchenno zhivut procesi Rozglyanemo mehanichnij godinnik zvazhayuchi na te sho nas cikavlyat lishe jogo tiki todi aCLOCK tick Pislya togo yak godinnik tiknuv vin zalishatsya tim zhe godinnikom todi mi mozhemo skazati sho ob yekt pislya tiku staye godinnikom sho viglyadaye nastupnim chinom CLOCK tick CLOCK Pidstavlyayuchi CLOCK v pravu chastinu mi budemo otrimuvati CLOCK Tick CLOCK pochatkove rivnyannya Tick tick CLOCK persha pidstanovka Tick tick tick CLOCK druga pidstanovka Otzhe povedinku godinnika mozhe buti opisano yak neskinchenna kilkist povtoryuyuchihsya tikiv tick tick tick Danij sposib posilannya na sebe bude pracyuvati tilki u vipadku yaksho z pravogo boku rivnyannya vkazano viraz sho pochinayetsya z prefiksu napriklad rivnyannya X X Nichogo ne viznachaye tomu jomu vidpovidaye bud yakij proces Budemo dali nazivati opis procesu pochinayutsya z prefiksu zahishenim Takim chinom yaksho F X zahishene viraz mistit im ya procesu X i aX A to rivnyannya X F X maye yedine rishennya z alfavitom A Tverdzhennya pro te sho zahishenij viraz maye rishennya i vono mozhlivo unikalne legko demonstruyetsya za dopomogoyu metodu pidstanovok pidstavlyayuchi u viraz proces mi jogo podovzhuyemo sho mozhe trivati neobmezheno takim chinom mi mozhemo napisati dovilno dovgij ale kincevij opis procesu a yaksho dva procesi protyagom dovilno dovgogo chasu mayut odnakovu povedinku to mi govorimo sho voni odnakovi Formalne viznachennyaSintaksis Sintaksis CSP viznachaye legalni sposobi kombinuvannya podij i procesiv Nehaj e displaystyle mathit e podiya X displaystyle mathit X mnozhina podij Todi bazovij sintaksis CSP mozhna viznachiti yak Proc STOP SKIP e Proc prefixing Proc Proc externalchoice Proc Proc nondeterministicchoice Proc Proc interleaving Proc X Proc interfaceparallel Proc X hiding Proc Proc sequentialcomposition ifbthenProcelseProc booleanconditional Proc Proc timeout Proc Proc interrupt displaystyle begin matrix Proc amp amp textit STOP amp amp amp textit SKIP amp amp amp e rightarrow textit Proc amp text prefixing amp amp textit Proc Box textit Proc amp text external text choice amp amp textit Proc sqcap textit Proc amp text nondeterministic text choice amp amp textit Proc vert vert vert textit Proc amp text interleaving amp amp textit Proc X textit Proc amp text interface text parallel amp amp textit Proc setminus X amp text hiding amp amp textit Proc textit Proc amp text sequential text composition amp amp mathrm if b mathrm then textit Proc mathrm else Proc amp text boolean text conditional amp amp textit Proc triangleright textit Proc amp text timeout amp amp textit Proc triangle textit Proc amp text interrupt end matrix Vidznachimo sho v interesah stislosti opisanij sintaksis opuskaye proces div displaystyle mathbf div yakij yavlyaye soboyu en a takozh rizni operatori taki yak alfavitnij paralelelizm konveyerizaciya ta indeksovanij vibir Formalna semantika CSP buv dopovnenij kilkoma riznimi semantikami yaki viznachayut znachennya sintaksichno pravilnogo virazu CSP Teoriya komunikuyuchih poslidovnih procesiv vklyuchaye vzayemno uzgodzheni denotativnu semantiku algebrayichnu semantiku ta operacijnu semantiku Denotativna semantika Osnovnimi denotativnimi modelyami v CSP ye model slidiv angl traces model model stabilnih nevdach angl stable failures ta model nevdach rozbizhnostej angl failures divergences Vidobrazhennya z viraziv sho zadayut procesi na kozhnu z cih troh modelej i zadayut denotativnu smantiku CSP Model slidiv viznachaye znachennya virazu procesu yak mnozhinu poslidovnostej podij slidiv yaki mozhna sposterigati pri roboti procesu Napriklad traces STOP displaystyle mathit traces left mathit STOP right left langle rangle right tomu sho STOP displaystyle mathit STOP ne generuye niyakih podij traces a b STOP a a b displaystyle mathit traces left a rightarrow b rightarrow mathit STOP right left langle rangle langle a rangle langle a b rangle right tomu sho proces a b STOP displaystyle a rightarrow b rightarrow mathit STOP mozhe ne zgeneruvati podiyi zgeneruvati podiyu a displaystyle a abo poslidovnist podij a b displaystyle a b Bilsh formalno proces P displaystyle P v modeli procesiv opisuyetsya yak traces P S displaystyle mathit traces left P right subseteq Sigma ast takij sho traces P displaystyle langle rangle in mathit traces left P right tobto traces P displaystyle mathit traces left P right mistit porozhnyu poslidovnist s1 s2 traces P s1 traces P displaystyle s 1 smallfrown s 2 in mathit traces left P right implies s 1 in mathit traces left P right tobto traces P displaystyle mathit traces left P right zamknuta operaciyeyu vzyattya prefiksu de S displaystyle Sigma ast mnozhina vsih mozhlivih skinchennih poslidovnostej podij Model stabilnih nevdach rozshiryuye model slidiv mnozhinami vidmov yaki ye mnozhinami podij X S displaystyle X subseteq Sigma yaki proces mozhe vidmovitis vikonati Nevdacha ce para s X displaystyle left s X right sho skladayetsya zi slidu s displaystyle s ta mnozhini nevdach X displaystyle X yaka viznachaye podiyi yaki proces mozhe vidmovitis vikonati koli vin vikonav slid s displaystyle s Sposterezhuvana povedinka procesu v modeli stabilnih nevdach opisuyetsya paroyu traces P failures P displaystyle left mathit traces left P right mathit failures left P right right Napriklad failures a STOP b STOP a a b b a b displaystyle mathit failures left left a rightarrow mathit STOP right Box left b rightarrow mathit STOP right right left left langle rangle emptyset right left langle a rangle left a b right right left langle b rangle left a b right right right failures a STOP b STOP a b a b a a b b a b displaystyle mathit failures left left a rightarrow mathit STOP right sqcap left b rightarrow mathit STOP right right left left langle rangle left a right right left langle rangle left b right right left langle a rangle emptyset right left langle b rangle emptyset right left langle a rangle left a b right right left langle b rangle left a b right right right Model nevdach rozbizhnostej she bilshe rozvivaye model nevdach abi pracyuvati z Semantikoyu procesu v modeli nevdach rozbizhnostej ye para failures P divergences P displaystyle left mathit failures perp left P right mathit divergences left P right right de divergences P displaystyle mathit divergences left P right viznachayetsya yak mnozhina vsih slidiv yaki mozhut privesti do rozbizhnoyi povedinki a failures P failures P s X s divergences P displaystyle mathit failures perp left P right mathit failures left P right cup left left s X right mid s in mathit divergences left P right right Pov yazani zasobi specifikaciyi ta formalizmiDeyaki inshi movi specifikaciyi ta formalizmi buli vivedeni z klasichnogo CSP vklyuchayuchi Timed CSP yakij ob yednuye v sobi chasovu informaciyu pro sistemi realnogo chasu Receptive Process Theory specializaciya CSP sho peredbachaye asinhronni operaciyi vidpravlennya CSPP HSCSP Wright mova opisu arhitekturi TCOZ integraciya Timed CSP i Object Z Circus integraciya CSP i Z CML Compass Modelling Language kombinaciya Circus i VDM stvorena dlya modelyuvannya SoS Systems of Systems CspCASL rozshirennya CCCASL sho integruye CSP LOTOS mizhnarodnij standart sho mistit v sobi osoblivosti CSP i CCSZnoskiRoscoe A W 1997 The Theory and Practice of Concurrency Prentice Hall ISBN 0 13 674409 5 12 travnya 1995 PDF SGS THOMSON Microelectronics Ltd Arhiv originalu PDF za 1 Serpnya 2020 Procitovano 27 Veresnya 2017 INMOS document 72 occ 45 03 Arhiv originalu za 26 Kvitnya 2013 Procitovano 15 kvitnya 2010 Arhiv originalu za 2 Sichnya 2013 Procitovano 27 Veresnya 2017 Higginbotham Daniel Mastering Concurrent Processes with core async vid 1 edition San Francisco No Starch Press ISBN 978 1 59327 591 4 Arhiv originalu za 28 Veresnya 2017 Procitovano 27 Veresnya 2017 Coding Tech Concurrency Patterns In Go Procitovano 9 serpnya 2018 Arhiv originalu za 30 grudnya 2018 Procitovano 9 serpnya 2018 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Hoare C A R 1978 Communicating sequential processes Communications of the ACM 21 8 666 677 doi 10 1145 359576 359585 Abdallah Ali E Jones Cliff B Sanders Jeff W 2005 Communicating Sequential Processes The First 25 Years T 3525 Springer Barrett G 1995 Model checking in practice The T9000 Virtual Channel Processor IEEE Transactions on Software Engineering 21 2 69 78 doi 10 1109 32 345823 Hall A Chapman R 2002 PDF IEEE Software 19 1 18 25 doi 10 1109 52 976937 Arhiv originalu PDF za 2 Grudnya 2020 Procitovano 27 Veresnya 2017 Creese S 2001 Data Independent Induction CSP Model Checking of Arbitrary Sized Networks D Phil Oxford University Hoare C A R 1985 Communicating Sequential Processes Prentice Hall ISBN 0 13 153289 8 Clinger William June 1981 Mathematics Doctoral Dissertation MIT Arhiv originalu za 25 Lipnya 2019 Procitovano 8 Lyutogo 2018 Brookes Stephen Hoare C A R Roscoe A W 1984 A Theory of Communicating Sequential Processes 31 3 560 599 doi 10 1145 828 833 Buth B M Kouvaras J Peleska H Shi December 1997 Deadlock analysis for a fault tolerant system Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology AMAST 97 s 60 75 Buth B J Peleska H Shi January 1999 Combining methods for the livelock analysis of a fault tolerant system Proceedings of the 7th International Conference on Algebraic Methodology and Software Technology AMAST 98 s 124 139 Lowe G Breaking and fixing the Needham Schroeder public key protocol using FDR PDF Posilannyahttps swtch com rsc thread squint pdf 11 Sichnya 2018 u Wayback Machine