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

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

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

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

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

12.7.4. Синхронизация конкурвнции Синхронизация взаимодействия в языке 5ача осуществляется с помощью методов надг и посзйу, опрелеленных в классе ОЬз еог, базовом классе всех классов в языке зача. Все классы, кроме класса ОЬз еос, наследуют зти методы. Метод надс помещен в цикл, проверяющий условие законного доступа. Если зто условие не выполняется, поток помещается в очередь ожидания. Метод поп11у предназначен для того, чтобы сообщить ожидающему потоку. что ожидаемое событие произошло.

Методы на 1г и пос1 й у можно вызвать только внутри синхронизированного метода, поскольку они используют блокировку, наложенную на объект таким методом. Метод назт может возбудить исключительную ситуацию 1псеггорзес(Вхоерс1оп, являюшу)ося потомком исключительной ситуации Вхоерсдоп, Слеловательно, любой код, 12.7. Потоки языка Зача вызывающий метод назг, должен также перехватывать исключительную ситуацию 1пгеггцрсес(ехсергзоп. Предположим, что условие, выполнения которого мы ожидаем, называется ГпеСопс(1суоп. Тогда метод на1г удобно использовать следующим образом: сгу ( нЬ11е (! гЬеСопс(1г1оп) науг (); — Выполнить все, что требуется, — когда условие СЬеСопс(1С1оп станет истинным саФс)з (1псеггцрсес(Ехсерс1оп шургоЬ1еш) Оператор агу определяет область видимости обработки исключительной ситуации, а метод саесЬ является обработчиком исключительной ситуации в операторе егу.

Следующая программа реализует круговую очередь для хранения значений типа Епв, Она иллюстрирует синхронизацию взаимодействия и синхронизацию конкуренции. // Очередь // Этот класс реализует круговую очередь для хранения целых // чисел. Он содержит конструктор для размещения и // инициализации очереди заданного размера. В нем описаны // синхронизированные методы для вставки чисел в очередь // и удаления их из нее с1аев Оуеце ( ргйчаге 1пг [] с)цег ргйчаге Епг пехг1п, пехГОцс, 1111ес), с(це51гег риЬ11с Оцеце (1пг язге) ( с(це = пои Епг [яьге]; 1111ес( = О; пехс1п 1; пехСОцс = 1; ~)це51ге = я1ге; ] //** конец конструктора Оцеце риЬ11с вупспгоп1вес( чс1с( с(ероя1г (1пг 1сет) сгу ( ъгЬ11е (1111ес( = с(це51ге) науг (); с)це[пехс1п] - 1сещ; пехс1п = (пехс1п % с)це51ге) + 1( 1111ес(++г пог11у() г ) //** конец оператора Егу сагсь(1пгеггцргес(ехсерс1оп е) () ) //** конец метода с(ероя1г 536 Глава 12. Параллельность роЫ1о вупоЬгопйвей йпс бетой() ( йпс 1тев = 0; игу ( нМ1е (Е111еа == 0) наат () ] 1тев = с(це[пехтОцт); 1111ес(-; пот1бу(); //** конец оператора агу оаеоь(1птетгцргеоехсерт1оп е) () геецгп и';ею; ) //** конец метода бе" с]; //** конец класса Яоеое Заметим, что обработчик исключительной ситуации (сааоЬ) здесь ничего не делает.

Классы для определения объектов-производителей и объектов-потребителей, которые могли бы использовать кяасс 0цеце, можно определить след1юшим образом: с1ааа Ргос(осет вхееп6я ТЛтеао ( ргачаев лиепе Ьоабег; роЬ11о Ртос(осет(0оеое Чое] ( Ьоббег = ~)ое> ) рЫ. Ы () ( апе пен 1текн нЬ11е (Ггое) ( // — Произвести переменную пен 1гев Ьо1йег.с(ероя1 (пен 1тев]; ) о1ааа Сопяовег ехтеп6я ТЬгеас( ( ргачасе 0оеце Ьоййетз роЬ11о Сопсцвег(Яоеое с(ое) ( Ьоййег = с(ое) ) риЫйс чоас( гцп() ( йпа ятогес( 1сев; иЬз.1е (тгое) // — Использовать переменную ятогеб 1тев Ьоййег.йетсЛ(ятотес( 1тев); Слелуюший код создает объект класса 0оеое, а также объекты классов Ргобосег и Сопяцвег, приписанные к объекту класса 0оеое, и начинает нх выполнение: Яоеое Ьц111 = пен 0оеое(100); Ргос(осег ргоцосег1 = пвн Ргос(осег(Ьойй1)) Сопсцвег сопсцвег1 пен Сопсцвег(Ьобб1); 12.7. Потоки языка Зача 5ЗУ ргос)осег1.есагс()) сопвижег1.вгагг()) При необходимости мы могли бы определить оба класса Ргос(цсег и Сопвожег как реализации интерфейса йцппаЬ1е, а не как подклассы класса Тпгеас(.

Единственная разница заключается в первой строке, которую теперь можно записать так: с1еве Ргос(осег зжр1вжвпве йиппаЬ1е Чтобы создать и запустить объект такого класса, необходимо создать объект класса Тпгеао, связанный с этим объектом. Это иллюстрируется следующим кодом; ргоаисвг р ос)осег1 = пвн Ргос(исег(Ьийй1) г Тйгеас) ргос)цсегТЬгеас( = пвм ТЬгеас)(ргооисег1) ргос)осегТЛгеас).всагг()) 12.7.5. Оценка Поддержка параллельности в языке 3ача относительно проста, но эффективна.

В языке )ача можно легко создать и мониторы, и семафоры. 12.8. Параллельность на уровне операторов В этом разделе мы кратко рассмотрим вопросы разработки языка для поддержки параллельности на уровне операторов. Целью разработки языка является создание механизма, который программист мог бы использовать для того, чтобы информировать компилятор о возможных способах отображения программы на многопроцессорную архитектуру. Хотя язык АЕОО(.68 содержал семафоры, которые предназначались для обеспечения параллельности на уровне операторов, здесь подобное их использование не обсуждается.

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

Хорошо разработанные компиляторы отлично справляются с этим процессом, но можно достичь намного большего, если программист получит возможность предоставлять компилятору информацию о возможной параллельности, которую можно было бы использовать. 12.8.1. Язык Н!Яй-Рейапнаасе РОЯТЯАМ Язык Н(8Ь-Рег(оппапсе ГОКТКАН (НРГ) (АСМ, 1993Ь) — это набор расширений языка ГОКТКАН 90, предназначенных лля того, чтобы предоставлять компилятору информацию, способствующую оптимизации выполнения программ на многопроцессорных компьютерах.

Язык НРГ содержит как новые операторы спецификации, так и внутренние, или встроенные, подпро(раммы. В этом разделе обсуждаются только некоторые из новых операторов. 53$ Глава ) 2. Параллельность Основные операторы спецификации в языке НРЕ предназначены для указания количества процессоров, распределения данных между запоминающими устройствами этих процессоров, а также выравнивания данных в памяти. Операторы спецификации в языке НРЕ появляются в программе в виде специальных комментариев. Кажлый из них начинается префиксом ! НРРЯ, где знак ! — это символ, начинающий строку комментария в языке ЕОКТКА)ч 90. Этот префикс делает их невидимыми лля компиляторов языка ЕОКТКАН 90, но легко распознается компиляторами языка НРЕ.

Спецификация РКОСЕЯЯОК5 имеет следующий вил; !НРГЯ РКОСЕЯЯОКЯ ргосв (и) Этот оператор указывает компилятору количество процессоров, которые могут использоваться колом, сгенерированным для этой программы. На основе этой информации совместно с другими спецификациями компилятор определяет, как именно распределены данные между запоминающими устройствами, связанными с этими процессорами. Оператор 015ТК1ВОТЕ указывает, что данные являютея распределенными, а также отмечает вид используемого распределения.

Его форма такова: !НРГ5 015ТК1ВОТЕ (вид) ОИТО ргосв :: список идентификаторов В этом операторе внд распределения данных может залаваться ключевым словом ВЬОСК или СУСЫС. Список илентификаторов — это имена массивов, подлежащих распределению. Переменные, которые поллежат распределению вида ВЬОСК, разделяются на п одинаковых групп, каждая из которых состоит из смежных наборов элементов массивов, равномерно распрелеленных между запоминающими устройствами всех процессоров.

Например, если массив из 500 элементов под названием Ь15Т распределен как ВЬОСК между пятью процессорами, то первые 100 элементов массива ЫЯТ будут размещены в памяти первого процессора и т.д. Распределение СУСЬ1С указывает на то, что отлельные элементы массива циклически размещаются в запоминающих устройствах процессоров. Например, если массив Ь15Т распределен как СУСЫС между пятью процессорами, то первый элемент массива Ь1ЯТ будет размещен в памяти первого процессора, второй элемент — в памяти второго процессора и т.д. Форма оператора АЫ ОМ такова: АЫОБ массив1 элементов Х1ТН массив2 элементов Оператор АЫОИ используется для связи между распределениями двух массивов.

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

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

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

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