Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 136

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 136 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1362019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 136)

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

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

В качестве примера спецификации задачи в языке Аба рассмотрим следуюшую спецификацию, содержашую одну входную точку ЕИТКУ 1 с одним входным параметром: сев)с ТАЯХ ЕХАИРЕЕ Дв епску ЕЯТНУ 1(1ТЕИ : Еп 1ИТЕЕЕР)г епв ТАНК ЕХАИРЕЕг Тело задачи должно содержать некую синтаксическую форму, соответствуюшую оператору епкку в спецификации задачи. В языке Аба они уточняются операторами аооерк, начинаюгцимися зарезервированным словом еооерк.

Оператор (с1аозе) аооерк состоит из ряда операторов, начинающегося с зарезервированного слова аооер~. и заканчиваюшегося зарезервированным словом епс(. Операторы еооерк сами по себе относительно просты, однако другие конструкции, в которые они встраиваются, могут усложнить их семантику. Простой оператор еооерк имеет вид: аооерк имя точки входа (формальные параметры] ео епе имя точки входа; Имя точки вхола в операторе асоерк соответствует имени, указанному в операторе епвку нз соответствующей спецификации задачи. Возможные параметры представляют собой средство для обмена данными между вызываюшей и вызываемой задачей.

Операторы. расположенные между ключевыми словами с)о и впав„определяют операции, которые должны выполняться во время рандеву. Совокупность этих операторов называется телом оператора еоперк. Во время реального рандеву выполнение задачи, пославшей сообшение, приостанавливается. 522 Гдове 12. Параллельность Задачи в языке Ада поддерживают связь др> г с другом с помощью механизма рандеву. Всякий раз, когда входная точка задачи, или оператор ассерк, получает сообщение, которое она не готова принять по какой-либо причине. выполнение задачи, отправившей это сообщение, должно быть приостановлено, пока входная точка в задаче, получающей сообщение, не будет готова к его получению.

Конечно, входная точка должна также помнить, какая именно задача послала ей сообщение, которое не было принято. Для этой цели каждый оператор вавку в задаче имеет связанную с ним очередь. В очереди хранится список других задач, пытавшихся установить связь с входной точкой задачи. Ниже приводится скелетное тело задачи, спецификация которой была описана выше: Е )с Ьоау ТАЯХ ЕХАМРЬЕ '.

>звддп 1оор ассерС Е)ЧТВУ !(1ТЕМ : Еп 1л)ТЕЯЕК) ело впс) ЕЫТКУ !; епсл 1оор; епс1 ТАЯК ЕХАМР1 Е; Оператор ассерц этого тела задачи является реализацией оператора епцку, названного е)чтйт' 1 в спецификации задачи. Если выполнение задачи тАЯк ехАНРье начинается и достигает входной точки Е)ЧТКт' 1 оператора ассорти прежде, чем какая-либо задача передаст сообщение в эту точку, то выполнение задачи ТАЯК ЕХАМРЬЕ приостанавливается.

Если какая-либо задача передает сообщение в точку ЕЙТКТ 1 в то время, когда выполнение задачи ТАЯК ЕХАМРЬЕ приостановлено в операторе ассерах происходит рандеву и выполняется тело оператора ассерк. Затем, вследствие наличия цикла задача переходит к выполнению оператора ассерк.

Если задач, пославших сообщение в точку еытку 1, больше нет, то выполнение приостанавливается снова в ожидании следуюшего сообщения. В этом простом примере рандеву может произойти двумя основными способами. Вопервых, задача-получатель ТАЯК ЕХАМРЬЕ может ожидать, пока другая задача передаст сообщение на вход ЕМТКУ 1. После того как сообщение будет перелано, произойдет рандеву.

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

)2.3. Задачи могут не иметь входных точек. Такие задачи называются акторачи (асгог шзкз), поскольку они не ожидают рандеву, лля того чтобы выполнить полези>ю работу. Акторы могут иметь рандеву с другими задачами, передавая нм сообщения. В отличие от акторов, некоторые залачи могут иметь входные точки, но не иметь кода вовсе, либо иметь небольшое количество команд, помимо операторов, связанных с принятием сообщений.

Таким образом, эти задачи могуг лишь реагировать на сообщения, поступающие от других задач. Такие задачи называются еерверамн (яегтег газ)~з). $23 12.5. Передача сообщений Отощать иееееен оиоаетовв еосо)я ТАЗК ЕХАМР). Е ЗЕНОЕВ е) мдие ТАЗК ЕХАМР1.Е оиидвет сообщнее от алии тйзк ехдмдье Зовете Поаиает сообщеиие и щиОсщивоаевйт сосо ВбЮЕЙ б) мне е ЗЕЙОЕЙ аещвет осеобеанее мдие ТАЗК„ЕХАМР).Е Рнс. 13.3. Два способа рандеву с задачей ТАЯХ ЕХИВРЕЕ Золача в языке Ада, передающая сообщения другой задаче, должна знать имя точки входа в эту задачу. Однако обратное неверно: входная точка задачи не обеана знать шея задачи, от которой она будет принимать сообщения.

