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

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

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

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

Если потомок загружает новую программу, вызов ехес генерирует для потомка сигнал 5?6?КАР до того, как оп возвратится в пользовательский режим. Это дает возможность родительскому процессу получить контроль над потомком перед началом выполнения потомка. Обычно родительский процесс создает процесс-потомок, который в дальнейшем вызывает рггасе для того, чтобы предок имел возможность управлять им. Затем родительский процесс применяет вызов ига1г для ожидания события, изменяющего режим выполнения потомка. После возникновения такого события ядро системы будит родительский процесс.

Величина, возвращаемая ига?г, указывает на то, что потомок был приостановлен быстрее, чем завергцен, и передает информацию о событии, заставившем потомка приостановить работу. Затем родительский процесс может контролировать дочерний при помощи одной или нескольких команд р?гасе. Хотя появление системного вызова рггасе помогло создать многие отладчики, он, к сожалению, обладает несколькими недостатками и ограничениями; + процесс умеет управлять выполнением только своих прямых потомков. Если трассируемый процесс производит вызов ?ой, то отладчик не сможет контролировать новые процессы и их потомков; + вызов р?гасе является весьма неэффективным, так как требует нескольких переключений контекста только для того, чтобы передать одно слово от потомка его предку.

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

В результате пользователь загрузит командный интерпретатор с привилегиями суперпользователя. Для предотвращения возникновения такой ситуации в системах ???ч?Х либо отключают трассировку программ зегиЫ, либо запрещают действия зег?цг1 и зе?о?г? с последующим вызовом ехес. 6.3. Зуз1ет Ч 1РС 245 В течение длительного периода времени вызов рггасе оставался единственным инструментом программ-отладчиков. В современных системах 1)М1Х, таких как Я~К4 и Яо!аг1з, имеются более эффективные средства отладки, использующие файловую систему /ргос ~91, описываемую в разделе 9.11.2. Эти средства не обладают ограничениями, присущими р1~асе, и предоставляют различные дополнительные возможности, такие как отладка независимых друг от друга процессов или подключение отладчика к выполняющемуся процессу.

После появления технологии /ргос многие отладчики были переписаны заново и теперь не используют для своей работы вызов рггасе. 6.3. Зу81ет Ч!РС Средства, описанные в предыдуших разделах, не удовлетворяют требованиям многих приложений по взаимодействию процессов. Появление ОС Яузгеш Ъ' ознаменовалось значительными расширениями возможностей 1РС. Разработчики системы представили три механизма: семафоры, очереди сообщений и разделяемую память. Все они известны под общим названием Вузгеш Ъ' 1РС Щ. Изначально они создавались для поддержки приложений обработки транзакций.

Позже эти средства были взяты на вооружение большинством поставщиков систем 1)Х1Х, в том числе и теми, кто создавал ОС на основе В3Р. В данном разделе будут описаны возможности этих механизмов и показано, как они были практически реализованы в системе 131ч1Х. 6.3.1. Общие элементы Все три механизма очень схожи друг с другом в отношении программного интерфейса и своей реализации.

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

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

+ Права (реггп1зз1опз). Права файловой системы па чтение/запись/выполнение для владельца, группы и других пользователей. 246 Глава 6. Межпроцессное взаимодействие Процесс получает ресурс при помощи системных вызовов зйщ0е1, зещяе1 и щзцце~, передавая им ключ, необходимые флаги и другие аргументы, зависящие от используемого механизма.

Разрешенными флагами являются 1РС СкЕАТ и 1РС ЕХСС Первый из них запрашивает ядро о создании ресурса, если таковой не существует. Флаг 1РС ЕХСС применяется совместно с 1РС СкЕАТ и запрашивает ядро о возвращении ошибки, если требуемый ресурс уже существует. Если не указывается ни один из флагов, ядро ищет существующий ресурс с тем же ключом'. Если оно находит такой ресурс и если вызывающий процесс обладает правами доступа к нему, то ядро возвращает идентификатор ресурса (гезоцгзе 1Р), который может быть в дальнейшем использован для быстрого обнаружения ресурса. Каждый механизм обладает управляющим системным вызовом (зйщс1~, зещсй и щздс6), предоставляющим несколько различных команд. Эти команды включают в себя 1РС 5ТАТ и 1РС 5ЕТ, которые применяются для получения и установки статусной информации (специфичной для каждого механизма), а также 1РС йМ10 для освобождения ресурса.

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

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

