Обучающий сайт
Именование в QNX
Введение Связь между процессами Архитектура QNX Именование в QNX QNX в реаьном времени



          В распределенных системах всё к чему можно получить программный доступ называется сущностью.

          Каждая сущность имеет имя. Имя может быть адресом или идентификатором. Для доступа к сущности используется точка доступа являющейся сущностью. Имя точки доступа называется адресом сущности.  Адрес – это специальный тип имени, указывающий на точку доступа к сущности. Сущность может поменять точку доступа, а точка доступа может быть перенацелена на другую сущность. Адрес является локально-зависимым именем и указывает на конкретное размещение сущности. Что неудобно с точки зрения прозрачности и смены местоположения. По этой причине в распределенных системах удобней пользоваться локально-независимым именем, называемым идентификатором.

          Имена в распределенных системах могут быть двух видов:
  • Глобальное имя. Обозначает одну и туже сущность в независимости от того, где в системе это имя используется.
  • Локальное имя. Интерпретация локального имени зависит от того, где в системе это имя используется.
              Пространство имен становится доступным пользователю, с помощью службы именования реализуемых на серверах имен. Пространство имен реализуется иерархически.
              Распределённость пространства имен по множеству серверов имен затрудняет процесс поиска информации, который называется разрешением имени.
              Каждый клиент имеет доступ локальной процедуре разрешения имен, которая реализует процесс разрешения. Имеются два способа реализации разрешения имен:
  • Итеративное разрешение имен. Процедура разрешения имен связывается последовательно, с каждым сервером имен начиная с корневого сервера глобального уровня, до тех пор пока не найдет конечную сущность. Серверы имен каждый раз возвращают промежуточные результаты поиска процедуре разрешения имен.
  • Рекурсивное разрешение имен. Процедура разрешения имен связывается с корневым сервером глобального уровня, который не возвращает процедуре промежуточные результаты, а передаёт их следующему обнаруженному серверу имен и далее каждый последующий сервер передаёт промежуточные результаты поиска очередному обнаруженному серверу имен, пока не будет найдена конечная сущность.
              Теперь рассмотрим, как реализуется именование в QNX.




      Именование В QNX


           QNX стимулирует разработку приложений, которые разбиты на несколько взаимодействующих процессов. Такое приложение, которое существует как группа взаимодействующих процессов, имеет большие возможности распараллеливания и может быть распределено по сети для лучшей производительности.
              Однако разделение приложений на взаимодействующие процессы требует ряда специальных соображений. Чтобы взаимодействующие процессы могли установить связь между собой, они должны иметь возможность определить идентификаторы друг друга. Например, допустим, что имеется сервер базы данных, который может обслуживать произвольное количество клиентов. Клиенты могут запускаться и прекращать работу в любое время, однако сервер всегда остается доступным. Как процессы-клиенты узнают идентификатор процесса-сервера базы данных с тем, чтобы послать ему сообщение?
              В QNX процессы могут присваивать себе символьные имена. В контексте одного узла процесса могут зарегистрировать эти имена у Менеджера процессов на том узле, на котором они выполняются. Остальные процессы могут затем запросить у Менеджера процессов идентификатор процесса, ассоциированный с определенным именем.
              Ситуация становится более сложной, если мы рассмотрим сеть, в которой сервер обслуживает клиентов, находящихся на различных узлах. Поэтому в QNX предусмотрена поддержка как глобальных , так и локальных имен.  Глобальные имена определены для всей сети, в то время как локальные имена определены только для того узла, на котором они зарегистрированы.
                  Глобальные имена начинаются с косой черты (/). Например:


              Чтобы сделать возможным использование глобальных имен, хотя бы на одном узле сети должен быть запущен процесс, известный как определитель имен (утилита nameloc). Этот процесс ведет учет всех зарегистрированных глобальных имен.
              В каждый момент времени в сети могут быть запущены до десяти определителей имен. Каждый хранит идентичные копии всех активных глобальных имен. Такая избыточность гарантирует нормальное функционирование сети, даже если один или несколько узлов, обеспечивающих определение имен, выйдут из строя одновременно.
              Чтобы зарегистрировать имя, процесс сервер использует функцию Си qnx_name_attach(). Чтобы определить процесс по имени, процесс клиент использует функцию Си qnx_name_locate().

    ! ! ! Вы можете пройти тест нажав эту ссылку

    Тест




     Введение  Связь между процессами  Архитектура QNX  Именование в QNX  QNX в реальном времени  Тест