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

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

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

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

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

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

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

6.5.1. Структуры данных сообщения Сообщение представляет собой набор данных определенного типа. Существует три основных типа данных, располагаемых в сообщениях: + обычные данные, не интерпретируемые ядром и передающиеся получателю путем их физического копирования; 262 Глава 6. Межпроцессное взаимодействие + внешняя память (оцг-о1-!1пе), используемая для передачи больших объемов данных при помощи технологии «копирования при записи» (см.

раздел 6.7.2); + передача на порты или прием прав. Каждое сообщение имеет заголовок фиксированной величины, после которого сразу же располагается набор компонентов данных переменного размера (рис. 6.7). Заголовок сообшения содержит следуюшую информацию: + тип (гуре). Простой (только обычные данные) или сложный (в сообгце- ние включена информация внешней памяти или прав портов); + размер (з1ге). Указывается размер всего сообщения (тело «заголовок); + порт назначения (г1езг(наг!оп рогВ); + порт ответа (гер1у рогт), Отправка прав на порт, на который можно послать ответ. Поле устанавливается только в случае необходимости пересылки ответа отправителю; + идентификатор сообщения (теззаце 1Р). Используется приложениями по своему усмотрению. Заголовок сообщения Дескриптор типа Дескриптор типа Рис. 6.7. Сообщение системы Мась Перед отправкой сообщение создается в адресном пространстве задания- отправителя, На этом этапе для указания портов назначения и ответа применяются локальные имена задания.

Перед пересылкой сообгцения ядро системы преобразует локальные имена в значения, используемые получателем. 6.6. Сообщения 263 Каждый компонент содержит дескриптор типа, после которого следуют данные. Дескриптор представляет следующую информацию: + имя (пате). Указывает тип данных. Система МасЬ 2.5 распознает 16 различных значений этой переменной, в том числе внутреннюю память, права порта на отправку и получение или диапазон данных (Ьуге, (пгеяег (16 и 32 разряда), зтг!щ или геа1); + размер (5)хе).

Размер наборов данных, присутствующих в компоненте; + количество (пшпЬег). Количество наборов данных компонента; + флаги (Паяз). Указывает, находятся ли данные внутри сообщения или снаружи (оцт-о1-1(пе), а также необходимость освобождения памяти или прав на порты для задания-отправителя. 6.5.2. Интерфейс передачи сообщений Приложения могут пользоваться службой передачи сообшений различными способами: + отправлять сообшение, не ожидая ответа; + ожидать незапрашиваемые сообшения и обрабатывать их по мере получения; + отправлять сообщение и требовать ответа, но не ожидать его.

В этом случае приложение получает ответы асинхронно и обрабатывает его через достаточно болыпой промежуток времени; + отправлять сообщение и ожидать ответ. Программный интерфейс средств передачи сообщений поддерживает три функции, которые при совместном применении обеспечивают вышеперечисленные способы коммуникаций [2]. е59 5епс (в59 )1еабег 1* )11)г, В59 005100 Г 00510П, в59 11ве001 5 51ве005): е59 гсч (в59 пеадег 5* пег, в59 00110п 5 001100. в59 51ве005 1 11ве001): е59 грс (в59 'пеасег ч* )10г, в59 51ге т гсч 51ге. в59 005100 т 00510п, в59 11веовт ( 5епс (1ве00:, в59 11веовг 1 гесе1че (1ве005); Вызов 0159 5еп5( используется для отправки сообшения, не требуюшего ответа.

Этот вызов может быть заблокирован в случае отсутствия свободного 264 Глава 6. Межпроцессное взаимодействие места в очереди сообщений принимающего порта. Функция взд гсч также блокируется до тех пор, пока сообщение не будет получено. Каждый из этих вызовов поддерживает флаг 5ЕЙО Т1МЕООТ нли кЕч' Т1МЕООТ.

При их задании функция может быть заблокирована на период, не превышающий значения ВвеоцГ, задаваемого в миллисекундах. После исчерпания этого периода времени происходит возврат функции со статусом Ввео' оцт (превьгшение лимита времени). Флаг йЕч' МО 5ЕЙОЕк5 заставляет функцию взд гсч закончить работу, если больше ни одно задание не имеет прав на отправку сообщений в этот порт.

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

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

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

В следующих разделах описываются диапазон имен и структуры данных, используемые для представления портов, 6,6. Порты 265 6.6.1. Диапазон имен портов Каждое право порта представлено при помощи его имени. Имена портов— зто всего линять целые числа, диапазон возможных значений которых локален для каждого задания. Таким образом, один и тот же порт в разных заданиях может иметь различные имена. С этой точки зрения имена портов схожи с дескрипторами файлов 1)И!Х. Для каждого порта задания должно быть определено по крайней мере одно имя.

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

