русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Основные механизмы организации распределенных вычислений


Дата добавления: 2014-11-28; просмотров: 874; Нарушение авторских прав


QNX является сетевой операционной системой, которая позволяет организовать эффективные распределенные вычисления. Для этого на каждой машине, называ-


346________________ Глава 10. Краткий обзор современных операционных систем

емой узлом, помимо ядра и менеджера процессов должен быть запущен уже упо­мянутый ранее менеджер Net. Менеджер Net не зависит от аппаратной реализа­ции сети. Эта аппаратная независимость обеспечивается за счет сетевых драйверов. В операционной системе QNX имеются драйверы для сетей с различными техно­логиями: Ethernet и FastEthernet, Arcnet, IBM Token Ring и др. Кроме того, имеет­ся возможность организации сети через последовательный канал или модем.

В QNX версии 4 полностью реализовано встроенное сетевое взаимодействие типа «точка-точка». Например, сидя за машиной А, вы можете скопировать файл с гиб­кого диска, подключенного к машине В, на жесткий диск, подключенный к маши­не С. По существу, сеть из машин с операционными системами QNX действует как один мощный компьютер. Любые ресурсы (модемы, диски, принтеры) могут быть добавлены к системе простым их подключением к любой машине в сети. QNX обес­печивает возможность одновременной работы в сетях Ethernet, Arcnet, Serial и To­ken Ring, более одного пути для связи и балансировку нагрузки в сетях. Если ка­бель или сетевая плата выходит из строя и связь через эту сеть прекращается, система автоматически перенаправит данные через другую сеть. Все это происходит в режиме подключения (on-line), предоставляя пользователю автоматическую се­тевую избыточность и увеличивая эффективность взаимодействия во всей системе.

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



Сетевое взаимодействие является узким местом в большинстве операционных систем и обычно создает значительные проблемы для систем реального времени. Для того чтобы обойти это препятствие, разработчики операционной системы QNX создали собственную специальную сетевую технологию FLEET и соответствую­щий протокол транспортного уровня FTL (FLEET Transport Layer). Этот прото­кол не базируется ни на одном из распространенных сетевых протоколов вроде IPX или NetBios и обладает рядом качеств, которые делают его уникальным. Ос­новные его качества зашифрованы в аббревиатуре FLEET, которая расшифровы­вается следующим образом:

- Fault-Tolerant Networking — QNX может одновременно использовать несколь­
ко физических сетей, при выходе из строя любой из них данные будут «на лету»
перенаправлены через другую сеть;

- Load-Balancing on the Fly — при наличии нескольких физических соединений
QNX автоматически распараллеливает передачу пакетов по соответствующим

сетям;


Сетевая операционная система реального времени QNX______________________ 347

- Efficient Performance — специальные драйверы, разрабатываемые фирмой QSSL для широкого спектра оборудования, позволяют использовать это оборудова­ние с максимальной эффективностью;

- Extensable Architecture — любые новые типы сетей могут быть поддержаны путем добавления соответствующих драйверов;

- Transparent Distributed Processing — благодаря отсутствию разницы между пе­редачей сообщений в пределах одного узла и между узлами нет необходимости вносить какие-либо изменения в приложения, для того чтобы они могли взаи­модействовать через сеть.

Благодаря технологии FLEET сеть компьютеров с операционными системами QNX фактически можно представлять как один виртуальный суперкомпьютер. Все ре­сурсы любого из узлов сети автоматически доступны другим, и для этого не нужно создавать никаких дополнительных механизмов с использованием технологии RPC. Это значит, что любая программа может быть запущена на любом узле, при­чем ее входные и выходные потоки могут быть направлены на любое устройство на любых других узлах [18].

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

Достигаются все эти удобства за счет того, что поддержка сети частично обеспечи­вается и микроядром (специальный код в его составе позволяет операционной системе QNX фактически объединять все микроядра в сети в одно ядро). Разуме­ется, за такие возможности приходится платить тем, что мы не можем получить драйвер для какой-либо сетевой платы от кого-либо еще, кроме фирмы QSSL, то есть использоваться может только то оборудование, которое уже поддержива­ется. Однако ассортимент такого оборудования достаточно широк и периодиче­ски пополняется новейшими устройствами.

