(fwd) QNX

Andrey Gerzhov (kittle@freeland.alex-ua.com)
Thu, 5 Feb 1998 22:56:34 GMT

-- forwarded message --
Path: barmaglot.alex-ua.com!f188.n463.z2!f116.n463.z2!f58.n463!f94.n463!f18.n463!gemini.gu.net!not-for-mail
Newsgroups: fido.ua.unix
Distribution: fido
X-Comment-To: All
From: Alex Radetsky <rad@gu.net>
X-FTN-Sender: Alex Radetsky <Alex.Radetsky@f151.n463.z2.fidonet.org>
Date: Thu, 05 Feb 98 15:50:53 +0200
Subject: QNX
Message-ID: <6bcg3t$7n1$1@gemini.gu.net>
Organization: In Beer We Trust
X-FTN-AREA: UA.UNIX
X-FTN-MSGID: gemini.gu.net 0a8f7b68
NNTP-Posting-Host: gemini.gu.net
X-Trace: gemini.gu.net 886686653 7905 rad 194.93.190.130
X-Complaints-To: news@gemini.gu.net
User-Agent: tin/pre-1.4-980105 (UNIX) (Linux/2.0.33 (i586))
X-FTN-Split: already
X-FTN-Tearline: ifmail v.2.10
X-FTN-Origin: In Beer We Trust (2:463/151)
X-FTN-SEEN-BY: 46/222 462/10 463/18 57 58 68 94 116 126 128 140 150 151 159 177
X-FTN-SEEN-BY: 463/188 190 246 257 432 513 600 911 2033 6666 465/70 467/10 468/70
X-FTN-SEEN-BY: 4614/6 4621/22 4623/11 4633/2 3 5020/400
X-FTN-PATH: 463/18 94 58 116
X-FTN-PATH: 463/188
Lines: 230
Xref: barmaglot.alex-ua.com fido.ua.unix:292

Всем привет!

Hиже привожу статью, которую мне переслал мой знакомый. Меня она
очень сильно заинтересовала. Хочеться посмотреть на сие чудо.

===========Cut==========
Прошу учесть, что все нижесказанное, было т.с. сказано ровно год назад.

Далее сама статья

Уважаемые господа !

Фирма "SWD Real Time Systems - Системы Реального Времени", являющаяся
официальным дистрибьютором на территории стран бывшего СССР
многозадачной сетевой операционной системы РЕАЛЬОГО ВРЕМЕИ QNX
для IBM-совместимых персональных компьютеров, предлагает
программные продукты, разработанные для QNX 4.2x, выполненной в
стандарте POSIX (стандарт для UNIX-подобных ОС). Эти средства
позволяют создавать на основе QNX:

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

В качестве пресс-релиза представляем Вашему вниманию статью Дмитрия
Пустовалова "Операционная система завтрашнего дня существует уже сегодня",
в которой, на наш взгляд затронуты все основные вопросы, которые в той
или иной мере относятся к ОС QNX и встречаются в нашей практике довольно
часто.

По всем вопросам и за дополнительной информацией по ОС QNX
обращайтесь, пожалуйста, по следующему адресу:
Санкт-Петербург, 196135, пр. Ю.Гагарина 23,
ЗАО "SWD Real Time Systems - Системы Реального Времени"

С уважением,
Леонид Агафонов.
___________________________________________________________________
SWD - Real Time Systems | voice: (812) 293-0260
коммерческий директор | fax: (812) 293-0497
Агафонов Л.В. | E-mail: comdir@swd-rts.spb.su

"Операционная система завтрашнего дня существует уже сегодня".

Дмитрий Пустовалов,
программист АООТ
"Ярославнефтеоргсинтез"

Введение.
=========
Выбор 32-х разрядной операционной системы для платформы INTEL еще
не сделан. Если судить по фразеологии новостей, то в мире 32-х разрядных
технологий идет война: "OS/2 против Windows", "Производители UNIX
объединяются перед лицом Windows NT" и т.д. Конечные пользователи ожидают
победителя с наибольшим числом готовых приложений. Это означает, что
разработчики приложений должны заранее предугадать победителя.

Безоговорочной гегемонии одной операционной системы ожидать не
следует. Скорее всего, в результате "войны" произойдет перераздел рынка
32-х разрядных OS по областям применения. Можно выделить две области :
офисно-деловую и системно-научно-промышленную. В первом случае важны
наличие офисных инструментов (карандашей - редакторов, калькуляторов -
таблиц, справочников - баз данных), возможность передачи документа от
одного инструмента к другому и своевременная реакция на желания
пользователя. Расставаться с Windows 3.1, в этом случае, было бы
преждевременно. Во втором случае пользователь постоянно работает в среде
одной какой-то программы, или программа функционирует сама по себе, без
пользователя. Программное обеспечение для банков, управления
технологическими процессами и роботами, серверов всего и вся занимает умы
программистов ничуть не меньше, чем благоустройство электронных офисных
столов. Если вы нуждаетесь в полноценной 32-х разрядной мультизадачной
операционной системе, то у вас есть проблема - проблема выбора.

Программист стремится получить операционную систему с максимумом
возможностей и средств разработки. Потребитель желает получить продукт с
наименьшими требованиями к ресурсам при максимальной производительности.
Антагонизм почти что классовый. Вряд ли вы убедите потребителя, что
486-33/8/340 мало. А ведь при этой конфигурации любая 32-х разрядная OS с
громким именем будет только "дышать", для вашей программы ни места, ни
времени не найдется. Здравый инженерный смысл подсказывает, что дело не в
количестве мегабайтов, а в принципе. аши предки, окончательно не
удовлетворясь эффективностью лошадиной тяги, перестали впрягать большее
число лошадей и больше их кормить - они придумали новую концепцию.
Паровой двигатель.

OS QNX 4.2 - реальность, опережающая фантазию.
==============================================

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

Первая версия OS QNX была создана в начале 80-х годов группой
программистов из университета Ватерлоо в Канаде. К тому времени выявились
основные недостатки UNIX-систем, и сформировались новые концепции
программирования такие как: событийное и объектно-ориентированное
программирование. Основная задача, которую ставили перед собой
разработчики, состояла в создании UNIX-подобной операционной системы
способной работать в реальном времени. Для этого она должна была иметь
встроенную поддержку сетей, эффективный механизм обмена данными между
процессами, быструю и надежную файловую систему и низкие требования к
аппаратным ресурсам, что дало бы возможность успешно функционировать в
встраиваемых (embedded) системах и даже помещать операционную систему в
ПЗУ. (Имеются ввиду системы типа программируемых логических контроллеров,
устройства считывания кредитных карт и т.п.) Получившаяся операционная
система прежде всего привлекла внимание разработчиков систем управления.
После приведения набора системных вызовов QNX в соответствие со стандартом
POSIX, вобравшему все лучшее из UNIX-систем, операционная система QNX
стала находить все большее число поклонников.

Что можно сказать о 32-х разрядной, с вытесняющей
многозадачностью, многопользовательской, распределенной, масштабируемой
операционной системе реального времени, умещающейся в 650 Kb оперативной
памяти ?... е может быть ?! о она существует.

Три операционных системы в одной.
--------------------------------
QNX версии 4.2 представляет собой как бы три операционные системы
одновременно. Во-первых, OS соответствующая стандарту POSIX 1003.1,
определяющему набор обязательных системных и инструментальных функций, и
стандарту POSIX 1003.2, определяющему набор утилит (ls, mkdir и т.д.).
Именно это обстоятельство вызвало резкое увеличение спроса на OS QNX в
1994 году. Во-вторых, распределенная операционная система с
высокоэффективным механизмом взаимодействия задач в сети. В третьих,
операционная система реального времени, самая используемая в этой области.

OS QNX 4.2 является масштабируемой и содержит сразу два варианта
операционной системы: 16-и разрядный для 286-х и 32-х разрядный для 386-х
и выше. Варианты совместимы снизу вверх, т.е. 32-х разрядный вариант
операционной системы способен выполнять как "родные", так и 16-и разрядные
программы.

Концепции.
---------
В основе незаурядных способностей QNX лежит технология микроядра
(microkernel technology) и высокоэффективная реализация механизма передачи
сообщений (messages passing).

