рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Параллельные процессы

Параллельные процессы - раздел Программирование, Математические основы программирования. Теория схем программ. Семантическая теория программ Процесс Определяется Полным Описанием Его Потенциального Поведения. При Этом ...

Процесс определяется полным описанием его потенциального поведения. При этом часто имеется выбор между несколькими различными действиями. В каждом таком случае выбор того, какое из событий произойдет в действительности, может зависеть от окружения, в котором работает процесс. Само окружение процесса может быть описано как процесс, поведение которого определяется в уже знакомых терминах. Это позволяет исследовать поведение целой системы, состоящей из процесса и его окружения, взаимодействующих по мере их параллельного исполнения. Всю систему также следует рассматривать как процесс, поведение которого определяется в терминах поведения составляющих его процессов. Эта система в свою очередь может быть помещена в еще более широкое окружение, и т.д.

3.2.1. Взаимодействие

Объединяя два процесса для совместного исполнения, как правило, хотят, чтобы они взаимодействовали друг с другом. Эти взаимодействия можно рассматривать, как события, требующие одновременного участия обоих процессов.

3.2.1.1. Законы

Законы, управляющие поведением (P || Q), параллельно развивающихся процессов P и Q, достаточно просты. Первый закон выражает логическую симметрию между процессом и его окружением:

L1. P || Q = Q || P.

Следующий закон показывает, что при совместной работе трех процессов неважно, в каком порядке они объединены оператором параллельной композиции ||:

L2. P || (Q || R) = (P || Q) || R.

Процесс, находящийся в тупиковой ситуации, приводит к тупику всей системы.

L3. P || СТОПaP = СТОПaP.

Следующий закон гласит, что пара процессов с одинаковыми алфавитами либо одновременно выполняет одно и то же действие, либо попадает в состояние тупика, если начальные события процессов не совпадают:

L4А. (с ® Р) || (с ® Q) = с ® (Р || Q).

L4B. (с ® Р) || (d ® Q) = СТОП.

3.2.2. Параллелизм

Рассмотрим случай, когда операнды Р и Q оператора || имеют неодинаковые алфавиты aР ¹ aQ.

Когда такие процессы объединяются для совместного исполнения, события, содержащиеся в обоих алфавитах, требуют одновременного участия Р и Q. События же из алфавита Р, не содержащиеся в алфавите Q, не имеют никакого отношения к Q, который физически неспособен ни контролировать, ни замечать такие события. Такие события процесса P могут происходить независимо от Q. Аналогично Q может самостоятельно участвовать в событиях, содержащихся в его алфавите, но отсутствующих в алфавите Р.

Таким образом, множество всех событий, логически возможных для данной системы, есть просто объединение алфавитов составляющих ее процессов a(Р || Q) = aР È aQ.

3.2.2.1. Законы

Формальное описание вышесказанного осуществляется с помощью следующих законов:

Пусть а Î (aР - aQ), b Î (aQ - aР) и {c, d} Î (aР Ç aQ). Следующие законы показывают, каким образом процесс Р один участвует в событии a, Q один участвует в b, а c и d требуют одновременного участия P и Q.

L1А. (с®Р) || (с®Q)=с®(Р || Q).

L1B. (с®Р) || (d®Q)=СТОП.

L2А. (a®Р) || (с®Q)=a®(Р || (с®Q)).

L2B. (с®Р) || (b®Q)=b®((с®Р) || Q)..

L3. (a®Р) || (b®Q)=.(a®(Р || (b®Q)) | b®((a®Р) || Q)).

Эти законы можно обобщить для общего случая оператора выбора:

L3. Пусть Р = (х: А ® Р(х)), Q = (y: B ® Q(y)).

Тогда Р || Q = (z: C ® (Р' || Q')), где С = (A Ç B) È (А - aQ) È (B - aP),

P' = P(z), если z Î A, иначе P' = Р, а Q' = Q(z), если z Î B, иначе Q' = Q.

