
- •1. Процессы, коммуникация и координация в распределенных системах
- •1.1. Процессы
- •1.1.1. Структуры действий как процессы
- •1.1.2. Структурирование процессов
- •1.1.3. Последовательное представление процессов с помощью трасс
- •1.1.4. Рашуженис процесса на подпроцессы
- •1.1.5. Действия как переходы состояний
- •1,2. Описания систем через множество процессов
- •1.2.1. Сети Петри
- •1.2.2. Термы для описания процессов
- •1.2.3. Синхронизация и координация агентов
- •1.2.4. Предикаты над процессами
- •1.3. Языки программирования для описания взаимодействующих систем
- •1.3.1. Коммуникация через обмен сообщениями
- •1.3.2. Общие программные переменные
- •1.3.3. Языковые средства для параллельных ходов работы
- •1.3.4. Потоки ввода/вывода
- •2.1. Основные аспекты операционных систем
- •2.1.1. Функции операционной системы
- •2.1.2. Режимы обработки
Информатика. Часть III
аспекты системных структур в вычислительных системах. При этом мы концентрируем внимание на системных структурах программного оборудования. Это прежде всего касается операционных систем, их построения и способа функционирования. Сюда же относятся типичные вопросы системного программирования, как они встречаются при разработке операционных систем. Как вспомогательное средство объяснения концепции системного программирования мы снова используем модельную машину Ml и описываем типичные команды, применяемые в системном программировании.
В заключительной главе в качестве следующей важной области системного программирования обсуждаются вопросы реализации языков программирования. Здесь речь идет как о синтаксических, так и о семантических аспектах программ, а именно об интерпретации и компиляции программ. Для несложного функционального языка приводятся интерпретатор и компилятор.
Мюнхен, июль 1994 г.
Манфред Брой
1. Процессы, коммуникация и координация в распределенных системах
В этой главе мы обсудим основные понятия, относящиеся к моделированию, описанию и программированию паратлелыю работающих распределенных систем. Под системой мы понимаем определенную архитектуру взаимодействующих компонент, отграниченных от их окружения. Если активности компонент могут иметь место одновременно, мы говорим о параллельно работающих системах (короче - параллельных системах. - Пер.) или также о параиельно протекающих (параыельных) процессах. Если такие системы построены из отдельных, удаленных друг от друга ' в пространстве компонент, то говорят также о распределенных системах. Объединение ЭВМ в сеть, использование ЭВМ, обладающих несколькими активными компонентами (несколькими процессорами), и соединение вычислительных машин с техническими системами (управление процессами) приводят к распределенным вычислительным системам в форме параллельно работающих ЭВМ и сетей ЭВМ. Использование распределенных вычислительных систем (РВС) и программирование для них требует определенной методики для описания и анализа распределенных, параллельно работающих систем.
Для использование РВС применяются программы, которые на таких ВС выполняются параллельно и согласованно. При этом для описания параллелизма и координации, т. е. синхронизации распределенных активностей, а также для обмена сообщениями (коммуникации) между компонентами используются соответствующие языковые элементы. Даже тогда, когда в одной ЭВМ определенные активности физически имеют место не одновременно, а во времени выполняются строго последовательно, часто бывает целесообразно структуру действия системы описывать и интерпретировать как параллельно действующую систему.
Часто одна ЭВМ используется одновременно многими пользователями, и при этом взаимосвязанно протекают различные активности. Типичным образом ЭВМ объединяются в вычислительные сети. Обе эти ситуации приводят к параыельиым процессам. Структура больших программных систем может быть адекватно предстаатена и истолкована в виде взаимодействующих, параллельно работающих частей систем (частичных систем, подсистем).
Дтя описания, разработки и анализа РВС на первом гитане стоит ряд аспектов их поведения, которые могут быть охвачены следующими терминами
:распределение означает пространственное расположение (или же разделение) отдельных компонент системы;
параьшгизм относится к временным отношениям между действиями компонент системы, которые могут протекать одновременно (параллельно);
интерактивность, реакция, коммуникация, координация, синхронизация касаются причинно-следственных отношений между пространственно разделенными и выполняемыми наряду друг с другом действиями. В связи с этими понятиями говорится, в частности, об обмене сообщениями и сигналами, с помощью которых компоненты распределенной системы могут осуществлять согласованное поведение;
нсдетерминированность возникает, как правило, при моделировании РВС из-за целенаправленного опускания из рассмотрения (игнорирования) определенных деталей информации, например, временных взаимозависимостях в функционировании системы, которые являются существенными при принятии решений в ходе работы системы. Только благодаря искусно выбранным абстракциям сложные системы могуг быть описаны гибко и обозримо.
Параллельные системы в технической информатике встречаются, между прочим, в форме переключательных узлов и сетей ЭВМ. В системной информатике структуры операционной системы моделируются с помощью распределенных систем. Также и архитектура ЭВМ может быть описана как распределенная система. В практической информатике многие применения (организационные структуры) моделируются как распределенные системы. Все это показывает, что распределенные системы встречаются во многих областях информатики.
Для описания и анализа параллельных систем необходима их математическая модель. Отдельное функционирование системы в дальнейшем будем называть процессом. Процесс в общем случае состоит из множества событий, которые соответствуют выполнению действий (акций) и возникают в определенном причинно-следственном (и тем самым также получающемся отсюда временном) порядке.
Центральное значение процессов ятя вычислительной системы делает весьма желательным точное математическое описание понятия "процесс"". Поэтому в дальнейшем будет представлена простая математическая модель параллельных процессов. Опираясь на эту модель, далее будут введены ряд структурных понятий для процесса и методика для описания систем через процессы (или множество процессов). В заключение будут обсуждены языковые конструкты для программирования координации и коммуникации параллельно выполняющихся, взаимодействующих программ.