Цель: изучить механизмы обмена сообщениями между потоками в ОСРВ QNX
с помощью программ на С++.
Краткая теория
Основы работы в MS Windows Virtual PC 2007
Об отметках
Основные упражнения не отмечены никакими специальными знаками, их выполнения достаточно для удовлетворительной оценки. Дополнительные упражнения отмечены "звездочками", их выполнение необходимо для получения повышенной оценки.
"5" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной и двумя "звездочками".
"4" - в отчете выполнены все основные упражнения дополнительно выполнены упражнения с одной "звездочкой".
"3" - в отчете выполнены все основные упражнения.
Упражнения
1. Изучение заголовочных файлов, предназначенных
для работы с
1.1. Найдите в папке
/usr/include/sys/
заголовочный файл
neutrino.h,
в нем найдите объявление структуры
_msg_info
и поместите скриншот этого фрагмента в отчет.
1.2. Выполните задание 1.1. для структуры
_pulse.
Скриншот - в отчет.
1.3. Найдите, в каком заголовочном файле расположена
функция MsgSendPulse().
Скриншот - в отчет.
1.4. Найдите в заголовочном файле
signal.h
описание структуры
sigaction
Скриншот - в отчет.
1.5. Найдите заголовчный файл, в котором находится описание
типа данных
sigset_t
Скриншот - в отчет.
2. Изучение примеров программ из справочной системы.
2.1. В справочной системе найдите
с помощью инструмента поиска статьи с примерами
применения системных вызовов для работы с сообщениями,
импульсами и сигналами.
Скопируйте примеры 3-х программ из этой статьи
в текстовый редактор. Сохраните файлы в каталоге
/root
под именемами
msgexam1.c,
msgexam2.c,
msgexam3.c
Проверьте с помощью выполнения следующих пунктов
настроящего упражениня работоспособность найденных
примеров.
Один из примеров программы можно найти в справочной
статье по системному вызову
message_attach()
2.2. Запишите примеры программ в отчет.
Пронумеруйте все строки прграммы
и к каждой строке по номерам запишите
комментарий.
2.3. Откомпилируйте файлы msgexam*.c с помощью компилятора
qcc. См. лабораторную работу 2.
2.4. Запустите файлы msgexam* и поместите в отчет скриншоты
результатов их работы. Добвьте в программы операторы вывода
сообщения о начале работы программы, например,
printf("Start msgexam1...");
3. Изученитие обмен сообщениями между потоками
с помощью утилиты pidin.
3.1. Запустите два терминала.
3.2. В первом терминале запустите исполнимый файл
msgexam1, а во втором терминале
запустите утилиту pidin в следующем виде
# pidin -d 1 -l | grep msgexam1
3.4. Создайте скриншот результатов работы команды
pidin в п.2.2 для всех примеров программ, и письменно
в отчете объясните,
что означает каждый элемент вывода этой команды.
Источники
Основные
1. [Зыль] Зыль С.Н. Операционная система реального времени QNX:
от теории к практике. - СПб.: БХВ-Петербург, 2004. - 192 с.
2. Справочная система ОСРВ QNX Neutrino 6.2
Дополнительные
1. FAQ по QNX
http://forum.kpda.ru/index.php/topic,152.0.html
[электронный ресурс]
2. Операционная система реального времени QNX: Знакомство
http://habrahabr.ru/blogs/nix/124656/
[электронный ресурс]
3. Немного о микроядре, потоках и процессах
http://habrahabr.ru/blogs/nix/125243/
[электронный ресурс]
4. Планирование потоков
http://habrahabr.ru/blogs/nix/125835/
[электронный ресурс]
5. Межзадачное взаимодействие
http://habrahabr.ru/blogs/nix/127173/
[электронный ресурс]
6. QNX Realtime Platform: Русский Портал
qnx.org.ru/forum
[электронный ресурс]
7. [Котельников] Котельников, Е. В. Сетевое администрирование на основе Microsoft
Windows Server 2003 [Текст]: курс лекций и лабораторный практикум /
Е. В. Котельников, Н. А. Кротова, С. Ю. Иванов. – 2-е изд. – Киров: Изд-во
ВятГГУ, 2009. – 169 с.