Главная » Просмотр файлов » Ю. Вахалия - UNIX изнутри (2003)

Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 38

Файл №1114670 Ю. Вахалия - UNIX изнутри (2003) (Ю. Вахалия - UNIX изнутри (2003)) 38 страницаЮ. Вахалия - UNIX изнутри (2003) (1114670) страница 382019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

4.6.2. Доставка и обработка Процесс ведет проверку на наличие сигналов при помощи функции |за[9(), вызываемой после обработки системного вызова или прерывания, но перед возвращением из режима ядра. Вызов [аз[9() производится также и в случаях ' Здесь, видимо, ошибка, н имеется а аиду все-такн поле р т|9. — Прим. ред. Опять же, должно быть, не р сцгйд, а р т|9. — Прим. ред.

4.6.1. Генерация сигналов После вырабатывания сигнала ядро проверяет структуру ргос процесса, которому этот сигнал предназначен. Если сигнал необходимо проигнорировать, то ядро на этом завершит обработку, не предпринимая никаких действий. В иных случаях он будет добавлен в набор ожидающих сигналов, расположенный в поле р сига[9'. Так как р сцгз!дт является всего лишь битовой маской, где каждому сигналу отводится только один бит, ядро не может записать в нее несколько повторных экземпляров одного сигнала. Следовательно, процесс будет знать только об одном приходе ожидающего сигнала. Если процесс находится в прерываемом сне и сигнал не заблокирован, то ядро системы разбудит такой процесс для получения сигнала.

Более того, сигналы управления заданиями, такие как 5165ТОР или 5ТОСО|9Т, напрямую приостанавливают или продолжают функционирование процесса без проведения их доставки. 4.7, Исключительные состояния 163 перехода в режим прерываемого сна или выхода из него (то есть пробуждения). Функция 1зз19() считывает установленные биты в поле р сцгз1В'. Если какой-либо бит установлен, то эта функция проверяет р НоЫ на предмет существования блокировки этого сигнала. Если сигнал не блокируется, то 1зз1д() сохраняет номер сигнала в р з19' и возвращает значение 1йОЕ Когда сигнал является ожидающим, ядро вызывает для его обработки рз1п(). Функция рз1о() проверяет информацию области ц, относящуюся к этому сигналу. Если не задан ни один обработчик, произойдет действие по умолчанию, обычно это завершение процесса.

Если необходимо вызвать обработчик, то происходит изменение маски блокируемых сигналов р (тоЫ, в которую добавляется текущий сигнал, а также любой другой сигнал, ассоциируемый с ним в маске ц з19гпай. Текущий сигнал не добавляется в маску в том случае, если для его обработчика был установлен флаг 5А МООЕЕЕй. Точно так же, если был установлен флаг 5А кЕ5ЕТНАНО, действия, задаваемые в массиве ц з1опа([), сбрасываются на установленные по умолчанию. Последним этапом действий является вызов зепЫ9(), производимый функцией рз19(), который заставляет процесс вернуться в режим задачи и передать управление обработчику.

Вызов зевс(з19О гарантирует, что после завершения работы обработчика процесс восстановит свое выполнение с того места программы, на котором он был прерван сигналом. Если используется альтернативный стек, вызов зепбз1О() загрузит обработчик с указанным стеком. Реализация функции зепЫВ() является машинно-зависимой, так как ей необходимо знать о деталях работы со стеком и о манипуляциях с контекстом. 4.7. Исключительные состояния Исключительныез состояния (исключения) возникают, когда программа оказывается в необычной ситуации, и происходит это, как правило, вследствие ошибки. Например, попытка обращения по несуществующему адресу в памяти или деление на ноль повлекут за собой исключение. При возникновении исключения срабатывает ловушка в ядре, которая вырабатывает сигнал, уведомляющий процесс о возникшем исключении.

В системе ())ч)1Х для оповещения процесса об исключениях служат сигналы. Тип вырабатываемого сигнала зависит от природы исключения. Например, попытка обращения по несуществующему адресу может повлечь за собой генерацию сигнала 5165ЕОЧ. Если в приложении указан для него обработчик, то ядро системы запустит его, Если нет, то выполняется действие по умолчанию (обычно это завершение работы процесса).

Такой подход позволяет каждой ' Все.таки, наверное, в маске ожилаюгпих сигналов р в1о, — Прим. ред. ь Вот тут, вилимо, должно быть поле р согв19. — Прим, ред. Этот развел описывает только аппаратные исключения. Их не следует путать с программными исключениями, поддерживаемыми различными языками программировании, такими как С++. 164 Глава 4. Сигналы и управление сеансами программе устанавливать свои собственные обработчики исключений. Некоторые языки программирования (например, Ада) обладают встроенными механизмами обработки исключений. Обработчики могут быть реализованы в библиотеках языка.

Исключения часто используются отладчиками. При отладке (или трассировке) программы вырабатывают исключения в точках останова, а также по завершении выполнения системного вызова ехес. Отладчик должен перехватывать эти исключения для контроля над программой. Отладчику также может понадобиться перехватывать и другие выбранные им исключения и сигналы, вырабатываемые отлаживаемой программой. Системный вызов р1гасе системы ()Ы1Х разрешает такой перехват (более подробно о его работе можно прочесть в разделе 6.2А). Существует ряд недостатков в том способе, которым ()лПХ обрабатывает исключения. Во-первых, обработчик исключения запускается в том же контексте, в котором это исключение произошло. Это означает, что обработчик не имеет доступа к полному контексту регистров, существовавшему во время возникновения исключения. Когда происходит исключение, ядро системы передает лишь некоторый объем его контекста обработчику.

Этот объем зависит от конкретной реализации (ЛЧ1Х, а также от аппаратной платформы, на которой работает система, Вообще говоря, одна нить должна работать с двумя контекстами — с контекстом обработчика и тем контекстом, в котором произошло исключение.

Во-вторых, механизм сигиалов изначально разрабатывался для однонитевых процессов. Системы 1ЛЧ1Х, поддерживающие многонитевые процессы, столкнулись с определенными сложностями в адаптации подобной схемы сигналов, И последний недостаток, о котором необходимо упомянуть, это ограничение системного вызова ртгасе, который позволяет отладчику, основанному на нем, контролировать только своих непосредсгпвенных потомков. 4.8. Обработка исключительных состояний в Масп Ограничения механизмов обработки исключений в ()лПХ стали причиной разработки нового унифицированного средства, представленного в системе МасЬ [41. Целью разработчиков ОС стало создание такого механизма, который, с одной стороны, оставался бы совместимым с традиционной УЫ1Х на бинарном уровне, а с другой — поддерживал многонитевые приложения.

Это средство стало не только частью описываемой системы, но и частью ОС ОБР/1, основанной на МасЬ. Разработчики системы МасЬ отказались от идеи запуска обработчика в тои же контексте, в котором произошло исключение. В традиционной ()л11Х вариант одного контекста применялся только потому, что обработчику требовался доступ и функционирование в том же адресном пространстве, где про- 4.8. Обработка исключительных состояний в Масс 185 изошло исключение. Так как система МасЬ является многонитевой, обработчик может стартовать как отдельная нить той же задачи.

(Нити и задачи ОС МасЬ подробнее описаны в разделе 6.4. Вкратце задача объединяет набор ресурсов, в том числе и адресное пространство. Нить выполняется внутри задачи и представлена контекстом выполнения и контрольной точкой. Традиционный процесс 1)Ы1Х в МасЬ можно интерпретировать как задачу, содержащую единственную нить.) В системе МасЬ выделяются два понятия: нить-кжертва» (нитке в которой произошло исключение) и ее обработчик.

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

Затем происходит обработка исключения и его очистка, что дает возможность нити-жертве продолжить свое функционирование. Если обработка исключения не смогла завершиться успешно, то нить, в которой оно возникло, будет завершена. Описанные взаимодействия в чем-то похожи на поток управления исключениями 1)Ы1Х, отличаясь от него тем, что обработчик функционирует как отдельная нить. В результате операции устагговки, ожидания, перехвата и очистклг составляют вместе удаленный вызов процедуры, реализованный в системе МасЬ через средства взаимодействия процессов г'1РС, см. о них подробнее в разделе 6.4). Обработчик Жертва Рис. 4.2.

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

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

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

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