С помощью этих законов можно переопределить процесс, удалив из его описания, параллельный оператор, как это показано в следующем примере.

Пример 3.17. Пусть aР = {a, c}, aQ = {b, c}, P = (a ® c ® P), Q = (c ® b ® Q).

Тогда Р || Q = (a ® c® P) || (c ® b ® Q) = a ® ((c®P) || (c®b®Q)) по L2A

= a ® c ® (P || (b®Q)) по L1A (1)

а (P || (b®Q)) = a ® ((c®P) || (b®Q)) | b ® (P || Q) по L3

= a ® b ® ((c® P) || Q) | b® (P || Q) по L2B

= a ® b ® c ® (P || (b®Q)) | b®a®c®(P||(b®Q)) по L1A и (1)

= mX.(a® b®c®X | b®a®c®X).

Отсюда следует, что

Р || Q = a ® c ® mX.(a ® b ® c ® X | b ® a ® c ® X). по (1)

3.2.2.2. Реализация

Реализация операции || выводится непосредственно из закона L3. Алфавиты операндов представляются конечными списками символов A и B.

3.2.3. Протоколы

Пусть t — протокол (Р || Q). Тогда все события из t, принадлежащие алфавиту aР, являлись событиями в жизни P. а все события из t, не принадлежащие aР, происходили без участия P. Таким образом, (t ­ aР) это протокол всех событий, в которых участвовал процесс P, и поэтому он является протоколом P. По тем же соображениям (t ­ aQ) является протоколом Q. Более того, каждое событие из t должно содержаться либо в aР, либо в aQ. Эти рассуждения позволяют сформулировать закон