Каждый порт также представляется при помощи глобальной структуры данных ядра. Ядро производит преобразование локального имени порта в глобальное, то есть на адрес его глобальной структуры данных этого порта, а также обратное преобразование. Если говорить о дескрипторах файлов, то в системах 1ЛЧ1Х каждый процесс поддерживает таблицу дескрипторов в своей области ц, в которой хранятся указатели на объекты открытых файлов.

Однако в системе Маей принят другой метод преобразования, описание которого вы можете увидеть в разделе 6.6.3. 6.6.2. Структура данных порта Ядро поддерживает структуру данных 1егп рой с для каждого порта, содержащую следующую информацию: + счетчик ссылок па все имена (права) порта; + указатель па задание, являющееся обладателем прав на получение; + локальное имя порта для задания-получателя; + указатель на резервный порт. Если оригинальный порт будет освобожден, все сообщения будут передаваться на порт, указанный в качестве резервного; + двунаправленный связанный список сообщении; + очередь блокированных отправителей; + очередь блокированных получателей. Хотя задание может обладать правами на получение, отдельные его нити могут оставаться в режиме ожидания сообщений; + связанный список всех преобразований объекта; + указатель на набор портов; указатели на следующий и предыдущий порты набора (если данный порт является частью набора, см, раздел 6.8.3); + текущее число сообщений в очереди; + максимальное поддерживаемое количество сообщений («журнал заказов»).

266 Глава б. Межпроцессное взаимодействие 6.6.3. Преобразования портов В МасЬ поддерживается одно вхождение преобразования для каждого права порта. Все вхождения должны включать в себя набор записей <Тай, розт, 1оса! паве, Суре>, где тай — задание, обладающее правом, ротг — указатель на структуру данных ядра,!оса! паве — локальное имя порта, а переменная Суре соответствует получению или отправке.

Система МасЬ использует эти вхождения для различных целей: + вызов пззп зепй должен конвертировать <Тай, 1оса1 папзе> в ротс; + вызов пздо тсу должен конвертировать <Тай, рогг> в ~оса! папзе; + если задание освобождает порт, ядро отыскивает все права порта; + при удалении задания ядро отыскивает преобразования для этого зада- ния и освобождает соответствующие ссылки; + при удалении порта ядро отыскивает преобразования этого порта и пре- дупреждает об этом все задания, обладатощие правами на этот порт. Для реализации этих механизмов необходима технология, которая бы эффективно поддерживала все перечисленные операции. На рис. 6.8 показаны структуры данных преобразования порта системы МасЬ 2.5. В ОС МасЬ применяются две глобальные таблицы хэширования для быстрого поиска вхождений: таблица ТР ТаЫе хэширует вхождения, основанные на ~ай, ротт>, таблица Т~ СаЫе хэширует их по кортежу Тай, ~оса! паве>.

Структуры данных 1етпе! рогг Т и Тай содержат заголовки связанных списков преобразований для порта и задания соответственно. Структура задания Структура т1,теые Вхождение преобразований е .. - -" > ТР хеширование по номеру порта (рог1 пази Ы < — - — -ФТЬхзшироеение по имени порта Рис. 8.8. Преобразование портов в ОС Дяасп На рис. 6.8 вхождения а, б и в описывают преобразования различных портов одного задания, а вхождения в, г и д — преобразования одного и того 6,7. Передача сообщений 267 же порта для различных заданий. Вхождения б, г и е транслируются в одинаковый индекс в таблице ТР 1аЫе', в то время как вхождения д и ж хэшируются одинаковым индексом в таблице Т~ 1аЫе. Каждое вхождение преобразования описывается структурой роге йазй 1, содержащей следующую информацию: + 1ай (задание).

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

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

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

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