Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 138

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 138 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1382019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

— Примеч. науч. ред. 11,2. Параллельное программирование 501 рование с языком (преподаватели университетов не чувствовали себя связанными такими протоколами, как АСЪ'8) привели к тому, что стали появляться предложения о пересмотре языка или создании расширений к нему. В 1988 г. комитет А1 РО вместе с 180 сформировали комитет Аг1а 9Х для пересмотра стандарта. В названии комитета символы ч9Х» появились в связи с тем, что дата окончания работ не могла быть даже приблизительно оценена, так как подобная работа всегда требует больше времени, чем ожидается.

В результате 9Х превратились в 95. Помимо решения проблем, связанных со стандартом 1983 г., основные изменения в новом стандарте были связаны с улучшением объектно-ориентированного подхода, иерархических библиотек и модели обработки задач. В этой главе описан язык стандарта 1983 г, н показано, как новый стандарт модифицирует эти возможности. Краткий обзор языка. Язык Ада предназначен для поддержки создания больших программ большими командами программистов.

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

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

В Ада предусмотрен широкий спектр встроенных типов данных, включая целые и вещественные числа, перечисления, булевы величины, массивы, записи, сим вольные строки и указатели. Абстракция и инкапсуляции определяемых программистом типов и операций обеспечиваются с помощью свойств пакетов. Механизм инкапсуляции позволяет сделать невидимым внутреннюю структуру объектов данных и подпрограмм, что дает возможность реализовать истинную абстракцию как данных, так и операций. Управление последовательностью действий внутри подпрограммы использует выражения и структуры управления на уровне операторов, подобные тем, что используются в языке Рааса!, Имеется огромный выбор средств для обработки исключительных ситуаций.

Управление последовательностью действий на уровне подпрограмм включает обычный вызов подпрограмм и возврат с рекурсией. Кроме того, исключительные ситуации могут приводить к завершению подпрограмм. Но наиболее замечательным аспектом возможностей управления последовательностью действий в Ада является обеспечение выполнения параллельных задач и управление ими с использованием системных часов и других механизмов планирования. Структуры управления данными в Ада используют статическую блочно-структурированную организацию, как в языке Рааса!.

Однако в языке также предусмотрены средства для нелокальных ссылок на имена типов, имена подпрограмм и другие идентификаторы в явной общей среде, определяемой пакетом, в которой часто 502 Глава 11. Распределенная обработка данных один и тот же идентификатор может быть использован во многих различных пакетах. Каждый формальный параметр в подпрограмме помечается ключевым словом 1п, оцт или зп оц1. Виртуальный компьютер Ада использует центральный стек для каждой отдельной задачи. Каждый стек используется для создания и уничтожения записей активации подпрограмм во время выполнения этой задачи.

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

Такая распределенная природа хранения данных и выполнения задач порождает специфические проблемы в реализации Ада, которых не найти ни в одном из остальных описанных в этой книге языков. 11.2.4. Задачи Идея, лежащая в основе задач, достаточно проста, Рассмотрим подпрограмму А, которая выполняется обычным образом. Если А вызывает подпрограмму В, то обычно выполнение А приостанавливается на то время, пока выполняется В. Но если В инициирована как зидичи, то А продолжает выполняться одновременно с В. Исходная последовательность выполнения теперь разделилась на две параллельных последовательности выполнения.

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

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

Управлениезадачами Определение задачи в программе мало отличается от определения обычной подпрограммы за исключением определения того, как задача синхронизируется и взаимодействует с другими задачами, Большая часть тела определения задачи состои~ из обычных объявлений и операторов, реализующих функциональность задачи, пока она работает независимо от других задач.

В языке Ас1а, который будет здесь нашим основным демонстрационным языком, определение задачи принимает следующий вид: дави нвво зз -Осьявления для синхронизации и взаииодейсгвия с другиии заданаии 11.2. Параллельное программирование 503 епд садк Ьооу маше тв -Обычные локальные обьявпения, свойственные дэбой подпротраиие Ьеойп -Поспедоватепьность операторов епш Инициализация выполнения задачи может принимать вид обычного вызова подпрограммы. Например, во многих реализациях Р!.У! задача В инициируется выполнением следующего оператора: са11 В(параиетры> Савы; В Ас!а используется несколько иной метод. Определение задачи, как сказано ранее, включается в набор объявлений некоторой более крупной программной структуры, такой, например, как главная программа. При входе в эту более крупную программную структуру все объявленные в ней задачи автоматически инициируются.

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

Когда какой-либо пользователь входит в систему с некоторого терминала, эта задача, Моей 'ьог, инициирует новую задачу, Тегшт па1, чтобы управлять взаимодействием с пользователем, работающим за этим конкретным терминалом. Когда пользователь выходит из систелты, задача тегш1 па1 завершается, Задача мопттог, конечно, работает непрерывно за исключением аварийной остановки всей системы. Когда несколько пользователей входят одновременно в систему с различных терминалов, то требуется несколько активаций задачи Тегш\ пв1, по одному на каждого пользователя.

Если задача инициирована с использованием обычного оператора вызова подпрограмм, как в Р! /1, тогда повторного выполнения оператора вызова достаточно для создания нескольких активаций. В языке Ат)а приведенное выше определение задачи может быть использовано только для создания одной активации задачи в соответствии с правилами неявной инициализации задач. Поэтому задача Моп1бог будет, вероятно, определена, как и ранее. Для задачи Тегшт па1 требуется несколько активаций, и они должны создаваться и инициироваться задачей Моп!'ьог по мере необходимости. В Ат)а задача Тегш1 па1 определяется как птип Таей: Савв Сите Тегштпа! тв -остальная част~ определения совпадает с обычныи опредепениеи епд; Определение Тегштпа1 как тип Тавк позволяет рассматривать активацию задачи как тип объекта данных в том же смысле, как обычное определение типа используется для определения класса объектов данных (см.

раздел 6.3). Создание и инициирование новой активации задачи тогда аналогично созданию нового объекта данных с использованием определения типа в качестве шаблона. Для создания нескольких активаций с именами А, В и С программист на языке Ат)а пишет соответствующие объявления так же, как объявления обычных переменных: А: Тегяп па1 В,С: Тепптпа1: 504 Глава 11.

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

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

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