L1. протоколы(Р || Q) = {t | (t­aРпротоколы(Р) AND (t­aQпротоколы(Q) AND t Î (aР È aQ)*}.

3.2.3. Задача об обедающих философах

Рассмотрим ещё одну трактовку задачи предложенной Дейкстрой об обедающих философах. В некоем пансионе нашли пристанище пять философов. У каждого философа была своя комната. Была у них и общая столовая с круглым столом, вокруг которого стояли пять стульев. В центре стола стояла большая миска спагетти, содержимое которой постоянно пополнялось. На столе также лежало пять вилок, по одной между соседними посадочными местами.

Звали философов ФИЛ0, ФИЛ1, ФИЛ2, ФИЛ3, ФИЛ4 и за столом они располагались в этом же порядке, против часовой стрелки. Почувствовав голод, философ шёл в столовую, садился на свой стул, брал сначала слева от себя вилку, затем справа и приступал к еде. Закончив трапезу, он клал на место обе вилки, выходил из-за стола, и уходили размышлять.

3.2.3.1. Алфавиты

Теперь построим математическую модель этой системы. Сначала надо выбрать множества событий. Для ФИЛi определим это множество как

aФИЛi = {i.садится, i.встаёт, i.берет вил.i, i.берет вил.(i +5 1), i.кладёт вил.i, i.кладёт вил.(i +5 1)},

где +5 — сложение по модулю 5.

Заметим, что алфавиты философов друг с другом не пересекаются, а возможность взаимодействия между ними исключена.

Другие «действующие лица» — это пять вилок, каждая из которых имеет тот же номер, что и философ, которому она принадлежит. Вил берет и кладет на место или сам этот философ, или его сосед слева. Алфавит i-й вилки определим как

aВИЛКАi = {i.берет вил.i, (i -5 1).берет вил.i, i.кладёт вил.i, (i -5 1).кладёт вил.i},

где -5 обозначает вычитание по модулю 5.

Таким образом, каждое событие, кроме садится и встает, требует участия двух соседних действующих лиц — философа и вилки.

3.2.3.2. Поведение

Жизнь каждого философа представляет собой повторение цикла из шести событий:

ФИЛi = (i.садится ® i.берет вил.i ® i.берет вил.(i +5 1) ® i.кладет вил.i ®

® i.кладет вил.(i +5 1) → i.встаёт ®ФИЛi).

Вилку циклически берёт и кладёт на место кто-нибудь из соседних с ней философов:

ВИЛКАi = (i.берет вил.i, ® i.кладёт вил.i ® ВИЛКАi | (i -5 1).берет вил.i ® (i -5 1).кладёт вил.i ® ВИЛКАi).

Поведение всего пансиона можно описать как параллельную комбинацию поведения компонент:

ФИЛОСОФЫ = (ФИЛ0 || ФИЛ1 || ФИЛ2 || ФИЛ3 || ФИЛ4 )

ВИЛКИ = (ВИЛКА0 || ВИЛКА1 || ВИЛКА2 || ВИЛКА3 || ВИЛКА4 )

ПАНСИОН = (ФИЛОСОФЫ || ВИЛКИ).

В одном из интересных вариантов этой историй философы могут брать и класть обе вилки в любом порядке. Рассмотрим поведение каждой руки философа в отдельности.

aЛЕВАЯi = {i.садится, i.встаёт, i.берет вил.i, i.кладёт вил.i}.

aФИЛi = {i.садится, i.встаёт, i.берет вил.(i +5 1), i.кладёт вил.(i +5 1)}.

ЛЕВАЯi = (i.садится ® i.берет вил.i ® i.кладет вил.i ® i.встаёт ® ЛЕВАЯi).

ПРАВАЯi = (i.садится ® i.берет вил.(i +5 1) ® i.кладет вил.(i +5 1) ® i.встаёт ® ПРАВАЯi).

ФИЛi = (ЛЕВАЯi || ПРАВАЯi ).

Синхронизацией процессов ЛЕВАЯi и ПРАВАЯi в момент, когда i-тый философ садится или встаёт (посредством общих событий), достигается то, что он не может поднимать вилки, если не сидит за столом, и не может встать из-за стола, пока не положит вилки.

3.2.3.3. Тупик!

Построенная математическая модель первого варианта системы позволяет обнаружить опасность возникновения тупиковой ситуации, когда каждый из философов возьмёт вилку в левую руку. Одним из решений этой проблемы явилось введение в систему слуги. Слуге даётся указание следить за тем, чтобы за столом никогда не оказывалось больше четырех философов одновременно. Алфавит его определяется как C È B, где

C = {0.садится, … , 4.садится }, B = {0.встаёт, … , 4.встаёт}.

Поведение слуги проще всего описать с помощью взаимной рекурсии. Пусть СЛУГАj определяет поведение слуги, когда за столом сидят j философов:

СЛУГА0 =(x: C ® СЛУГА1),

СЛУГАj =(x: C ® СЛУГАj+1) | y: B ® СЛУГАj-1),

jÎ{1,2.3}.

СЛУГА4 =(y: B ® СЛУГА3).

Пансион, свободный от тупика, определяется как НОВПАНСИОН = ((ПАНСИОН || СЛУГА0).

3.2.3.4. Доказательство беступиковости

Докажем утверждение, что НОВПАНСИОН свободен от тупиков. Для этого достаточно доказать, что любой протокол s этой системы можно продолжить некоторым событием так, что бы снова получить протокол этой же системы. Строго, это можно сформулировать как

"s, $z (sÎпротоколы(НОВПАНСИОН) AND zÎaНОВПАНСИОН Þ s^z Î протоколы(НОВПАНСИОН)).

Доказательство можно осуществлять двумя способами:

Первый из них предполагает применение (насколько это возможно) приведённых выше законов.

Второй способ доказательства состоит в составлении компьютерной программы для исследования протоколов системы в поисках тупика. Такая программ сможет дать интересующий нас ответ за конечное время, если система имеет конечное число состояний, как в нашем случае НОВПАНСИОН. Достаточно рассмотреть только те протоколы, длина которых не превышает известной верхней границы числа состояний. (Каждому протоколу соответствует некоторое состояние системы, в которое систему приводит из начального состояния последовательность событий, описываемая этим протоколом.)

Число состояний в системе НОВПАНСИОН не превышает 1,8 млн. Но, т. к. в каждом состоянии возможны не меньше двух событий, то количество протоколов, которые надо проверить, будет превышать два в степени 1,8 млн. Трудно представить, что компьютер, когда-нибудь сумеет исследовать все возможные случаи. Таким образом, доказательство отсутствия тупиковых ситуаций, как правило, входит в обязанности разработчика параллельных систем.

3.2.3.5. Бесконечный перехват

Помимо тупика обедающего философа подстерегает опасность бесконечного перехвата инициативы. Предположим, что левая рука у сидящего философа очень медлительна, в то время как его левый сосед очень проворен.

Всякий раз, когда философ пытается дотянуться до своей левой вилки, его левый сосед мгновенно перехватывает вил. Таким образом, может оказаться, что сидящий философ никогда не приступит к еде.

При строгом подходе, на ранних этапах проектирования такая проблема неразрешима. Таким образом, добиваться, чтобы любое желаемое и возможное событие обязательно наступило в пределах разумного интервала времени, становится задачей реализатора системы.

3.2.4. Помеченные процессы

Помечать процессы особенно полезно при создании групп сходных процессов, которые в режиме параллельной работы представляют некоторые идентичные услуги их общему окружению, но никак не взаимодействуют друг с другом. Это означает, что все они должны иметь взаимно непересекающиеся алфавиты. Чтобы этого достичь, снабдим каждый процесс отдельным именем; каждое событие помеченного процесса помечено тем же именем. Помеченное событие l.x, где х – его имя, а l – метка.

Процесс P с меткой l обозначают где l: P. Он участвует в событии l.x, когда по определению P участвует в х.

Пример 3.18. Два работающих рядом торговых автомата

(лев: ТАП) || (прав: ТАП)

Алфавиты этих процессов не пресекаются, и каждое происходящее событие помечено именем того устройства, на котором оно происходит. Если перед их параллельной установкой устройства не получили имен, каждое событие будет требовать участия их обоих, и тогда пара машин будет неотличима от одной. Это является следствием того, что (ТАП || ТАП) = ТАП.

3.2.5. Множественная пометка

Определение пометки можно расширить, позволив помечать каждое событие любой меткой l из некоторого множества L. Если P – процесс, определим (L. : P) как процесс, ведущий себя в точности как P с той разницей, что он участвует в событии l.x (где l Î L, xÎa P ), если по определению P участвует в х.

Пример 3.19. Лакей – это младший слуга, который имеет одного хозяина, провожает его к столу и из-за стола и прислуживает ему, пока тот ест:

aЛАКЕЙ = {садится, встает}

ЛАКЕЙ = (садится → встает → ЛАКЕЙ)

Лакей обслуживающего всех пятерых философов по очереди определим:

L = {0, 1, 2, 3, 4}

ОБЩИЙ ЛАКЕЙ = (L: ЛАКЕЙ )

Общего лакея можно нанимать на период отпуска слуги для предохранения обедающих философов от тупиковой ситуации. Конечно, в течение этого времени философам придется поголодать, ибо находиться за столом они смогут только по очереди.

3.3. Взаимодействие – обмен сообщениями

В предыдущих разделах было введено и проиллюстрировано общее понятие события как действия, не имеющего протяженности во времени, наступление которого может требовать одновременного участия более чем одного независимо описанного процесса. В этом разделе внимание будет сосредоточено на одном специальном классе событий, называемых взаимодействиями. Взаимодействие состоит в передаче сообщений и является событием, описываемым парой c.v, где c – имя канала по которому происходит взаимодействие, а v – значение передаваемого сообщения. Такое обозначение мы уже использовали – это описание процесса КОПИБИТ (см. пример 3.3).

Различают следующие виды каналов:

  • Синхронные.Отправив сообщение, передающий процесс ожидает от принимающего подтверждение о приеме сообщения прежде, чем послать следующее сообщение, т.е. принимающий процесс не выполняется, пока не получит данные, а передающий - пока не получит подтверждение о приеме данных.
  • Асинхронно/синхронные. Операция передачи сообщения асинхронная - она завершается сразу (сообщение копируется в некоторый буфер, а затем пересылается одновременно с работой процесса-отправителя), не ожидая того, когда данные будут получены приемником. Операция приема сообщения синхронная: она блокирует процесс до момента поступления сообщения.
  • Асинхронные. Обе операция асинхронные, то есть они завершаются сразу. Операция передачи сообщения работает, как и в предыдущем случае. Операция приема сообщения, обычно, возвращает некоторые значения, указывающие на то, как завершилась операция - было или нет принято сообщение. В некоторых реализациях операции обмена сообщениями активируют сопроцессы, которые принимают/отправляют сообщения, используя временные буфера и соответствующие синхронные операции. В этом случае имеется еще синхронизирующая операции, которая блокирует процесс до тех пор, пока не завершатся все инициированные операции канала.

Множество всех сообщений, с помощью которых Р может осуществлять взаимодействие по каналу с, определяется как

aс(Р) = {v | c.v Î aP}.

Кроме того, определены функции, выбирающие имя канала канал(c.v) = c и значение сообщения сообщ(c.v) = v.

Каналы используются для передачи сообщений только в одном направлении и только между двумя процессами.

3.3.1. Ввод и вывод

Пусть v – элемент aс(Р). Процесс, который сначала выводит v по каналу с, а затем ведет себя как Р, обозначим

(с ! v → P) = (c.v → P).

Единственное событие, к которому этот процесс готов в начальном состоянии. – это взаимодействие c.v.

Процесс, который сначала готов ввести любое значение х, предаваемое по каналу с, а затем ведет себя как Р(х), обозначим

(с ? v → P(х)) = (у: {y | канал(у) = c} → P(сообщ(у))).

Пусть P, Q – процессы, с – выходной канал P и входной канал Q. Если P, Q объединены в параллельную систему (P || Q), то взаимодействие по каналу с будет происходить всякий раз, когда P выводит сообщение, а Q в тот же самый момент вводит его. Выводящий процесс однозначно определяет значение передаваемого сообщения, тогда как вводящий процесс готов принять любое поступающее значение. Поэтому в действительности происходящим событием будет взаимодействие c.v, где v – значение. Определяемое выводящим процессом. Отсюда вытекает очевидное ограничение, что алфавиты на обоих концах канала должны совпадать, т.е. aс(Р) = aс(Q).

Пример 3.20. Процесс, копирующий каждое сообщение, поступающее слева, выводя его направо:

aлев(КОПИР) = aправ(КОПИР)

КОПИР = µХ.(лев ? х → прав ! х →Х).

Если aлев = {0, 1}, то КОПИР почти полностью совпадает с КОПИБИТ.

Пример 3.21. Процесс, похожий на КОПИР, с той разницей, что каждое вводимое число перед выводом удваивается:

aлев = aправ = Nat

УДВ = µХ.(лев ? х → прав ! (х + х) →Х).

Пример 3.22. Процесс, принимающий сообщение по одному из двух каналов лев1 и лев2 и немедленно передающий его направо:

aлев1 = aлев2 = aправ

СЛИЯНИЕ = (лев1 ? х → прав ! х → СЛИЯНИЕ | лев2 ? х → прав ! х → СЛИЯНИЕ).

3.3.2. Взаимодействия

Пусть P, Q – процессы, с – выходной канал P и входной канал Q. Тогда множество, состоящее из событий-взаимодействий c.v, содержится в пересечении алфавита P с алфавитом Q. Если процессы объединены в параллельную систему (P || Q), то взаимодействие c.v может происходить только когда в этом событии одновременно участвуют оба процесса, т.е. в тот момент, когда P выводит значение v по каналу c, а Q одновременно вводит это значение. Вводящий процесс готов принять любое возможное поступающее сообщение, и поэтому то, какое именно значение передается, определяет выводящий процесс.

Таким образом, вывод можно рассматривать как специальный случай операции префиксации, а ввод – как специальный случай выбора.

L1. (с ! v → P) || (с ? x → Q(x)) = с ! v → (P || Q(v)).

3.3.3. Подчинение

Пусть P, Q – процессы, такие, что Í aQ. В комбинации (P || Q) каждое действие Р может произойти, только если это позволяет Q, тогда как Q может независимо осуществлять действия из ( - aQ) без разрешения и даже без ведома партнера Р. Таким образом, Р служит по отношению к Q подчиненным процессом, тогда как Q выступает как главный процесс. Это записывается так: Р // Q. Отсюда: a(Р // Q) = ( - aQ).

Обычно бывает удобно давать подчиненному процессу имя, скажем m, которое используется главным процессом для всех взаимодействий с подчиненным. Каждое взаимодействие по каналу с обозначается тройкой m.c.v, где am.c(m : P) = aс(Р), а v Î aс(Р).

В конструкции (m : P // Q) процесс Q взаимодействует с P по каналам с составными именами вида m.c, тогда как P для этих же взаимодействий использует соответствующий простой канал с. Так как все эти взаимодействия скрыты от обстановки, имя m недоступно снаружи; следовательно, оно служит локальным именем подчиненного процесса.

Подчинение может быть вложенным, например (n : (m : P//Q)//R). Процесс R не имеет возможности ни непосредственно взаимодействовать с P, ни знать о существовании P и его имени m.

Пример 3.23. удв: УДВ // Q.

Подчиненный процесс ведет себя как обыкновенная подпрограмма, вызываемая внутри главного процесса Q. Внутри Q значение 2´е может быть получено поочередным выводом аргумента е по левому каналу процесса удв и вводом результата по правому каналу:

удв.лев ! е → (удв.прав ? х → …).

Пример 3.22. ст : СТЕК // Q.

Внутри главного процесса Q ст.лев!v используется для проталкивания в верхушку стека, а ст.прав?x выталкивает верхнее значение. Использование конструкции выбора позволяет рассматривать ситуацию, когда стек пуст:

(ст.прав ? x → Q1(х) | ст.пуст Q2)

Если стек не пуст, то выбирается первая альтернатива; если пуст, то выбор второй альтернативы позволяет избежать тупика.

Оператор подчинения может использоваться для рекурсивного определения подпрограмм. Каждый уровень рекурсии (кроме последнего) задает новую локальную подпрограмму, работающую с рекурсивным вызовом.

Пример 3.24.

ФАКТ = µХ.лев?n → (if n = 0 then(прав!1 → X) else (f: X // (f.лев!(n – 1) → f.прав?y → прав!(n´y) → X))

Программа ФАКТ использует каналы лев и прав для обмена результатами и параметрами с вызывающим ее процессом, а каналы f.лев и f.прав – для взаимодействия со своим подчиненным процессом f.

– Конец работы –

Эта тема принадлежит разделу:

Математические основы программирования. Теория схем программ. Семантическая теория программ

Следуя А П Ершову мы употребляем термин теоретическое программирование в качестве названия математической дисциплины изучающей синтаксические.. В настоящее время сложились следующие основные направления исследований.. Математические основы программирования Основная цель исследований развитие математического аппарата..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Параллельные процессы

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Программа как формализованное описание процесса обработки данных
Целью программирования является описание процессов обработки данных (в дальнейшем - просто процессов). Данные - это представление фактов и идей в формализованном виде, пригодном для п

Правильная программа и надежная программа
Под «программой» часто понимают правильную программу, т.е. программу, не содержащую ошибок, соответствующую спецификации и дающую возможность формального вывода программы из формального набора пред

Стандартные схемы программ
1.2.1. Базис класса стандартных схем программ Стандартные схемы программ (ССП) характеризуются базисом и структурой схемы. Базис класса фиксирует символы, из которых строятся схем

Свойства и виды стандартных схем программ
1.3.1. Эквивалентность, тотальность, пустота, свобода ССП S в базисе В тотальна (пуста), если для любой интерпретации I базиса В программа (S, I) останавливается (зацикливает

Моделирование стандартных схем программ
1.4.1. Одноленточные автоматы Конечный одноленточный (детерминированный, односторонний) автомат обнаруживают ряд полезных качеств, используемых в теории схем программ для установлен

Рекурсивные схемы
1.5.1. Рекурсивное программирование Среди упомянутых выше методов формализации понятия вычислимой функции метод Тьюринга — Поста основан на уточнении понятия процесса вычислений, для чего

Трансляция схем программ
1.6.1. О сравнении класс сов схем. Программы для ЭВМ, будь-то программы, записанные на операторном языке, или программы на рекурсивном языке, универсальны в том смысле, что любую вычислиму

Обогащенные и структурированные схемы
1.7.1 Классы обогащенных схем Выделяют следующие классы обогащенных схем: класс счетчиковых схем, класс магазинных схем, класс схем с массивами. Классы счетчиковых и магази

Описание смысла программ
Существует несколько причин, по которым следует заниматься описанием семантикипрограмм, или смысла выражений, операторов и программных единиц. Руководство по использованию языка про

Преобразователь предикатов.
Э. Дейкстра рассматривает слабейшие предусловия, т.е. предусловия, необходимые и достаточные для гарантии желаемого результата. «Условие, характеризующее множество всех начальных состояний

Языки формальной спецификации.
Языки и методы формальной спецификации, как средство проектирования и анализа программного обеспечения появились более сорока лет назад. За это время было немало попыток разработать как универсальн

Методы доказательства правильности программ.
Как известно, универсальные вычислительные машины могут быть запрограммированы для решения самых разнородных задач - в этом заключается одна из основных их особенностей, имеющая огромную практическ

Правила верификации К. Хоара.
Сформулируем правила (аксиомы) К.Хоара, которые определяют предусловия как достаточные предусловия, гарантирующие, что исполнение соответствующего оператора при успешном завершении приведет к желае

Взаимодействующие последовательные процессы
Как уже отмечалось во введении, наиболее очевидной сферой применения результатов и рекомендаций теоретического программирования и вычислительной математики, служит спецификация, разработка и реализ

Программирование параллельных вычислений
3.5.1. Основные понятия Исполнение процессов типичной параллельной программы прерывается значительно чаще, чем процессов, работающих в последовательной среде, так как процессы параллельной

Модели параллельных вычислений
Параллельное программирование представляет дополнительные источники сложности - необходимо явно управлять работой тысяч процессоров, координировать миллионы межпроцессорных взаимодействий. Для того

Основные определения
4.2.1. Теоретико-множественное определение сетей Петри Пусть мультимножество это множество, допускающее вхождение нескольких экземпляров одного и того же элемента. Сеть

Моделирование систем на основе сетей Петри
В этом разделе рассмотрим метод моделирования на основе сетей Петри, а также его применение для моделирования параллельных систем взаимодействующих процессов и решения ряда классических задач из об

Then begin
X1:=X1*Y; end; X2:=X2*Y; Y:=Y-1; end; write(X1); write(X2); endРисунок 4.5.

Анализ сетей Петри
Моделирование систем сетями Петри, прежде всего, обусловлено необходимостью проведения глубокого исследования их поведения. Для проведения такого исследования необходимы методы анализа свойств сами

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги