СРВ    

  Практика ~ 
  Тема 01 ~ 
  Тема 02 ~ 
  Тема 03 ~ 
  Тема 04 ~ 
  Тема 05 ~ 
  Тема 06 ~ 
  Тема 07 ~ 
  Тема 08 ~ 
  Тема 09 ~ 
  Тема 10 ~ 
  Тема 11 ~ 
/Студентам/СРВ/Тема 11

Тема 11
Сетевой диспетчер в QNX.

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

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

Для обеспечения взаимодействия процессов по сети ОС QNX использует виртуальные цепи (virtual circuits), с каждой из которых связан некоторый буфер. Память под такой буфер выделяется при создании виртуальной цепи; буфер содержит данные, которые подлежат передаче на другой узел.

На рисунке ниже показаны потоки данных и последовательность, в которой соответствующие подсистемы ОС QNX получают управление при посылке сообщения на удаленный узел (или ответе на сообщение):

Рис. Посылка сообщения через сеть в QNX

Далее приведены этапы посылки сообщения (ответа на сообщение):

  1. Процесс вызывает примитив посылки сообщения (или ответа на сообщение), микроядро помещает данные из адресного пространства этого процесса в буфер виртуальной цепи, которая обозначена при вызове указанных примитивов
  2. Микроядро ставит в очередь, предназначенную для обработки сетевым диспетчером, запись, идентифицирующую источник сообщения, удаленного получателя сообщения, а также указатели на соотвествующую область в буфере виртуальной цепочки; все эти записи упорядочены в хронологическом порядке. Если оказалось, что до этого очередь была пуста, то прокси диспетчера ресурсов "взводится" с целью уведомления о том, что появились данные для обработки
  3. Сетевой диспетчер обрабатывает записи в упомянутой очереди.
  4. Сетевой диспетчер передает информацию драйверу сетевого адаптера, которая необходима последнему для отправки соотвествующих данных узлу назначения
  5. Драйвер сетевого адаптера производит передачу

На следующем рисунке показаны схема движения данных и передачи управления при приеме сообщения:

Рис. Прием сообщения через сеть в QNX

Прием сообщения происходит в следующей последовательности:

  1. Драйвер сетевого интерфейса помещает сообщение из сети в соответствующий буфер виртуальной цепочки
  2. Драйвер сетевого интерфейса информирует диспетчер сети о том, что прием сообщения завершен (то есть имеется сообщение/сообщения)
  3. Сетевой диспетчер уведомляет микроядро о том, что имеется сообщение для какого-то из процессов
  4. Микроядро помещает данные из буфера виртуальной цепочки в адресное пространство соотвествующего процесса

Сетевой диспетчер (так же как и диспетчеры устройств и файловой системы) не содержит кода, привязанного к конкретной модели сетевого интерфейса. Весь такой код помещет в драйверы сетевых интерфейсов. Взаимодействие между сетевым диспетчером и такими драйверами осуществляется через очереди, размещаемые в области памяти, доступной как диспетчеру, так и драйверам. На драйвера сетевых интерфейсов возлагаются следующие задачи: формирование пакетов (packetization), обеспечение правильного порядка пакетов (sequencing), а также осуществление ретрансмиссий в случае, если необходима надежная передача данных с гарантированной доставкой.

Каждый узел в сети QNX идентифицируется двумя числами: физический идентификатор и логический идентификатор. Физический идентификатор - это синоним MAC-адреса. Логический идентификатор состоит, в свою очередь, также из двух чисел - логического идентификатора сети и логического индентификатора узла в этой сети.

Необходимость введения логического идентификатора обусловлена следующими недостатками идентификатора физического. Во-первых, при соединении двух или более сетей может возникнуть конфликт. Ээто актуально не для всех сетевых технологий - так, для Ethernet, где MAC-адрес уникален в мировом масштабе, проблема конфликта физических адресов не может возникнуть. Для технологий, где на физический адрес узла отведено 1-2 байта, эта проблема может возникнуть (например, Arcnet - на идентификатор сетевого интерфейса такого типа отведено всего 8 бит). Во-вторых, при соединении сетей эти сети могут оказаться в смысле используемой технологии передачи данных (Ethernet, Token Ring, Arcnet и т.д.)

Логический идентификатор (узла или сети) - это целое число, назначаемое администратором системы. Как правило, номера узлов назначаются последовательно, начиная с 1. Номер 0 зарезервирован для обозначения локального узла. Взаимное отображение физических и логических адресов производится сетевыми диспетчерами.

Если узел входит в несколько сетей, то сетевой диспетчер обеспечивает, во-первых, балансировку загрузки сетей и, во-вторых, повышенную отказоустойчивость.

Дата последней модификации: 2009-07-25


/Студентам/СРВ/Тема 11

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

Valid HTML 4.0 Strict Valid CSS!