Когда ядро получает запрос на передачу данных процессу, находящемуся на уда­ленном узле, он переадресовывает этот запрос менеджеру Net, в подчинении кото­рого находятся драйверы всех сетевых карт. Имея перед собой полную картину состояния всего сетевого оборудования, Net может отслеживать состояние каж­дой сети и динамически перераспределять нагрузку между ними. В случае, когда одна из сетей выходит из строя, поток данных автоматически перенаправляется в другую доступную сеть, что очень важно при построении высоконадежных сис­тем. Кроме поддержки собственного протокола, Net обеспечивает передачу паке­тов TCP/IP, SMB (Server Message Block)' и многих других, используя то же сете-

1 Сетевая технология взаимодействия клиента и сервера, разработанная фирмой IBM и активно ис­пользуемая компанией Microsoft в своих операционных системах. В последнее время компания Microsoft стала называть ее CIFS (Common Internet File System).


348________________ Глава 10, Краткий обзор современных операционных систем

вое оборудование. При этом производительность компьютеров с операционной системой QNX в сети приближается к производительности аппаратного обеспече­ния — настолько малы задержки, вносимые операционной системой.

При проектировании системы реального времени, как правило, необходимо обес­печить одновременное выполнение нескольких приложений. В QNX/Neutrino' параллельность выполнения достигается за счет использования потоковой модели POSIX, в которой процессы в системе представляются в виде совокупности пото­ков выполнения. Поток является минимальной единицей выполнения и диспет­черизации для ядра Neutrino; процесс определяет адресное пространство для по­токов. Каждый процесс состоит минимум из одного потока. Операционная система QNX предоставляет богатый набор функций для синхронизации потоков. В отли­чие от потоков, само ядро не подлежит диспетчеризации. Код ядра исполняется только в том случае, когда какой-нибудь поток вызывает функцию ядра, или при обработке аппаратного прерывания.

Напомним, что операционная система QNX базируется на концепции передачи сообщений. Передачу и диспетчеризацию сообщений осуществляет ядро системы. Кроме того, ядро управляет временными прерываниями. Выполнение остальных функций обеспечивается задачами-администраторами. Программа, желающая со­здать задачу, посылает сообщение администратору задач (модуль task) и блокиру­ется для ожидания ответа. Если новая задача должна выполняться одновременно с порождающей ее задачей, администратор задач task создает ее и, отвечая, выдает порождающей задаче идентификатор созданной задачи. В противном случае ни­какого сообщения не посылается до тех пор, пока новая задача не закончится сама по себе. Тогда в ответе администратора задач будут содержаться конечные харак­теристики закончившейся задачи.

Сообщения различаются количеством данных, которые передаются от одной зада­чи точно к другой задаче. Данные копируются из адресного пространства первой задачи в адресное пространство второй, и выполнение первой задачи приостанав­ливается до тех пор, пока вторая задача не вернет ответное сообщение. В действи­тельности обе задачи кратковременно взаимодействуют во время выполнения пе­редачи. Ничто, кроме длины сообщения (максимальная длина может достигать 64 Кбайт), не заботит QNX при передаче сообщения. Существует несколько про­токолов, которые могут быть использованы для этой цели.

Основные операции над сообщениями: послать, получить и ответить, а также несколько их вариантов для обработки специальных ситуаций. Получатель всегда идентифицируется своим идентификатором задачи, хотя существуют способы ас­социировать имена с идентификатором задачи. Наиболее интересные варианты операций включают в себя возможность получать (копировать) только первую часть сообщения, а затем получать оставшуюся часть такими кусками, какие по­требуются. Это может быть полезным, поскольку позволяет сначала узнать длину сообщения, а затем динамически распределить принимающий буфер. Если необ­ходимо задержать ответное сообщение до тех пор, пока не будет получено и обра-

' Neutrino — один из проектов микроядерной ОС.


Сетевая операционная система реального времени QNX______________________ 349

ботано другое сообщение, то чтение первых нескольких байтов дает вам компакт­ный «обработчик», через который позже можно получить доступ ко всему сообще­нию. Таким образом, задача оказывается избавленной от необходимости хранить в себе большое количество буферов.

