2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 65
Текст из файла (страница 65)
Процесс – эторесурсоемкий поток управления, который выполняется параллельно с другими процессами; поток – это облегченный поток управления, выполняемый параллельно с другими потоками в рамкаходного и того же процесса.Построение абстракций таким образом, чтобы они могли безопасно функционировать при наличии нескольких потоков управления, – дело непростое. В частности, механизмы обмена информацией и синхронизации, которые при этом придется применять,существенно сложнее, чем для последовательных систем.
Следуетизбегать как переусложнения модели (поскольку при наличии слишком большого числа параллельных потоков управления система начнет пробуксовывать), так и чрезмерного упрощения (потому, чтонедостаточная степень параллелизма не позволит оптимизироватьпропускную способность системы).Процессы и потоки338Базовые понятияВведениеМоделирование собачьейбудки и небоскребаобсуждаетсяв главе 1.Объектыобсуждаютсяв главе 13.Для собаки, живущей в будке, распорядок дня прост и последователен. Едим.
Спим. Гоняемся за кошкой. Снова едим. Мечтаемо том, как будем гоняться за кошкой. Забраться в будку, чтобы поспать или укрыться от дождя, не представляет проблемы, посколькукроме собаки ни у кого не возникнет потребность воспользоватьсявходом. Никакой конкуренции за ресурсы.Семейные заботы не столь просты. Не впадая в философствование, отметим, что каждый член семьи живет своей собственнойжизнью, но в то же время взаимодействует с другими домочадцами (вместе обедают, смотрят телевизор, играют, проводят уборку).Члены семьи совместно пользуются некоторыми ресурсами.
Поройу детей бывает общая спальня, на всю семью может быть толькоодин телефон или компьютер. Родственники распределяют междусобой обязанности: отец ходит в прачечную и в бакалейную лавку,мать оплачивает счета и работает в саду, дети помогают убиратьсяв доме и готовить. Борьба за использование общих ресурсов и координация домашних обязанностей становятся предметом споров.Наличие одной ванной комнаты в ситуации, когда все одновременно собираются в школу, – это проблема, а обед не будет готов, еслипапа не сходил в магазин.Но поFнастоящему сложна жизнь небоскреба и его арендаторов.
Сотни, а то и тысячи людей приходят в одно и то же здание,и у каждого свои планы. Все должны пройти через определенноеколичество подъездов. Все пользуются одними и теми же лифтами,а их число тоже не бесконечно. Посетителей обслуживают одни и теже системы отопления, кондиционирования, водоснабжения, канализации и подачи электроэнергии. На всех одна парковка. Еслилюди хотят работать слаженно, то должны общаться и синхронизировать свои действия.В UML каждый независимый поток управления моделируется в виде активного объекта.
Активный объект – это процесс илипоток, способные инициировать управляющее воздействие. Каки любой другой объект, активный объект может быть экземпляром класса. В таком случае говорят, что он является экземпляромактивного класса. Подобно прочим объектам, активные объектымогут общаться друг с другом, посылая сообщения, хотя в данномслучае передача сообщений должна быть дополнена семантикойпараллелизма, чтобы облегчить взаимодействие независимых потоков управления.Многие языки программирования непосредственно поддерживают концепцию активного объекта.
В языки Java, Smalltalk и Adaпараллелизм встроен. С++ поддерживает параллелизм за счетКлассыобсуждаютсяв главе 4,сигналы –в главе 21.339различных библиотек, в основе которых лежат механизмы параллелизма, обеспечиваемые операционной системой. Применение UMLдля визуализации, специфицирования, конструирования и документирования этих абстракций необходимо потому, что без негопочти невозможно рассуждать о параллелизме, обмене информацией и синхронизации.Графическое представление активного класса, принятое в UML,вы видите на рис. 23.1. Активные классы – это разновидность классов, поэтому их нотация включает все соответствующие разделы –для имени класса, атрибутов и операций. Активные классы частополучают сигналы, которые обычно перечисляются в дополнительном разделе.SignalsРис.
23.1. Активный классБазовые понятияДиаграммыАктивный объект (active object) – это объект, который владеетвзаимодейст- процессом или потоком и может инициировать управляющее возвия обсуждействие.даютсяАктивный класс (active class) – это класс, экземплярами которов главе 19.го являются активные объекты. Изображается в виде прямоуголь-ника с утолщенными боковыми границами (см. рис. 23.1).Процесс (process) – это ресурсоемкий поток управления, который может выполняться параллельно с другими процессами.Поток (thread) – это облегченный поток управления, которыйможет выполняться параллельно с другими потоками в рамках одного процесса.
Процессы и потоки изображаются в виде активныхклассов со стереотипами, а на диаграммах взаимодействия частовыступают в роли последовательностей.Поток управленияВ строго последовательной системе имеется только один потокуправления. Это означает, что в каждый момент времени выполняетсяодно и только одно действие. При запуске последовательной программыПроцессы и потоки340управление переходит к точке входа в программу, после чего выполняется одна операция за другой. Даже внешние по отношению к системе действующие лица функционируют параллельно,последовательная программа будет обрабатывать по одному событию за раз, отбрасывая тем самым одновременные с ним события.ДействияПоэтому такая последовательность и называется потоком управобсуждают- ления.
Если трассировать выполнение последовательной програмся в главе 16. мы, то точка выполнения будет перемещаться из одного предложения к другому – последовательно. Встречаются, конечно, ветвления,циклы, переходы, а при наличии рекурсии или итерации – движения потока вокруг одной точки. Но, несмотря на все это, в последовательной системе есть только один поток выполнения.В параллельной же системе потоков управления несколько,а значит, в один и тот же момент времени имеет место различнаядеятельность.
Каждый из нескольких одновременно выполняемыхпотоков управления начинается с точки входа в некоторый процессили поток. Если сделать моментальный снимок параллельной системы во время ее работы, то мы увидим несколько точек управления (по крайней мере, логических).Узлы обАктивный класс в UML используется для представления просуждаютсяцесса или потока, в контексте которого выполняется независимыйв главе 27.поток управления, работающий параллельно с другими, пользующимися равными с ним правами.Действующие лицаобсуждаютсяв главе 17.На заметку.
Истинного параллелизма можно достичь тремяспособами: воQпервых, распределяя активные объекты междунесколькими узлами, воQвторых, помещая активные объектына узлы с несколькими процессорами, и, вQтретьих, комбинируя оба метода.Классы и событияАктивные классы – это именно классы, хотя и обладающиевесьма специфическим свойством. Активный класс представляетнезависимый поток управления, тогда как обычный класс не связанс таковым. В отличие от активных, обычные классы неформальноназывают пассивными, так как они неспособны инициировать независимое управляющее воздействие.Объекты обАктивные классы применяются для моделирования семействсуждаютсяпроцессов или потоков.
На практике это означает, что активныйв главе 13,объект – экземпляр активного классификатора – материализуатрибутыет процесс или поток. При моделировании параллельных сиси операции – тем с помощью активных объектов вы присваиваете имя каждомуБазовые понятия341независимому потоку управления.
В результате создания активного объекта запускается ассоциированный с ним поток управления; после уничтожения объекта этот поток завершается.Активные классы обладают теми же свойствами, что и любыедругие классы. Они могут иметь экземпляры, атрибуты и операции, а также принимать участие в связях зависимости, обобщенияи ассоциации (включая агрегации). Активные классы вправе пользоваться предоставляемыми UML механизмами расширения, в томчисле стереотипами, помеченными значениями и ограничениями.Встречаются активные классы – реализации интерфейсов. Активные классы могут реализовываться посредством коопераций, а ихповедение может специфицироваться с помощью автоматов. Допускается участие активных классов в кооперациях.На диаграммах активные объекты встречаются там же, где и пасАвтоматыобсуждают- сивные.
Можно моделировать кооперации активных и пассивныхся в главе 22, объектов с помощью диаграмм взаимодействия (включая диаграммы последовательности и коммуникации). Активный объект можетсобытия –выступать в роли целевого объекта события в автомате.в главе 21.Если же говорить об автоматах, то как активные, так и пассивные объекты могут посылать и получать события сигналови вызовов.в главе 4,связи – в главах 4 и 10,механизмырасширения –в главе 6,интерфейсы –в главе 11.На заметку. По нашему мнению, использование активныхклассов необязательно – они не привносят ничего существенного в семантику.КоммуникацияВзаимодействияобсуждаютсяв главе 16.Классыобсуждаютсяв главе 4 и 9.Сигналысобытийи событиявызова обсуждаютсяв главе 21.Кооперирующиеся между собой объекты взаимодействуют путем обмена сообщениями.