Если это случается слишком часто, система может такой ресурс выгрузить, так как он, по крайней мере, занимает определенный объем памяти, которому можно найти другое, более полезное применение. Правами на выполнение команды 1РС йМ10 обладают только процессы, являющиеся создателем, текущим владельцем ресурса или обладающие привилегиями суперпользователя. Удаление ресурса влияет на все процессы, обращающиеся к нему в текущий момент, следовательно, ядро системы должно ' Если ключ явлается специальной переменной 1РС Рй1ЧАТЕ ядро создаст новый ресурс. Этаг ресурс недоступен при помо~пи других вызовов дег (так как ядро будет каждый раз создавать еще один ресурс), и, следовательно, вызываюгций процесс будет обладать исключительцыиа правами па его владение. Владелец может использовать ресурс совместно со своими потомками, которые наследуют его через вызов Йню 6.3.

Яув1егп Ч (РС 247 удостовериться в том, что процессы постепенно и согласованно обрабатывают такое событие. Специфика предпринимаемых действий зависит от конкретного применяемого механизма и будет подробнее описана в следующих разделах. Для реализации интерфейса каждый тип ресурса обладает собственной таблицей ресурса фиксированного размера. Размер таблицы является настраиваемым и ограничен общим количеством каждого типа ресурсов, одновременно поддерживаемых системой. Каждый элемент таблицы содержит общую структуру 1рс репп, а также данные, специфичные для определенного типа ресурса. Структура 1рс репп хранит общие атрибуты ресурса (ключ, идентификаторы создателя и владельца, привилегии), а также последовательность чисел, являющуюся счетчиком, который увеличивается при каждом новом использовании элемента таблицы.

При создании ресурса ! РС пользователем ядро возвращает идентификатор ресурса, который вычисляется по формуле: Ы - зео * гав)е з(ге + 1пбех; где дед — последовательность чисел для этого ресурса, Та)з(е з(ге — размер таблицы ресурса и (пг)ех — индекс ресурса в таблице. Эта формула гарантирует создание нового Ы, если элемент таблицы используется повторно, так хак значение зег) инкрементируется. Это защищает процессы от доступа к ресурсам, использующим устаревший идентификатор. ПРИМЕЧАНИЕ Термин «инкрементирование переменной. означает, что ее значение увеличивается на единицу. кДекремент» означает уменьшение значения на единицу.

Эти термины взяты из языка С, где применяются операторы инкремента (++) и декремента ( — )'. Пользователь передает Ы в качестве аргумента последующим системным вызовам, производящим действия над этим ресурсом. Ядро транслирует Ы ддя обнаружения ресурса в таблице по формуле 1вбех = 1б з ~ао)е з1ге: 6.3.2. Семафоры Семафоры [6] — это объекты, находящиеся в диапазоне целых чисел, которые поддерживают две операции, Р() и Ч()'.

Примитив Р() применяется для декремента значения семафора, если новое значение оказывается меньше нуля, то он блокируется. Операция Ч() используется для инкремента значения, при ' Впервые операторы автоувеличения и автоуменьшения появились в компиляторе языка  — предшественника С, они были введены К. Томпсоном для собственных нужд при работе с РПР-7. Позже популярность С и ()Х! Х на РПР-10 обусловилась во многом атими режимаия, как пишет Л. Ритчи в Тле Песе(ортепт о) йе С бапдиаде, — Прим. ред.

г Имена Р() и у() происходят ат голландских слов, азначаюших соответствуюшие операции. 248 Глава 6. Межпроцессное взаимодействие этом если результат оказывается равным нулю или больше, то Н() пробуждает нить или процесс. Эти операции являются неделимыми. Семафоры можно применять для реализации различных протоколов сиихроиизации.

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

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

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

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

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