Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform
Шрифт:
Предыдущая книга Роба, «Введение в QNX 4: Руководство по программированию приложений реального времени» была удостоена Почетной премии («Award of Merit») Общества технических коммуникаций (Society for Technical Communications;
Недавно он выполнял контрактную работу по заказу компании Cisco Systems Inc., в которой он разрабатывал системную архитектуру (проектирование и программирование) семейства продуктов Cisco GSR-12000 (Gigabit Switch Router — гигабитный коммутирующий маршрутизатор).
Роб имеет широкий круг интересов — от компьютерной музыки и графики до виртуальных файловых систем. Он также заядлый
По истечении почти четырех лет работы в технической издательской группе QSSL Крис решил, что пришло время создать что-нибудь свое. Объединив свои навыки технического писателя, редактора и программиста, он создал компанию Arcane Dragon Software (что-то типа «Программного обеспечения таинственного дракона» — прим. ред.).
Компания Arcane Dragon Software (
• написание и редактирование технической литературы;
• программирование на С, С++ и Python для BeOS (см.
• создание интерфейсов пользователя.
Крис — лауреат премии BeOS Masters Outstanding Contribution Award («За выдающиеся заслуги», одной из двух вообще когда- либо врученных) и обладатель трех высших наград Сообщества технических коммуникаций (две Почетных премии («Award of Merit») и одна Премия за мастерство («Award of Excellence»). Он также был техническим редактором книги Роба Кёртена «Введение в ОС QNX 4» (издательство PARSE), книги Мартина Броуна «BeOS: Перенос UNIX-приложений» (издательство Morgan-Kauffman) и книги Скота Хакера «Библия BeOS» (издательство Peachpit).
Выражение признательности
Появление данной книги было бы невозможным без помощи и поддержки моих коллег, которые щедро одаривали меня своими многочисленными предложениями и комментариями. Это: Люк Базинет (Luc Bazinet), Джеймс Чанг (James Chang), Дэн Додж (Dan Dodge), Дейв Донахо (Dave Donaho), Мария Годфри (Maria Godfrey), Майк Хантер (Mike Hunter), Прадип Кафейл (Pradeep Kathail), Стив Марш (Steve Marsh), Дэнни Н. Прайэри (Danny N. Priarie) и Эндрю Вернон (Andrew Vernon).
Особую благодарность я хотел бы выразить Брайену Стечеру (Brian Stecher), который терпеливо и внимательно рассмотрел не менее трех черновых вариантов данной книги, а также Питеру Ван Дер Вину (Peter van der Veen), который провел много ночей в моем доме (был подкуплен пивом и пиццей), выдавая мне тайны функционирования администраторов ресурсов QNX/Neutrino.
Спасибо Ким Фрейзер (Kim Fraser) за уже вторую прекрасную обложку для моей книги.
Отдельное спасибо Джону Острандеру (John Ostander) за его превосходные предложения по грамматике и внимательное чтение корректуры :-).
И, конечно, особую благодарность я хочу выразить моему редактору, Крису Херборту — за то, что он нашел время редактировать эту книгу, помогать мне иногда с применением мрачных SGML/LaTeX, умудряясь при этом еще делать дюжину вещей одновременно! («Ну я же тебя просил напомнить мне, чтобы я не делал так больше!» — цитата из Криса.)
Я также хотел бы выразить глубокую благодарность за поддержку и понимание моей жене Кристине за то, что она каждый раз терпела мое многочасовое торчание в подвале с полнейшим ее игнорированием!
Типографские соглашения
В тексте данной книги для обеспечения различимости технической терминологии используется ряд типографских соглашений. В целом, примененные здесь стандарты оформлении текстового материала соответствуют таковым в публикациях документов POSIX. Ниже в таблице приведены образцы принятых типографских соглашений.
Тип текста | Пример оформления |
---|---|
Тексты программ | if (stream == NULL) |
Опции команд | – lR |
Команды | make |
Переменные окружения | PATH |
Файлы и имена путей | /dev/null |
Имена функций | exit |
Комбинации клавиш | Ctrl-Alt-Del |
Клавиатурный ввод | Текст, который вы набираете |
Клавиши | Enter |
Вывод программ | login: |
Именованные константы | NULL |
Типы данных | unsigned short |
Литералы | 0xFF, "message string" |
Имена переменных | stdin |
Глава 1
Процессы и потоки
Основные понятия о процессах и потоках
Прежде, чем мы начнем обсуждать потоки, процессы, кванты времени и другие замечательные «концепции диспетчеризации», давайте поговорим об аналогиях.
Сначала я хотел бы проиллюстрировать, как функционируют потоки и процессы. На мой взгляд, лучший способ (о глубинном изучении систем реального времени сейчас речь не идет) — это вообразить поведение наших потоков и процессов в некоторой привычной для нас обстановке.
Процесс как жилой дом
Давайте используем для построения аналогий о процессах и потоках объект, который мы используем повседневно — наш собственный дом.
Дом реально представляет собой контейнер с некоторыми атрибутами (общая площадь дома, число спален, и т.д.).
Если рассматривать жилой дом с этой точки зрения, он ничего не делает сам по себе. Дом — пассивный объект, в этом он аналогичен процессу. Поговорим об этом вкратце.