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

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

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

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

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

за исключением оператора аооврк. Оператор вв1воц может содержать особый оператор квхайпацв. который выбирается только тогда, когда данный оператор открыт, а любой другой оператор аооврк закрыт. Прн выборе оператора вв1воц задача уже закончила свою работу, но еше не завершилась. Завершение залачи обсуждается ниже в этом разлеле. 12.$.5. Синхронизация конкурвнции ) войства, описанные выше, обеспечивают синхронизацию взаимодействия и связь между задачами. Далее мы обсуждаем, каким образом можно обеспечить взаимно исключающий доступ к совместно используемым структурам данных.

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

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

Это очень похоже по эффекту на наш пример монитора. пав)е ВОГ ТАЯХ Ев вакху ОЕРОБ1Т(1ТЕМ : Еп 1ИТЕСЕК)т впцку ГЕТСН(1ТЕМ : оиц 1МТЕОЕК)) ( ВОГ ТАЯХ) сав)т )тот(у В0Г ТАЯХ Ев ВУГЯ12Е : оопвкапй 1НТЕЯЕК : 100т ВОГ : аккау (1..ВОГЯ12Е) оЕ 1НТЕОЕКт ГТЬЬЕР : 1ИТЕОЕК каттдв О..ВОГБ12Е : От МЕХТ 1Нг БРЕХТ СОТ : 1ИТЕОЕК катзов 1..ВОГЯ12Е : 1т )звдЫ 1оор вв1вок м)твп Г1ЬЬЕО < ВОГБ12Е =) $2У 12.5. Передача сообщений ассврс ОЕР081Т(1ТЕМ : 1п 1НТЕОЕК) сзо ВОГ(НЕХТ 1Н) : 1ТЕМ] впсз РЕР081Т; ИЕХТ 1Н: (НЕХТ 1Н аосз ВОГЯ1ЕЕ) + 1; Г1ЬЬЕО : Г1ЬЬЕО +1; ок иЬеп Г1ЬЬЕО > О => ассерк ГЕТСН(1ТЕМ : оис 1НТЕОЕК) с]о 1ТЕМ : ВОГ(НЕХТ ООТ): епс( ГЕТСН; НЕХТ ОПТ : (НЕХТ ООТ асс] ВОГ81ЕЕ] + 1; Г1ЬЬЕО := Г11 ЬЕΠ— 1; апс( ва1ескз впс$1оор; а ВОГ ТАЯХ] В этом примере оба оператора ассерк явлаотся расширенными.

Онн позволяют выполнять задачу ВОГ ТАБК параллельно с вызывающими ее задачами. Задачи производителя и потребителя, которые могуг использовать задачу ВОГ ТАЯК, имеют слелуюший вид: Каа]с РКОООСЕКс гав]с СОНЯОМЕК; Еав]с Ьобу РКОРОСЕК Ев НЕИ ЧАЬОЕ : 1НТЕСЕК; Ьесап 1оор — произвести значение переменной НЕИ ЧАЬОЕ— ВУГ ТйЯК.ОЕР081Т(НЕИ ЧА1ЛЕ); епс( 1оор> апс( РКОРОСЕКз Еав]с Ьос$у СОНБОМЕК ь ° ЯТОКЕО ЧАЬУЕ : 1НТЕОЕК] Ьасзп 1оор ВОГ ТйБК.ГЕТСН(ЯТОКЕО ЧАЬОЕ]; — использовать значение переменной ЯТОКЕР ЧАЬОЕ— а]. р; впсз СОНЯОМЕК] 12.$.6. Зеве(йзиеиие йездечи Рассмотрим понятие '"завершение задачи". Выполнение задачи закончено, если управление достигло конца его тела кода.

Это должно когда-то произойти, посколысу при этом возникает исключительная ситуация, для которой не предусмотрен обработчик. (Обработка исключительных ситуаций в языке Ада описна в главе 13.) Если задача не создала никаких других задач, называемых подчиненными, то она завершается, когда ее выполнение заканчивается. Задача, создавшая подчиненные задачи, завершается, когда закончено выполнение ее кода, и все подчиненные ей задачи завершены. Задача может закончить свое выполнение во время ожидания в открытом операторе Квкждпаее. $28 Главе 1 2. Параллельность В этом случае задача завершается, только когда ее хозяин (блок, подпрограмма или задача, создавшая ее) и все задачи, зависящие от хозяина, либо завершены, либо пребывают в состоянии ожидания в открытом операторе Фехжз.паке.

В этом случае все задачи завершжотся одновременно. Блок нли подпрограмма не завершаются, пока все их подчиненные задачи не завершатся. 12.5.7. Прнврнтвтьз Как именованным, так и безымянным типам могут быть присвоены приоритеты. Это осуществляется с помощью указания компилятору. Например: ргайжа рг1огТФу(выражение)) Значение выражения опрелеляет относительный приоритет задачи или опрелеления типа задачи, в котором она появляется. Возможный диапазон значений приоритета зависит от конкретной реализации.

