РЕЗЕНЗИИ
Кёртен Р. Введение в QNX/Neutrino 2. Пер. с англ. СПб.: Петрополис, 2001. - 512 с., ил.
Литература по ОСРВ, особенно на русском языке, - явление достаточно редкое. Неудивительно, что вышедшая в 1999 г. на английском языке книга Роба Кёртена “Getting Started with QNX/Neutrino 2” сразу была переведена сначала на японский, а теперь и на русский язык.
“Введение в QNX/Neutrino 2” - учебник по проектированию приложений реального времени на базе ОСРВ QNX/ Neutrino (QNX6). Автор дает четкую картину как внутреннего устройства ОС, работы ее механизмов и взаимодействия ключевых подсистем, так и полноценный “взгляд снаружи”, позволяющий программисту рационально использовать имеющиеся в его распоряжении преимущества и обходить возможные подводные камни.
Книга написана в непринужденной, даже шутливой манере, значительно облегчающей чтение, и содержит массу аналогий, помогающих понять сложные вещи через более простые. Вместе с тем философский взгляд автора на мир систем реального времени гармонично сочетается с умением грамотно поставить проблему и последовательно и аргументированно подвести читателя к ее решению. Книга содержит множество примеров кода и подробных пояснений к ним, а также просто полезных рекомендаций по проектированию, позволяющих значительно упростить как разработку, так и отладку, тестирование, модернизацию и портирование программного кода.
Книга состоит из пяти глав, двух приложений и небольшого глоссария, поясняющего специфичные термины. В первой главе приведены базовые понятия о процессах и потоках и рассказано о работе с ними в QNX/Neutrino, в том числе подробно описано состояние потоков, алгоритмы их диспетчеризации и примитивов синхронизации потоков по отношению к различным системным событиям. Затрагиваются и общие вопросы организации многопоточных приложений, в частности в системах с симметричной мультипроцессорной архитектурой.
Фундаментальному механизму QNX/ Neutrino - межзадачному взаимодейст-вию на основе обмена сообщениями посвящена вторая глава. В ней описаны базовые принципы обмена сообщениями в ОС на основе микроядра и их реализация в QNX/Neutrino, включая распределенный обмен сообщениями в сети. Особое внимание уделено проекции обмена сообщениями в QNX/Neutrino на концепцию клиент-сервер в многопоточной среде. Приведены рекомендации по организации приложений, позволяющие избегать стандартных проблем типа взаимных блокировок и инверсии приоритетов.
В третьей главе рассматриваются вопросы точного отсчета времени в QNX/Neutrino. Подробно разбирается работа с различными типами таймеров, их связи с системными сервисами ОС, способы планирования событий во времени, организация периодических процессов и тайм-аутов.
Четвертая глава посвящена обработке прерываний в QNX/ Neutrino. В ней рассказано о подходах к обработке прерываний в системах реального времени, включая особенности обработки прерываний с чувствительностью по фронту и по уровню, а также вопросы разделения прерываний между устройствами. Описана структура обработчиков прерываний QNX/Neutrino, даны рекомендации по их написанию, подключению и организации их взаимодействия с программным кодом приложений.
Пятая глава посвящена решению в QNX/Neutrino одной из самых трудных задач системного программирования - написания драйверов устройств. Модель драйвера устройства автор рассматривает с точки зрения концепции клиент-сервер; приводятся взгляды на проблему как со стороны сервера, так и со стороны клиента. В главе подробно описаны системные библиотеки QNX/Neutrino, предназначенные для разработки драйверов, и их внутренняя организация. Глава также содержит несколько готовых примеров драйверов устройств QNX/Neutrino с подробными комментариями.
Приложения содержат много полезной справочной информации и посвящены решению различных проблем - от переноса программ из QNX4 в QNX/Neutrino (включая немало общих весьма полезных рассуждений о переносимости кода) до диагностики неисправностей в приложениях и организации взаимодействия со службой технической поддержки.
Книга требует от читателя глубокого знания языка Си и рассчитана на программистов, желающих получить фундаментальную подготовку или повысить квалификацию по разработке приложений реального времени в среде QNX/ Neutrino - от встраиваемых систем управления до распределенных сетевых вычислительных комплексов.