Традиционная автоматизация часто предполагает работу приложений в реальном времени. Поэтому для специалистов всегда интересно ознакомиться с новой книгой в этой области. Только что вышедшее в издательстве «Петрополис» «Руководство по программированию приложений реального времени в QNX Realtime Platform», представляет собой перевод издания, подготовленного компанией PARSE Software Devices (Канада).
Автор книги Роб Кертен, будучи сотрудником компании QNX Software Systems, участвовал в разработке операционной системы QNX/Neutrino, им написан прототип сетевого менеджера (npi-qnet), а также ряд учебных курсов. Поэтому предлагаемое читателю изложение знаний по предмету следует признать весьма проникновенным, тем более что данной работе предшествовала книга того же автора по QNX 4.
Согласно утверждению автора, книга предназначена «для любого желающего получить фундаментальное понимание ключевых особенностей QNX/Neutrino и принципов ее функционирования». При этом в круг читателей можно включить и тех, чье компьютерное образование невелико, и бывалых хакеров, которые могут освоить полезные приемы обмена сообщениями и структурной организации драйверов. Конечно, знания по языку программирования Си при чтении полезны, но их глубина не обязательна. Основная цель книги — рассказать читателю, что собой представляет и как функционирует QNX/Neutrino. Пять глав посвящены описанию состояний процессов, потоков, алгоритмов диспетчеризации, обмену сообщениями, модульной концепции построения операционной системы и др. Во введении приводится обширный список адресов Web-ресурсов, на которых можно получить полезную информацию по QNX и мероприятиям, связанным с ней.
Описание ОС начинается с изложения основных понятий о процессах и потоках, а также о роли ядра в управлении потоками в случае одного процессора и симметричной многопроцессорной системы. Читатель в этой главе получит представление об ОС, как о системе массового обслуживания. Наиболее яркая особенность QNX/Neutrino связана с принципами обмена сообщениями, который в ней происходит достаточно быстро и должен устроить любого программиста. Использование микроядра делает весьма удобным обмен сообщениями. Допустимо его применение и в модели «клиент-сервер», в многопоточных ситуациях, а также при обращении к библиотекам языка Си. Но вместе с тем при обмене сообщениями необходимо следовать строгой иерархии обмена. При этом управление осуществляется с помощью параметров. Как это делается, описано подробно в разделе «Применение обмена сообщениями». При написании приложении автором указано на ряд преимуществ, связанных с использованием передачи сообщений. Например, содержание сообщения не зависит от местоположения адресата (локального или удаленного), при этом обеспечивается четкая развязка клиентов и серверов, и, наконец, автоматические механизмы синхронизации и соблюдения очередности сообщений упрощают проектирование приложений.
Глава «Часы, таймеры и периодические уведомления» рассматривает круг вопросов о временной привязке процессов и организации управления ими во времени. При этом ядро хранит абсолютное время и создает таймеры, которые в целях экономии энергии отключаются в случае отсутствия в них нужды в каждом конкретном случае.
Написанию обработчиков прерываний в QNX/Neutrino посвящена отдельная глава, которая содержит полезные рекомендации для программиста. Например: не оставайтесь в обработчике прерываний слишком долго — выполняйте в нем минимальный объем работы; применяйте функцию InterruptAttach() только тогда, когда нужно обращаться к аппаратным средствам непосредственно после прерывания, в других случаях используйте InterrupAttachEvent() и т.д.
Завершающая книгу глава «Администраторы ресурсов» научит читателя писать программы с таким названием — в QNX/Neutrino под ними понимают драйверы устройств и диспетчеры ввода/вывода, файловые системы и т. п. В общем случае под администратором ресурса (АР) автор понимает «абстрактную форму некоей службы». В главе описаны примеры подобных администраторов ресурсов, а также взгляды на них со стороны клиента и собственно администратора. Особое внимание уделено библиотеке администратора ресурсов и написанию АР. Приводятся примеры базового каркаса и ряда функций АР.
В книге представлены два приложения и словарь. Первое полезно тем, кто переходит с ОС QNX4 на QNX/Neutrino и должен познакомиться с отличиями в них и с «философией» переноса программ, особенно в части обмена сообщениями и обработки прерываний. Второе адресует читателей к службе скорой помощи и помогает организации диалога между нуждающимся и знатоком.
Оценивая книгу в целом положительно, надеемся, что круг читателей ее будет широк — от специалистов до студентов и преподавателей. Можно отметить хороший методический стиль, хотя для начинающих был бы полезен вводный материал, из которого читатель мог бы получить представление по операционным системам реального времени в сравнении с обычными ОС.
Роб Кертен, Введение в QNX/Neutrino 2. «Петрополис», 2001, 480 с., с ил.