Микроядро имеет размер 10 Kb и является собственной разработкой
фирмы QNX Software Systems Ltd.(далее QSSL). Обычно микроядро удачно
сравнивают с RISC-процессорами. Функции, которые можно обеспечить вне
микроядра, должны быть реализованы вне микроядра. Микроядро QNX
обслуживает всего 14 запросов и состоит из трех блоков: блока
взаимодействия между процессами (interprocess communication - IPC),
диспетчера процессов (Scheduler) и переадресатора прерываний (hardware
interrupt redirector). [Рис.1] Все остальные, и служебные и
пользовательские задачи, являются просто процессами и конкурируют за право
получения процессорного времени в соответствии с со своими приоритетами и
дисциплинами диспетчеризации. Согласно POSIX 1003.4 в OS QNX процесс
может иметь уровень приоритета от 1 до 32 и одну из трех дисциплин
диспетчеризации: FIFO, " карусель" и с повышением приоритета.

Для упрощения (а значит ускорения) администрирования доступа и
управления ресурсами в OS QNX реализована концепция менеджеров. [Рис.2] В
стандартной поставке вы найдете 4 основных менеджера ресурсов:
Proc - процессов,
Fsys - файловой системы POSIX,
Net - сети,
Dev - устройств.
Могут оказаться не бесполезны менеджер файловой системы DOS (Dosfsys),
менеджер файловой системы для CD-ROM (Iso9660fsys) и менеджер накопителей
без файловой системы (Blockfsys). а данный момент QNX работает с 8 типами
файловых систем. Tiny Filesystem, Flash Filesystem и Execute-in-Place
Filesystem предназначены для встраиваемых систем, а Network File System
(NFS) в комментариях не нуждается.

Такое количество менеджеров дает представление о простоте
расширения возможностей операционной системы построенной на микроядре.
Менеджер является процессом и отлаживать его не сложней чем любой другой
процесс. При возникновении нового типа устройств достаточно создать новый
менеджер. Ярким примером сказанного служит менеджер PCMCIA-устройств.

Главное преимущество технологии менеджеров по сравнению с
монолитными операционными системами состоит в стабильности к аппаратным
сбоям и программным ошибкам. Авария "железа" или неправильно написанный
драйвер не повлекут за собой крах всей операционной системы, а только
сделают недоступным соответствующий ресурс. Микроядро и остальные менеджеры
ресурсов и драйвера будут по-прежнему функционировать.

В OS QNX есть все стандартные средства POSIX для обмена данными
между процессами: каналы, FIFO-файлы, сигналы, разделяемая память,
семафоры. Ограниченность возможностей этого системного инструментария при
взаимодействии процессов не имеющих родственных связей ведет к усложнению
внутренней архитектуры программных комплексов и в итоге к потере скорости.
Более удобным является метод передачи сообщений.

Рассмотрим реализацию классической архитектуры клиент-сервер на
базе этого метода в OS QNX. [Рис.3] Пусть у нас есть сервер запросов и
клиент. При запуске сервер сообщает операционной системе о присвоении себе
имени qnx_name_attach("I'm Server"). И переходит в состояние ожидания:
client_process_id=Receive(server_receive_buffer_ptr). После чего
блокируется операционной системой (не имеет управления!), а не находится в
цикле проверки семафора или флага, транжиря процессорное время. Клиент
после запуска проверяет наличие сервера
server_process_id=qnx_name_locate("I'm Server"), формирует запрос и
отправляет его Send(server_process_id,client_send_buffer_ptr,
client_replay_buffer_ptr). Процесс-клиент блокируется до получения ответа.
Операционная система сразу же разблокирует процесс-сервер. Выполнив
запрос, сервер вернет результат процессу-клиенту через системный вызов
Replay(client_process_id,server_replay_buffer_ptr). Во время этой
операции выполнялась только одна(!) нить управления, что в общем случае
ведет к уменьшению активных процессов в операционной системе и, как
следствие, увеличению доли процессорного времени для активных процессов.

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

В некоторых случаях, когда блокировка передающего процесса
нежелательна, применяют механизм proxy (посредник). Proxy необходим в
следующих случаях: во-первых, когда процесс хочет уведомить другие

* Message split, to be continued *
-- end of forwarded message --

-- 

Kittle