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

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

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

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

Чтобы ожидать обращения к любой одной из трех точек входа, задача В выполняет следующую охраняемую команду: ве1ест ассерт Кеаеу1 бо - Копирование данных от Я1 в локальную область В елец ог ассерт Кеасу2 оо - Копирование данных от А2 в локальную область В 510 Глава 11. Распределенная обработка данных елб: ог асссрс йеабуЗ бо - Копирование данник от АЗ в локальную обдаст> В ело. елб ве1есех Когда выполнение В доходит до этого оператора, программа ожидает, пока А1, А2 или АЗ не си гнал изируют об обращении к соответствующей точке входа.

Это обращение принимается (если одновременно поступило несколько сигналов, то принимается только один из них), и рандеву происходит в соответствии с описанным выше алгоритмом. Заметим, что явные сторожевые команды >гггел условие => и блок е1 5Е здЕСь опУщены, так как все три оператоРа ассерг должны быть доступны для выполнения, когда доходит очередь до выполнения оператора Зе)ест. В некоторых случаях, однако, явные сторожевые команды могут быть и включены. Например, каждое устройство ввода может иметь соответствующий статус состояния, указывающий, есть или нет сбои вето работе. Тогда рандеву может быть поставлено в зависимость от состояния каждого устройства: ве1есв наел Оегдсе15татнв " ОИ => ассерс йеабу1 бо ...

епб ; ог нлел Оеюсе25татив - ОИ -> ассерв йеабу2 Оо . ело ; ог нлеп Оен1се35татнв = соппесбеб => ассерг йеабуЗ бо ., епб ; е1ве .. - ни одно из устройств ввода не готово; внполняен другие действия епб ве1есв; Задачи и вычисления в режиме реального времени Программа, которая должна взаимодействовать с устройствами ввода-вывода или другими задачами в течение некоторого фиксированного промежутка времени, называется работающей в режиме реального нремени. Программам, осуществляющим мониторинг работы автомобиля, управляющим микроволновой печью и даже электронными часами, для корректного функционирования приходится своевременно реагировать за время менее 100 мс. Так, например, задача А, которая должна организовать рандеву с задачей В, возможно, не имеет права задерживать свое выполнение на период времени более некоторого фиксированного значения, а обязана продолжить его, даже без начала выполнения рандеву.

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

Специальные требования, предъявляемые к вычислениям в режиме реального времени, приводят к тому, что язык программирования должен включать некоторое явное понятие ыремени. В Ада существует определенный в языке пакет, называемый Са1епбаг, который включаеттип)тце(вревтя) и функцию с)осд(часы). Задача, ожидающая рандеву, может использовать часы, как в следующем фрагменте кода: ве1есг Оатайеабу. ог де1ау 0.5 - ндатн не более 0.5 секунде ела ве1ест: 11.2. Параллельное программирование 511 Это — охраняемая команда без каких-либо сторожевых команд, поэтому любая из альтернатив доступна для выполнения, что позволяет избежать краха системы, если в течение 0,5 с не произойдет обращения к точке входа 0а1акеайу. Задачи и совместно используемые данные Каждая отдельная обработка любой нз многочисленных структур управления подпрограммами, описанных в разделе 1!.1 (например, сопрограммы, обработчики исключений, задачи и планируемые подпрограммы), приводит к несколько различающимся структурам для совместно используемых данных.

В большинстве случаев эти структуры являются простыми вариациями концепций, рассмотренных в предыдущих разделах, но задачи из-за параллельности их выполнения порождают специфические проблемы. Здесь следует рассмотреть два вопроса: 1) управление памятью; 2) взаимное исключение доступа. Управление памятью в задачах. Задачи определяются как несколько последовательностен выполнения, выполняющихся одновременно в пределах одной программы. Обычно онн представляют собой несколько наборов процедур, которые выполняются независимо и взаимодействуют между собой с помощью механизмов взаимного исключения доступа, описываемых ниже. Для каждой задачи требуется свой механизм управления памятью — как правило, для этой цели используется стек. Поскольку каждая задача выполняется независимо, разработчику реализации языка приходится решать непростую задачу: как реализовать несколько стеков на одном компьютере.

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

Все пространство памяти используется очень эффективно, хотя, как сказано в разделе 10.43, некоторая часть памяти может оставаться неиспользованной изза ее фрагментации в куче. В случае, если памяти заведомо достаточно, можно применить схему, изображенную на рис. 11.3, 6. Каждая задача имеет свой собственный стек в отдельном месте памяти. Опять-таки, в случае перекрытия любым стеком сегмента памяти, выделенного под следующий стек, программа будет вынуждена остановиться. С учетом использования современных систем виртуальной памяти это решение достаточно эффективно. Например, адресное пространство программы может состоять из миллиарда адресов ячеек, по из них только несколько тысяч фактически используемых будут находиться в реальной памяти.

Если стеки различных задач будут достаточно далеко расположены друг от друга в виртуачьной памяти (например, адрес первой ячейки в стеке задачи 1 будет 100 000000, в стеке задачи 2— 200 000 000, в стеке задачи 3 — 300 000 000, в куче — 400 000 000), то вероятность их перекрывания достаточно мала. Таким образом, для управления этими несколькими стеками можно использовать систему управления памятью операционной системы, в которой выполняются задачи, при этом потребуется лишь незначительная помощь со стороны транслятора языка помимо установления начальных адресов стеков. 512 Глава 1т.

Распределеннаяобработкаданных Рис. т 1.3. Записи активаций в среде задач а — один стек; о — несколько стеков; в — одна куча Для систем с ограниченными ресурсами памяти (например, если отсутствуег система виртуальной памяти или адресное пространство виртуальной памяти сравнительно мало) рассмотренный выше способ может оказаться неприменимым.

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

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

По мере инициирования задач каждой из них требуется выделять область для размещения нового стека. Тогда исходный стек делится на несколько новых стеков, которые, в свою очередь, также могут разделяться, если инициируются но- 11.2, Параллельное программирование 513 вые задачи. Такая структура управления памятью известна как стек-кактус, по! скольку ее схематическое изображение (рис. 11А) напоминает очертания гигантского кактуса цереус.

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

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

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