Внутренняя архитектура
Внутренняя архитектура
Как уже говорилось, драйвер, реализующий поставщика услуг уровня канала данных, состоит из двух частей: аппаратно-зависимой и аппаратно-независимой. Соответственно драйвер хранит отдельные структуры данных, необходимые для работы этих частей. Архитектура драйвера приведена на рис. 6.40.
Рис. 6.40. Архитектура драйвера DLPI
Для каждого обслуживаемого драйвером сетевого адаптера создается отдельная структура данных DL_bdconfig_t, описывающая характеристики адаптера и содержащая необходимую для управления адаптером информацию, а также статистику, являющуюся частью MIB (Management Information Base). Эта структура используется аппаратно-независимой и зависимой частями совместно, в том числе и для передачи определенной информации между ними.
В частности, эта структура содержит следующие поля:
major Старший номер устройства, связанного с данным сетевым адаптером io_start Адрес начала области ввода/вывода io_end Адрес конца области ввода/вывода mem_start Адрес начала базовой памяти mem_end Адрес конца базовой памяти irq_level Уровень прерывания шах_saps Максимальное число точек доступа (SAP) flags Флаги состояния адаптера mib Список статистических данныхПоле flags может включать следующие флаги:
BOARD_PRESENT Устанавливается драйвером после успешной инициализации адаптера BOARD_DISABLED Устанавливается драйвером при неудачной инициализации адаптера. Этот флаг также может быть установлен, если драйвер определит нарушения в функционировании адаптера TX_BUSY Указывает на отсутствие ресурсов, например отсутствие необходимых буферов для передачи кадра TX_QUEUED Указывает на наличие кадров, ожидающих передачиДля каждого подключенного пользователя услуг, или, другими словами, для каждой активной SAP драйвер создает структуру данных DL_sap_t, описывающую тип и характеристики точки доступа. Приведем описание некоторых полей этой структуры:
Дополнительные характеристики SAP хранятся в поле flags, которое может включать следующие флаги:
RAWCSMACD Указывает, что через SAP передаются только кадры формата IEEE 802.3 SNAPCSMACD Указывает, что через SAP передаются кадры формата LLC SNAP PROMISCUOUS Указывает, что SAP работает в режиме отсутствия фильтрации кадров (promiscuous mode), при котором SAP получает копии всех кадров независимо от адреса точки доступа, которой они предназначаются. Данный режим применяется, например, при создании приложений мониторинга уровня канала данных PRIVILEGED Указывает, что управление точкой доступа требует привилегий суперпользователяКроме того, драйвер хранит и обновляет статистическую информацию о сетевом интерфейсе, представляющую собой набор счетчиков, связанных с работой адаптера, и ассоциированных с ним точек доступа. Пользователь может получить интересующую его статистику с помощью соответствующей команды ioctl(2). Приведем в качестве примера описание некоторых из этих счетчиков:
ifInOctets Общее число октетов, полученных адаптером ifOutOctets Общее число октетов, переданных адаптером ifOutUcastPkts Число переданных однонаправленных (unicast) пакетов ifOutNUcastPkts Число переданных групповых (multicast) и широковещательных (broadcast) пакетов ifInDiscards Число полученных, но отброшенных правильных пакетов ifInUcastPkts Число полученных однонаправленных (unicast) пакетов ifInNUcastPkts Число полученных групповых (multicast) и широковещательных (broadcast) пакетов ifInErrors Число пакетов, полученных с ошибкой ifUnknownProtos Число полученных пакетов, которые были отброшены из-за неправильной SAP адресата ifOutQlen Число пакетов, находящихся в очереди на передачу ifOutErrors Число пакетов, переданных с ошибкой etherCollisions Число коллизийАппаратно-независимая часть драйвера обрабатывает все запросы, поступающие от пользователя услуг уровня канала данных. Для этого в драйвере определены следующие функции (часть из них являются стандартными точками входа STREAMS):
DLopen() Точка входа xxopen(). Эта функция инициализирует SAP, связанную с данным потоком. Функция проверяет наличие флага BOARD_PRESENT и в случае его отсутствия возвращает ошибку. DLclose() Точка входа xxclose(). Эта функция сбрасывает текущее состояние SAP и устанавливает его равным DL_UNBOUND. DLwput() Точка входа xxput() для очереди записи. Эта функция интерпретирует примитивы DLPI и вызывает соответствующие процедуры драйвера. В случае, если примитив содержит команду уровня канала данных, например, запрос на передачу датаграммы, вызывается функция DLcmds(), которая производит формирование кадра и вызов функции передачи кадра аппаратно-зависимой части драйвера. В случае, когда примитив содержит команду ioctl(2), вызывается функция DLioctl(). DLrsrv() Точка входа xxservice() для очереди чтения. Функция DLrecv() помещает каждый кадр, полученный от аппаратно-зависимой части драйвера, в очередь чтения потока, ассоциированного с адресуемой SAP. В зависимости от формата кадра (протокола MAC) вызывается соответствующая процедура, извлекающая данные и помещающая их в сообщение DL_UNITDATA_IND (для услуги без предварительного установления связи и без подтверждения), которое направляется вверх по потоку пользователю услуг. Кроме того, DLrsrv() просматривает список активных SAP для возможного копирования сообщения в очереди потоков, имеющих тот же адрес точки доступа. Поскольку функция DLrecv() помещает кадр в очередь первого найденного потока с требуемым адресом SAP (см. описание функции ниже), описанное поведение DLrsrv() гарантирует, что все пользователи услуг уровня канала данных, зарегистрировавшие один и тот же адрес SAP, получат свою копию пакета данных. DLrecv() Функция обработки полученного пакета. Эта функция определяет формат пакета и помещает его в очередь потока, ассоциированную с адресуемой SAP. Обычно эта функция вызывается функцией обработки прерывания при получении очередного кадра данных от сетевого адаптера.Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
14.5.2. Внутренняя универсализация
14.5.2. Внутренняя универсализация Если необходимо универсализировать несколько файловых имен, запуск нескольких подоболочек с помощью popen() будет неэффективным. Функция glob() позволяет универсализировать имена файлов без запуска каких-либо подпроцессов, однако за счет
Внутренняя оптимизация
Внутренняя оптимизация Работа с внутренними факторами – хронологически приоритетная и чрезвычайно важная часть поискового продвижения. Перед тем как начать покупать ссылки, необходимо провести скрупулезный аудит сайта на предмет его корректности с точки зрения SEO.
Внутренняя оптимизация
Внутренняя оптимизация Поисковой системе «приятнее» такая страница интернет-магазина, которая структурирована и сверстана по блочному типу. Предпочтительно делить контентную область страницы на несколько составляющих: заголовок, краткое описание, полное описание,
Архитектура
Архитектура Если вы соблюдаете три закона и пишете тесты раньше рабочего кода, вы сталкиваетесь с дилеммой. Часто вы точно знаете, какой код нужно написать, но три закона приказывают сначала написать модульный тест, который не пройдет, потому что код еще не существует!
Внутренняя реализация функций базы данных
Внутренняя реализация функций базы данных Как мы уже говорили в главе 3, функции базы данных AS/400 реализуются по разные стороны MI. В предыдущих разделах обсуждалась, в основном, база данных, реализованная как часть DB2/400 поверх MI. Давайте теперь рассмотрим некоторые
Внутренняя организация дерева с двоичным основанием
Внутренняя организация дерева с двоичным основанием Внутренняя форма хранения дерева с двоичным основанием оптимизирована как с точки зрения производительности, так и занимаемого пространства. Первая базовая структура для дерева с двоичным основанием была создана
Внутренняя структура буферного кэша
Внутренняя структура буферного кэша Буферный кэш состоит из буферов данных, размер которых достаточен для размещения одного дискового блока. С каждым блоком данных связан заголовок буфера, представленный структурой buf, с помощью которого ядро производит управление
Архитектура TCP/IP
Архитектура TCP/IP Архитектура семейства протоколов TCP/IP основана на представлении, что коммуникационная инфраструктура включает три объекта: процессы, хосты, и сети. Процессы являются основными коммуникационными объектами, поскольку между процессами, в конечном итоге,
Глава 4 Внутренняя оптимизация
Глава 4 Внутренняя оптимизация При работе с крупными проектами внутренние факторы приобретают приоритетное значение. Даже небольшие изменения в шаблонах сайта могут существенно увеличить трафик из поисковых
3.1. Внутренняя структура описания уровней зрелости
3.1. Внутренняя структура описания уровней зрелости Каждое описание уровней зрелости разбивается на составные части. Разбиение каждого уровня зрелости, кроме первого, варьируется от кратких обзоров уровня до его рабочего определения в ключевых практиках, как показано на
Inner Shadow (Внутренняя тень)
Inner Shadow (Внутренняя тень) Следующий эффект – Inner Shadow (Внутренняя тень) – создает иллюзию того, что объект вогнутый и его края отбрасывают тень внутрь. Перед применением данного эффекта мы также настраиваем все необходимые параметры. Изменения значений параметров можно
32 Re: Архитектура
32 Re: Архитектура Что произошло с архитектурой программного обеспечения? В типичном приложении для малого бизнеса или в стандартном коммерческом пакете зачастую бывает трудно обнаружить присутствие хоть какой-то структуры. Архитектура — будь то внутренняя
5.1.3. Внешняя и внутренняя чистка компьютера
5.1.3. Внешняя и внутренняя чистка компьютера Регулярно, несколько раз в неделю нужно протирать пыль (это назовем внешней чисткой). Делать это следует сухой тряпкой, а для большего эффекта лучше купить специальные чистящие салфетки, чтобы протирать монитор, системный блок,
Внутренняя кибербезопасность: сколько и кому платит американский Department of Homeland Security за свою защиту? Михаил Ваннах
Внутренняя кибербезопасность: сколько и кому платит американский Department of Homeland Security за свою защиту? Михаил Ваннах Опубликовано 15 сентября 2013 Бог виноделия Дионис, что родился в пламени перунов Зевса, испепеливших его мать Семелу, был очень
ПАРАЛЛЕЛИ: Внутренняя Пустота
ПАРАЛЛЕЛИ: Внутренняя Пустота Автор: Георгий ПачиковВ наше время любой мало-мальски образованный человек постоянно пользуется Интернетом. С его помощью мы решаем множество вопросов. Даже правописание можно проверить — залезаешь в Интернет и смотришь, как то или иное