Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 89
Текст из файла (страница 89)
Первым обязательным требованием к архитектуре операционной системы реального времени является многозадачность в истинном смысле этого слова. Очевидно, что варианты спсевдомногозадачностью (а точнее, с невытесняющей многозадачностью) в системах Windows 3.X или Novell NetWare неприемлемы, поскольку они допускают возможность блокировки или даже полного развала системы одним неправильно работающим процессом. Для предотвращения блокировок вычислений ОСРВ должнаиспользовать квантование времени (то есть использовать вытесняющую, а не кооперативную многозадачность), что сделать достаточно просто.
Вторая проблема — организация надежных вычислений — может быть эффективно решена за счетспециальных аппаратных возможностей процессора. При построении системы дляработы на персональных компьютерах типа IBM PC для этого необходимы процессоры типа Intel 80386 и выше, чтобы иметь возможность организовать функционирование операционной системы в защищенном (32-разрядном) режиме работыпроцессора. Для эффективного обслуживания прерываний операционная системадолжна использовать алгоритм диспетчеризации, обеспечивающий вытесняющеепланирование, основанное на приоритетах. Наконец, крайне желательна эффективная поддержка сетевых коммуникаций и наличие развитых механизмов взаимодействия между процессами, поскольку реальные технологические системыобычно управляются целым комплексом компьютеров и/или контроллеров.
Весь-Сетевая операционная система реального времени QNX341ма желательно также, чтобы операционная система поддерживала многопоточность(не только мультипрограммный, но и мультизадачный режимы) и симметричнуюмультипроцессорность. И наконец, при соблюдении всех перечисленных условийоперационная система должна быть способна работать на ограниченных аппаратных ресурсах, поскольку одна из ее основных областей применения — встроенныесистемы. К сожалению, данное условие обычно реализуется путем простого урезания стандартных сервисных средств.Операционная система QNX является мощной операционной системой, разработанной для процессоров с архитектурой ia32. Она позволяет проектировать сложные программные комплексы, работающие в реальном времени как на отдельномкомпьютере, так и в локальной вычислительной сети. Встроенные средства QNXобеспечивают поддержку многозадачного режима на одном компьютере и взаимодействие параллельно выполняемых задач на разных компьютерах, работающих всреде локальной вычислительной сети.
Таким образом, эта операционная системахорошо подходит для построения распределенных систем.Основным языком программирования в системе является С. Основная операционная среда соответствует стандарту POSIX. Это позволяет с небольшими доработками переносить ранее разработанное программное обеспечение в QNX дляорганизации их работы в среде распределенной обработки.Операционная система QNX, будучи сетевой и мультизадачной, в то же время является многопользовательской (многотерминальной). Кроме того, она масштабируема.
С точки зрения пользовательского интерфейса и интерфейса прикладногопрограммирования она очень похожа на UNIX, поскольку выполняет требованиястандарта POSIX. Однако QNX — это не версия UNIX, хотя почему-то многие таксчитают. Система QNX была разработана, что называется, «с нуля» канадскойфирмой QNX Software Systems Limited в 1989 году по заказу Министерства обороны США, причем на совершенно иных архитектурных принципах, нежели использовались при создании операционной системы UNIX.QNX была первой коммерческой операционной системой, построенной на принципах микроядра и обмена сообщениями.
Система реализована в виде совокупности независимых (но взаимодействующих путем обмена сообщениями) процессовразличного уровня (менеджеры и драйверы), каждый из которых реализует определенный вид услуг. Эти идеи позволили добиться нескольких важнейших преимуществ. Вот как об этом написано на сайте, посвященном операционной системе QNX[ 14].QПредсказуемость означает применимость системы к задачам жесткого реального времени.
QNX является операционной системой, которая дает полную гарантию того, что процесс с наивысшим приоритетом начнет выполняться практически немедленно, и критически важное событие (например,сигнал тревоги) никогда не будет потеряно. Ни одна версия UNIX не можетдостичь подобного качества, поскольку нереентерабельный код ядра слишком велик. Любой системный вызов из обработчика прерывания в UNIXможет привести к непредсказуемой задержке (то же самое можно сказатьпро Windows NT).342Глава 10.
Краткий обзор современных операционных систем•Масштабируемость и эффективность достигаются оптимальным использованием ресурсов и означают применимость QNX для встроенных (embedded) систем. В данном случае мы не увидим в каталоге /dev множества файлов, соответствующих ненужным драйверам, что характерно для UNIX-систем. Драйверыи менеджеры можно запускать и удалять (кроме файловой системы, что очевидно) динамически, просто из командной строки. Мы можем иметь только теуслуги, которые нам реально нужны, причем это не требует серьезных усилий ине порождает проблем.QРасширяемость и надежность обеспечиваются одновременно, поскольку написанный драйвер не нужно компилировать в ядро, рискуя вызвать нестабильность системы.
Менеджеры ресурсов (служба логического уровня) работаютв третьем кольце защиты, и вы можете добавлять свои менеджеры, не опасаясьза систему. Драйверы работают в первом кольце и могут вызвать проблемы,но не фатального характера. Кроме того, их достаточно просто писать и отлаживать.QБыстрый сетевой протокол FLEET прозрачен для обмена сообщениями, автоматически обеспечивает отказоустойчивость, балансирование нагрузки и маршрутизацию между альтернативными путями доступа.•Компактная графическая подсистема Photon, построенная на тех же принципах модульности, что и сама операционная система, позволяет получить полнофункциональный интерфейс GUI (расширенный интерфейс Motif), работающий вместе с POSIX-совместимой операционной системой всего в 4 Мбайтпамяти, начиная с i80386 процессора.Архитектура системы QNXИтак, QNX — это операционная система реального времени для персональныхкомпьютеров, позволяющая эффективно организовать распределенные вычисления.
В системе реализована концепция связи между задачами на основе сообщений, посылаемых от одной задачи к другой, причем задачи эти могут решаться какна одном и том же компьютере, так и на разных, но связанных между собой локальной вычислительной сетью. Реальное время и концепция связи между процессами посредством сообщений оказывают решающее влияние и на разрабатываемое для операционной системы QNX программное обеспечение, и на программиста,стремящегося с максимальной выгодой использовать преимущества системы.Микроядро операционной системы QNX имеет объем всего в несколько десятковкилобайтов (в одной из версий — 10 Кбайт, в другой — менее 32 Кбайт, хотя естьвариант и на 46 Кбайт), то есть это одно из самых маленьких ядер среди всех существующих операционных систем.
В этом объеме помещаются [26]:•механизм передачи сообщений между процессами IPC (Inter Process Communication — взаимодействие между процессами);•редиректор (redirector) прерываний;Это фирменная технология, о которой несколько более подробно рассказано далее.Сетевая операционная система реального времени QNX343О блок планирования выполнения задач (иначе говоря, диспетчер задач);Q сетевой интерфейс для перенаправления сообщений (менеджер Net).Механизм IPC обеспечивает пересылку сообщений между процессами и являетсяодной из важнейших частей операционной системы, так как все взаимодействиемежду процессами, в том числе и системными, происходит через сообщения. Сообщение в операционной системе QNX — это последовательность байтов произвольной длины (0-65 535 байт) произвольного формата.
Протокол обмена сообщениями может выглядеть, например, таким образом. Задача блокируется дляожидания сообщения. Другая задача посылает первой сообщение и при этом блокируется сама, ожидая ответа. Первая задача деблокируется, обрабатывает сообщение и отвечает, деблокируя вторую задачу.Сообщения и ответы, пересылаемые между процессами при их взаимодействии,находятся в теле отправляющего их процесса до того момента, когда они могутбыть приняты. Это означает, что, с одной стороны, снижается вероятность повреждения сообщения в процессе передачи, а с другой — уменьшается объем оперативной памяти, необходимый для работы ядра. Кроме того, становится меньше пересылок из памяти в память, что разгружает процессор. Особенностью процессапередачи сообщений является то, что в сети, состоящей из нескольких компьютеров, работающих под управлением QNX, сообщения могут прозрачно передаваться процессам, выполняющимся на любом из узлов.