Другие функции позволяют программе получать сообщения только тогда, когда она уже ожидает их приема, а не блокироваться до тех пор, пока не прибудет сооб­щение. Можно также транслировать сообщение другой задаче без изменения иден­тификатора передатчика. Задача, которая транслировала сообщение, в транзакции невидима.

Кроме того, операционная система QNX обеспечивает объединение сообщений в структуру данных, называемую очередью. Очередь сообщений — это просто область данных в третьей, отдельной задаче, которая временно принимает передаваемое со­общение и немедленно отвечает передатчику. В отличие от стандартной передачи сообщений, передатчик немедленно освобождается для того, чтобы продолжить свою работу. Задача администратора очереди — хранить в себе сообщение до тех пор, пока приемник не будет готов прочитать его; делает он это, запрашивая сообщение у ад­министратора очереди. Любое количество сообщений (ограничено только возмож­ностью памяти) может храниться в очереди. Сообщения хранятся и передаются в том порядке, в котором они были приняты. Может быть создано любое количество очередей. Каждая очередь идентифицируется своим именем.

Помимо сообщений и очередей в операционной системе QNX для взаимодействия задач и организации распределенных вычислений имеются так называемые пор­ты, которые позволяют формировать сигнал одного конкретного условия и меха­низм исключений, о котором мы уже упоминали ранее.

Порт подобен флагу, известному всем задачам на одном и том же узле (но не на разных узлах). Он имеет только два состояния, которые могут трактоваться как «присоединить» и «освободить», хотя пользователь может интерпретировать их по-своему, например «занят» и «доступен». Порты используются для быстрой про­стой синхронизации между задачей и обработчиком прерываний устройства. Они нумеруются от нуля до 32 максимум (на некоторых типах узлов возможно и боль­ше). Первые 20 номеров зарезервированы для операционной системы.

С портом может быть выполнено три операции:

- присоединить порт,
- отсоединить порт,

- послать сигнал в порт.

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


350________________ Глава 10. Краткий обзор современных операционных систем

Любая задача может посылать сигнал в любой порт независимо от того, была она присоединена к нему или нет (предпочтительно, чтобы не была). Сигнал подобен неблокирующей передаче пустого сообщения. То есть передатчик не приостанав­ливается, а приемник не получает какие-либо данные; он только отмечает, что кон­кретный порт изменил свое состояние.

Задача, присоединенная к порту, может ожидать прибытия сигнала или может пе­риодически читать порт. Система QNX хранит информацию о сигналах, передава­емых в каждый порт, и уменьшает счетчик после каждой операции «приема» сиг­нала («чтение» возвращает счетчик и устанавливает его в нуль). Сигналы всегда принимают перед сообщениями, давая им тем самым больший приоритет над со­общениями. В этом смысле сигналы часто используются обработчиками прерыва­ний для того, чтобы оповестить задачу о внешних (аппаратных) событиях. Дей­ствительно, обработчики прерываний не имеют возможности посылать сообщения и должны использовать сигналы.

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

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

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

Одна задача может установить одно или несколько исключений для другой зада­чи. Эти исключения могут быть комбинацией системных исключений и исключе­ний, определяемых приложениями, обеспечивая другие возможности для межза­дачного взаимодействия.

Благодаря такому свойству QNX, как возможность обмена посланиями между за­дачами и узлами сети, программы не заботятся о конкретном размещении ресур­сов в сети. Это свойство придает системе необычную гибкость. Так, узлы могут произвольно добавляться в систему и изыматься из системы, не затрагивая сис­темные программы. QNX имеет эту конфигурационную независимость благодаря концепции виртуальных задач. У виртуальных задач непосредственный код и дан­ные, будучи на одном из удаленных узлов, возникают и ведут себя так, как если бы они были локальными задачами какого-то узла со всеми их атрибутами и приви­легиями. Программа, посылающая сообщение в сеть, никогда не направляет его точно. Сначала она открывает виртуальный канал. Виртуальный канал связывает между собой все виртуальные задачи. На обоих концах такой связи имеются буфе­ры, которые позволяют хранить самое большое послание из тех, которые канал


Семейство операционных систем OS/2 Warp компании IBM__________________351

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



<== предыдущая лекция | следующая лекция ==>
Архитектура системы QNX | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.199 сек.