Наивысший возможный приоритет может быть задан с помощью приписывания слова 1авФ к типу ргзогЕФ у, который определяется во встроенном пакете Яузгеа. Например, приведенный ниже код определяет наивысший приоритет в любой реализации ргасвяа ргзогзгу(Яувгеа.рг1огзсу'1ааФ) г Приоритеты задач в языке Ада применяются только к задачам, находящимся в состоянии готовности. Они используются ллл определения порядка, в котором планировщик выбирает залачн для дальнейшего перевода их в текущее состояние. Если есть три задачи, ожидающие своей очереди в некотором операторе аооерт„и они имеют разные приоритеты, эти приоритеты не влияют на то, какая именно задача первой получит рандеву. 12.$.Б. Бннялрньзв евд(нзфвры Если доступ к структурам данных должен быть управляемым, и эта структура данных не инкапсулирована в некоторую задачу, то для обеспечения взаимно исключающего доступа следует использовать лругие средства.

Например, можно создать залачу бинарного семафора длл использования вместе с задачей, ссылающейся на данную структуру данных. Такую задачу бинарного семафора можно было бы определить следующим образом: Фав)с В1НАНУ ЯЕИАРНОНЕ 1в епггу НА1Т) епкгу НЕЕЕАЯЕ; епа В1МАВг' ЯЕИАРНОНЕ) Фаей Ьоау В1ЙАНУ ЯЕИАРНОВЕ дв Ьепдп 1оор аааерФ НА1Т) аосерФ НЕЕЕАЯЕ> а1. р; епс1 В1МАНУ ЯЕИАРНОНЕ) Цель этой задачи — гарантировать, что операции ХА1Т и ВЕЕЕАЯЕ выполняются поочередно. 1 2.5. Передача сообщений Задача ВХХАНУ ВЕИАРНОВЕ иллюстрирует упрощения, возможные, если сообщения в языке Аба используются только для синхронизации, не передавая при этом никаких данных. Особенно следует отметить простую форму операторов аааерк, не нуждающихся в наличии тела.

Задачу В1МАНУ ЯЕИАРНОНЕ для взаимно исключающего доступа к совместно используемой структуре данных можно использовать точно так же, как и семафоры в примере из раздела 12.3. Конечно, это применение семафоров страдает от все тех же потенциальных проблем, обсуждаемых здесь. Подобно семафорам мониторы можно моделировать с помощью возможностей задач в языке Ада. Задачи обеспечивают неявный взаимно исключающий доступ точно так же, как и мониторы. Таким образом, модель задач в языке Аба поддерживает как семафоры, так и мониторы.

12.5.9. Оценка В отсугствие распределенных процессоров с независимыми запоминающими устройствами выбор между мониторами и передачей сообщений в качестве средства синхронизации конкуренции в некотором смысле является делом вкуса. Синхронизация взаимодействия при передаче сообщений меньше зависит от правильного использования, чем семафоры (которые требуются вместе с мониторами). Таким образом, передача сообщений немного лучше, чем остальные средства, даже в среде с совместно используемой памятью. Однако лля распределенных систем передача сообщений является лучшей моделью обеспечения параллельности, поскольку она естественным образом поддерживает концепцво отдельных процессов, выполняемых параллельно на отдельных процессорах. 12.б. Параллельность в языке Ада 95 Одной из целей при разработке языка Ада было улучшить возможности языка Ада 83 для поддержки параллельности.

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

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

Защищенные обьекты а языке Ада 95 обеспечивают альтернативный способ поддержки синхронизации конкуренции, который не нуждается в применении рандеву. Защищенный объект не является задачей; он больше похож на монитор. Доступ к защищенным объектам можно получить либо через защищенные полдрограммы, либо через входы, похожие иа входы задач. Защищенные подпрограммы могут быть либо за- 530 Глава 12.

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

Эти вхолные вызовы обеспечивают доступ, похожий на доступ к данным, включенным в задачу. Проблему буфера, решенную с помощью задачи в языке Аба в прелылушем подразделе, можно проще решить с помощью защищенного объекта. ргогесгес( ВОГГЕН Дв воску ОЕРОЯ1Т(1ТЕМ : хп ?ИТЕОЕН); влеку ГЕТСН(1ТЕМ : оик ?НТЕОЕН)) ркхчаке ВОГЯ1ЕЕ : оопасапк ?ИТЕОЕН := 100; ВОГ : аккау (..ВОГЯ?ЕЕ] ов 1ИТЕОЕВ; Г?ЕОЕО : ?НТЕОЕН калде 0..ВОГЯ?ЕЕ := 0; НЕХТ ?И, НЕХТ ООТ : 1НТЕОЕН калде 1..ВАРЯ?ЕЕ : 1; епс? ВОГГЕРГ ргогескес( Ьоау ВОГГЕК Ее васку 0ЕРОЯ?Т(1ТЕМ : Еп 1(ЧТЕОЕН) нЬеп Г?Е? Е0 < ВОГЯ?ЕЕ Ее Ьвдзп ВОГ(НЕХТ 1Ч) := 1ТЕМ; (ЧЕХТ ?И : (НЕХТ 1(Ч аос? ВОГЯ?ЕЕ) + 1; Г???Е0: Г???ЕО + 1? впо 0ЕРОЯ1Т; епску ГЕТСН(1ТЕМ : оик ?ИТЕОЕК) нЬеп Г?ЬЕЕ0 > 0 Ее Ьедсп ?тем : ВОГ(нехт Оот); НЕХТ ООТ :- (НЕХТ Оот аос? ВОГЯ?ЕЕ) + 1; епс? ГЕТСН; епч? ВБГГЕР; 12.6.2.

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

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

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

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