Скачиваний:
167
Добавлен:
25.02.2015
Размер:
721.69 Кб
Скачать

Поведение

приложения

Различаются однопоточные (т. е. с одним потоком управления) и многопоточные программы.

Характерным признаком однопоточной программы является то, что в каждый момент времени можно указать единственный оператор программы, который выполняется в данный момент — говорят, что этот

оператор имеет фокус управления.

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

процессора на выполнение разных потоков

управления.

Моделирование

параллелизма

Термин параллельность в программировании, вообще говоря, означает "одновременное" выполнение нескольких активностей. Слово "одновременное" в данном контексте означает, что невозможно (или не нужно) указать, какая из активностей происходит раньше другой во времени. Другими словами,

параллельные процессы не упорядочены во времени. Тем самым термин "параллельный" противопоставляется термину "последовательный«: последовательные активности упорядочены во времени, причем строго.

Моделирование

параллелизма

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

Моделирование

параллелизма

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

Моделирование

параллелизма

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

Если эти процессы никак не взаимодействуют друг с другом (самый распространенный случай), то нам ничего и не нужно моделировать.

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

Моделирование

параллелизма

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

параллельные выполняемые на многопроцессорном компьютере, квазипараллельные или последовательно

выполняемые в произвольном порядке.

Но с точки зрения других аспектов поведения, таких как, например, производительность, время реакции, пропускная способность, способ реализации параллелизма является очень существенным.

Моделирование

параллелизма

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

Моделирование

параллелизма

Пусть у нас определены два класса: Position (должность) и Person (сотрудник)

Моделирование

параллелизма

У объектов этих классов имеются по два состояния:

должность может быть вакантна (Vacant) или занята определенным сотрудником (Occupied) и сотрудник может быть не занят (Free) или назначен на определенную должность (Assigned).

Соответственно, у каждого из классов есть

конструктор (new) и деструктор (destroy) и по паре операций, которые ответственны за изменение состояния объекта: у класса Position операции называются occupy (занять должность) и free (освободить должность), а у класса Person — assign (назначить на должность) demote (освободить от должности).

У каждого класса есть скрытый атрибут, предназначенный для хранения ссылки на объект

другого класса (т. е. между этими классами

Моделирование

параллелизма

Рассмотрим теперь, как должна выполнятся операция назначения сотрудника на должность.

Мы оставим в стороне вопрос о том, в каком классе

разумно определить данную операцию (на самом деле

это совершенно не важно).

Положим, что операция назначения сотрудника на должность имеет два параметра — сотрудника и должность:

assignP2P(person:Person,position:Position)

Соседние файлы в папке Лекции Хлопотов М.В.