Эта асимметрия контрастирует с языком, известным под названием СЕР (Сопвпншсабпй Вес)непба) Ргосеззев) (Ноаг, 197$). В языке СЕР, также использующем модель параллельности, основанную на перелвче сообщений, залечи принимают сообщения только от явно именованных задач. Недостаток этой модели заключастсл в невозможности создания библиотеки задач для общего исподюованнл. Обычный графический метод описания рандеву, в котором задача й передает сообщение задаче В, показан на рис. 12.4. Задачи в языке Ада являются типами, и в этом качестве они могут быть либо безымянными, либо именованными.

Задачу именованного типа в азыке Ада можно создать динамически с помощью оператора пете и ссылаться на нее с помощью указатела. В качестве примера рассмотрим следующий фрагмент программы. Киа)с Куре В))ГРЕВ За епкку ОВРОВ1т(чу))е: зп 1йтезеВ) ) епсху ГЕТСН)1)АЬ))Е: оис 1ЫТЕОЕВ) ) епс)г суре В1)Г РТВ За ессеаа ВУГГЕВ) 52Я Глава 12.

Параллельность опервтш вечере Рис 12.4. Графическое нредстаазение рандеву, вызванного саабщениеи, нервданныч задачей Л задаче В ВУГ: ВУГ РТК; В0Г:- пезч ВОГГЕВ; Задачи объявляются в разделе обьявлений пакета, полпрограммы или блока. Статически созданные залачи начинают свое выполнение одновременно с операторами кода, к которому присоединен этот раздел обьявлений. Например, задача, объявленная в главной программе, начинает свое выполнение одновременно с первым оператором в теле главной программы.

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

Если задача имеет несколько входных точек, и нужно, чтобы они могли получать сообщения в произвольном порядке, то в задаче используется оператор ве1есе для того, чтобы окружить им точки входа, как показано ниже: Е вд Ьоау ТВВК ЕХВМРЕЕ в 1оор ассврс Ег)ТКХ 1(формальные параметры) с)о егн$ Е))ТЕХ 1; ок ассерк ЕНТВХ 2(формальные параметры) с)о 1 2.5.

Передача сообщений епе ЕНТО 2з епс( вв1ессг епс( 1оор; епе ТАНК ЕХАМРЬЕг В этой задаче есть два оператора всаерк, каждый из которых имеет связанную с ним очередь. Действие оператора ае1есс при его выполнении заключается в проверке очередей, связанных с двумя операторами насера. Если одна из очередей пуста, а другая содержит хотя бы одно ожидающее сообщение, оператор ассврк, содержащий ожидающее сообщение, получает рандеву с задачей, пославшей первое полученное сообщение. Если оба оператора ассврк содержат пустые очереди, оператор зе1ест ожидает, пока не будет вызван один из входов.

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

Расширенный оператор ессврк выполняется только после выполнения связанного с ним (непосредственно предшествующего) оператора ассерк. Это выполнение расширенного оператора насера не является частью рандеву н может происходить параллельно с вызовом задачи. Выполнение отправителя сообщения приостанавливается на время ранлеву, но оно возобновляется (путем возврата в очередь готовых к пуску задач) по достижении конца оператора аасврк. Если оператор ассерк не имеет формальных параметров. наличия операторов с(о-епв не требуется, и оператор вссерк может состоять целиком из расширенного оператора ассврк. Такой оператор вааерк используется только лля синхронизации. 12.5.4. Синхронизация взаимодействия Каждый оператор ассорти может иметь присоединенный к нему предохранитель в виде оператора нЬеп, задерживающего рандеву.

Например, нпвп пос ГУЬЬ(ВУГГЕй! =а вссера 0ЕРОЯТТ(иЕИ НАЬУЕ] с(о Оператор аасерк вместе с оператором нпвп может быть либо открытым. либо закрытым. Если булевское выражение в операторе нпеп истинно в данный момент времени, то оператор всаерк называется открытым; если булевское выражение ложно, то оператор ассерк называется закрытым. Оператор вссерк„не имеющий предохранителя, всегда является открытым. Открытый оператор васерк доступен для рандеву; закрытый оператор аааерк не может участвовать в рандеву. Предположим, что в операторе ае1еск нахолятся несколько защищенных операторов аоаерк.

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

Характеристики

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее