Лабораторная работа 5. Синхронизация потоков

Цель: изучить механизмы синхронизации потоков в ОСРВ QNX

с помощью программ на С++.

Краткая теория

Основы работы в MS Windows Virtual PC 2007

Об отметках

Основные упражнения не отмечены никакими специальными знаками, их выполнения достаточно для удовлетворительной оценки. Дополнительные упражнения отмечены "звездочками", их выполнение необходимо для получения повышенной оценки.

Упражнения

1. Изучите список заголовочных файлов

в папке /usr/include

1.1. Запишите в отчете названия 5 заголовочных файлов

из папки /usr/include и для каких целей каждый из

них предназначен.

1.2. Найдите загловочный файл

pthread.h

и выпишите в отчет типы данных, относящиеся

к механизмам синхронизации потоков:

1) мютексы,

2) условные переменные,

3) ждущие блокировки, 

4) блокировки чтения/записи,

5) семафоры,

6) FIFO-диспетчеризация,

7) атомарные операции,

8) обмен сообщениями.

2. Изучение примеров программ из справочной системы.

2.1. В справочной системе найдите

с помощью инструмента поиска статью о системном

вызове

pthread_create()

и скопируйте пример программы из этой статьи

в текстовый редактор. Сохраните файл в каталоге

/root

под именем

exam1.c

2.2. Запишите пример программы в отчет.

Пронумеруйте все строки прграммы

и к каждой строке по номерам запишите

комментарий.

2.3. Откомпилируйте файл exam1.c с помощью компилятора

qcc. См. лабораторную работу 2.

2.4. Запустите файл exam1 и поместите в отчет скриншот

результатов его работы.

3. Изучение потоков с помощью утилиты pidin.

3.1. Запустите два терминала.

3.2. В первом терминале запустите исполнимый файл

exam1, а во втором терминале

запустите утилиту pidin в следующем виде

# pidin -d 1 -l | grep exam1

3.3. Объясните письменно в отчете, что означают

указанные в 3.2 параметры команды pidin.

3.4. Создайте скриншот результатов работы команды

pidin в п.2.2, и письменно в отчете объясните,

что означает каждый элемент вывода этой команды.

4.* Найдите в справочной системе ОСРВ QNX

примеры программ на языке C++ использования

каждого из механизмов синхронизации потоков,

перечисленных в Упраженнии 1.

Например, для механизма мьютексов пример

находится в справочной статье pthread_mutex_lock.

4.1.Выпишите примеры программ в отчет.

4.2. Создайте файл с программой для каждого

примера, называя файлы exam2.c, exam3.c

и т.д.

4.3. Откомпилируйте каждый пример программы

и запустите на исполнение. Скриншоты результаты

вывода каждого примера поместите в отчет.

4.4. Для каждого примера программы получите

соответствующие скриншоты результатов

работы утилиты pidin. 

Основные

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 с.