Кіріспе
Бір мезгілдестік теориясындағы формалды модель. Компьютер ғылымында, байланысты жолмен орындалатын процестер (CSP) – бір мезгілдестік жүйелердегі өзара әрекеттесу үлгілерін сипаттауға арналған формалды тіл. Ол, арналар арқылы хабар алмасуға негізделген процестік алгебралар немесе процестік есептеулер деп аталатын бір мезгілдестіктің математикалық теориялар отбасының мүшесі болып табылады. CSP occam бағдарламалау тілінің дизайнына зор әсер етті, сондай-ақ Limbo, RaftLib, Erlang, Go сияқты бағдарламалау тілдерінің дизайнына да ықпал етті. CSP алғаш рет 1978 жылы Тони Хоардың мақаласында сипатталған, бірақ содан бері маңызды өзгерістерге ұшырады. CSP өнеркәсіпте әртүрлі жүйелердің бір мезгілдестік аспектілерін, мысалы T9000 Transputer, сондай-ақ қауіпсіз электрондық коммерция жүйесін нақтылау және тексеру құралы ретінде қолданылды. CSP теориясының өзі де әлі де белсенді зерттеулердің нысаны болып табылады, оның ішінде оның практикалық қолданылу аясын кеңейту жөніндегі жұмыстар (мысалы, талдау мүмкін болатын жүйелердің көлемін ұлғайту) жүргізілуде.
In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi, based on message passing via channels. CSP was highly influential in the design of the occam programming language and also influenced the design of programming languages such as Limbo, RaftLib, Erlang, Go,
CSP was first described in a 1978 article by Tony Hoare, but has since evolved substantially. CSP has been practically applied in industry as a tool for specifying and verifying the concurrent aspects of a variety of different systems, such as the T9000 Transputer, as well as a secure e commerce system. The theory of CSP itself is also still the subject of active research, including work to increase its range of practical applicability (e. g., increasing the scale of the systems that can be tractably analyzed).
Бейресми сипаттама
CSP атауынан көрініп тұрғандай, жүйелерді өздігінен жұмыс істейтін және бір-бірімен тек хабар алмасу арқылы байланысатын құрамдас процестер тұрғысынан сипаттауға мүмкіндік береді. Дегенмен, CSP атауының "Тізбекті" бөлігі қазір шартты, себебі қазіргі CSP компоненттік процестерді тізбекті процестер ретінде де, сондай-ақ қарапайым процестердің параллель қосындысы ретінде де анықтауға рұқсат береді. Әр түрлі процестер арасындағы қатынастар мен әр процестің ортасымен байланысу жолы әр түрлі процесс алгебралық операторларын пайдалану арқылы сипатталады. Осы алгебралық тәсілді қолдану арқылы, бірнеше қарапайым элементтерден күрделі процесс сипаттамаларын оңай құруға болады.
Синтаксисі
CSP синтаксисі процестер мен оқиғаларды қалай біріктіруге болатынын "заңды" түрде анықтайды. e оқиға болсын, ал X – оқиғалар жиыны. Онда CSP-нің негізгі синтаксисін былай анықтауға болады:
Қысқа болу үшін жоғарыда келтірілген синтаксис дивергенцияны білдіретін процесс, сондай-ақ алфавит бойынша параллель, құбыр және индекстелген таңдау сияқты әртүрлі операторларды қамтымайды.
Ресми семантика
CSP бірнеше түрлі формальды семантикамен толықтырылған, олар синтаксикалық тұрғыдан дұрыс CSP өрнектерінің мағынасын анықтайды. CSP теориясы өзара үйлесімді денотациялық семантиканы, алгебралық семантиканы және операциялық семантиканы қамтиды.
Актерлік модельмен салыстыру
Хабар алмасатын бір мезгілдегі процестерге қатысты, актерлік модель CSP-ге ұқсас. Дегенмен, екі модель олар ұсынатын бастапқы элементтерге қатысты түбегейлі түрде әртүрлі таңдау жасайды: CSP процестері анонимді, ал актерлердің жеке сәйкестіктері бар. CSP хабар алмасу үшін нақты арналарды пайдаланады, ал актерлік жүйелер хабарламаны атаулы мақсатты актерлерге жібереді. Бұл тәсілдер бір-бірінің қосымшасы ретінде қарастырылуы мүмкін, яғни бір арна арқылы қабылдайтын процестер сол арнаға сәйкес келетін сәйкестікке ие, ал актерлер арасындағы атауға негізделген байланысты арна ретінде жұмыс істейтін актерлерді құру арқылы бұзуға болады. CSP хабар алмасуы негізінен хабарды жіберуге және қабылдауға қатысатын процестер арасындағы кездесуді қамтиды, яғни жіберуші қабылдаушы оны қабылдауға дайын болғанға дейін хабарламаны жібере алмайды. Керісінше, актерлік жүйелердегі хабар алмасу негізінен асинхронды болып табылады, яғни хабарды беру мен қабылдау бір уақытта болуы міндетті емес, және жіберушілер қабылдаушылар оларды қабылдауға дайын болмас бұрын хабарламаларды жібере алады. Бұл тәсілдер де бір-бірінің қосымшасы ретінде қарастырылуы мүмкін, себебі кездесуге негізделген жүйелер асинхронды хабарлама жүйелері сияқты жұмыс істейтін буферленген байланыс құру үшін пайдаланылуы мүмкін, ал асинхронды жүйелер жіберушілер мен қабылдаушыларды синхрондау үшін хабарлама/құптау протоколын пайдаланып кездесу стиліндегі байланысты құру үшін пайдаланылуы мүмкін. Жоғарыда айтылған қасиеттер міндетті түрде Хоардың бастапқы CSP мақаласына сілтеме жасамайды, бірақ Go және Clojure ядросы сияқты іске асырылымдарда көрінетін идеяның қазіргі заманғы түріне сілтеме жасайды. Асинхронды. Бастапқы мақалада арналар спецификацияның маңызды бөлігі емес еді, ал жіберуші және қабылдаушы процестер бір-бірін аты арқылы анықтайтын.
CSP processes are anonymous, while actors have identities. CSP uses explicit channels for message passing, whereas actor systems transmit messages to named destination actors. These approaches may be considered duals of each other, in the sense that processes receiving through a single channel effectively have an identity corresponding to that channel, while the name based coupling between actors may be broken by constructing actors that behave as channels. CSP message passing fundamentally involves a rendezvous between the processes involved in sending and receiving the message, i. e. the sender cannot transmit a message until the receiver is ready to accept it. In contrast, message passing in actor systems is fundamentally asynchronous, i. e. message transmission and reception do not have to happen at the same time, and senders may transmit messages before receivers are ready to accept them. These approaches may also be considered duals of each other, in the sense that rendezvous based systems can be used to construct buffered communications that behave as asynchronous messaging systems, while asynchronous systems can be used to construct rendezvous style communications by using a message/acknowledgement protocol to synchronize senders and receivers. Note that the aforementioned properties do not necessarily refer to the original CSP paper by Hoare, but rather the modern incarnation of the idea as seen in implementations such as Go and Clojure's core. async. In the original paper, channels were not a central part of the specification, and the sender and receiver processes actually identify each other by name.