Всем привет!
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