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

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

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

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

Предположим, что две задачи А и В должны совместно использовать переменную ВБГ Я12В. Задачад добавляет2 к переменной В!)Г В12В, а залача В вычитает из нее !. Предположим также, что зтн арифметические операции выполняются в виде трехэтапного процесса: извлечение текущего значения, выполнение арифметической операции и возвращение нового значения назад. В отсутствие синхронизации конкуренции какова возможная последовательность событий и какие значения являются результатами этих операций? Предполагается, что начальное значение переменной В!)1' В2ЕЕ равно 6. 1О. Сравните механизмы синхронизации конкуренции в языках 5ача и Ада.

11. Сравните механизмы синхронизации взаимодействия в языках 1ача и Ада. 12. Что произойдет, если процедура монитора вызовет другую процедуру в том же самом мониторе? Упрсикиеиия гьФ Эдсгер Днйкстра, лауреат премии Тьюринга (АСМ, 1972), в настоящее время работает в университете г.Остин (шг.

Техас) (Опюегвйу о1 Техав-Ацвбп) в должности почетного профессора компьютерных наук (Зсйцпгос грег Сна) г (и Согпрц(ег Зсюпсе). Он был членом команды, начавшей разработку системы под названием "Тнв Мо)йргойгагпгп)пй Зузгепг", ставшей первой в мире операционной системой с параллельнымн процессами. Эта структура позволяла доказывать отсутствие опасности взаимной блокировки н другие факты, свидетельствующие о правильной работе системы. В 1976 году Дейкстра написал книгу "Наука программирования' ("А Оморйпе о1 Ргойгагпгпгпй"). Обработка исключительных ситуаций В этой главе сначала описываются основные понятия, связанные с обработкой исключительных ситуаций, в частности, исключительные ситуации, обнаруживаемые аппаратным и программным обеспечением; обработчики исключительных ситуаций и возбуждение исключительных ситуаций.

Затем формулируются и обсуждаются вопросы обработки исключительных ситуаций, в частности, связывание исключительных ситуаций с их обработчиками, продолжение выполнения, встроенные обработчики исключительных ситуаций и блокирование исключительных ситуаций. В оставшейся части главы описываются и анализируются средства обработки исключительных ситуаций в четырех языках программирования: Р1/1, Ада, С++ и 1ача. 13.1. Введение в обработку исключительных ситуаций Большинство компьютерных систем способны обнаружить некоторые ошибки выполнения программ, например, переполнение памяти при вычислениях с плавающей точкой. Многие языки программирования разрабатываются и реализуются таким образом, чтобы программа пользователя либо обнаруживала, либо пыталась обработать такие ошибки. В этих языках возникновение подобных ошибок просто приводит к прекращению выполнения программы и передаче управления операционной системе.

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

В случае достижения конца файла совершенно ясно, что данное условие не всегда рассматривается как ошибка. Во многих случаях это не более, чем признак того, что один вид обработки данных завершен и следует начать другой. Несмотря на очевидную разницу между достижением конца файла и событиями, которые всегда являются ошибками, например, неудавшийся ввод данных, в языке РОКТКАН такие ситуации обрабатываются одним и тем же механизмом. Рассмотрим следующий оператор КЕА0 языка РОКТКАХ: КЕА0(0И1Т=5, РИТ=1000, ЕКК=100, ЕЫ0=999) ХЕ16НТ Раздел ЕКК указывает, что управление должно быть передано оператору с меткой 100, если в операторе чтения возникнет ошибка. Раздел ЕН0 указывает, что управление должно быть передано оператору с меткой 999, если при выполнении операции чтения будет достигнут конец файла.

Таким образом, язык РОКТКА1Ч использует простые ветви и для ошибки ввода, и при достижении конца файла. Есть категория серьезных ошибок, которые не могут быть найдены аппаратным обеспечением, но ма~от обнаруживаться кодом, сгенерированным компилятором. Например, ошибки, заключающиеся в выходе индекса массива за пределы допустимого диапазона, почти никогда не диагностируются аппаратным обеспечением (было лишь несколько компьютеров, действительно обнаруживавших ошибки, связанные с выходом индекса за пределы допустимого диапазона, с помощью аппаратного обеспечения), однако они Глава 13. Обработка исключительных ситуаций приводят к фатальным ошибкам, которые часто выявляются только в процессе выполнения программы.

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

выполняемой компилятором. Многие современные языки программирования обеспечивают механизмы, которые могут действовать, лишь когда выполняются некоторые условия, обнаруживаемые аппаратным или программным обеспечением. Они также позволяют программисту самостоятельно определять другие необычные события и использовать те же механизмы для их обработки. Совокупность этих механизмов называется обработкой исктючительиых ситуаций. Возможно, основная причина, по которой некоторые языки программирования не содержат обработки исключительных ситуаций, — сложность их включения в язык. 13.1.1. Основные понятия Мы будем называть и ошибки, обнаруживаемые аппаратным обеспечением, например ошибки чтения диска, и необычные ситуации. например достижение конца файла (которые также обнаруживаются аппаратным обеспечением), исключительными ситуациями.

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

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

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

Это можно сделать с помошью блокирования исключительной ситуации. Заблокированную исключительную ситуацию позднее можно разблокировать. Отсутствие отдельных или особенных средств для обработки исключительных ситуаций в языке не препятствует обработке определенных пользователем и обнаруживаемых программным обеспечением исключительных ситуаций. Такие исключительные ситуации, обнаруживаемые в программном модуле, часто обрабатываются модулем, вызвавшим его. Один из способов обработки исключительных ситуаций — пересылка вспомо- 13.1. Введение в обработку исключительных ситуаций гательного параметра, который используется в качестве переменной состояния.

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

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

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

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

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

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

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