- •Методические указания
- •Краматорск, дгма, 2013
- •Содержание
- •Лабораторная работа № 1
- •Теоретические сведения
- •Ход работы
- •Индивидуальное задание
- •Теоретические сведения
- •Литература
- •Лабораторная работа № 2
- •Ход работы
- •Индивидуальное задание
- •Лабораторная работа № 3
- •Теоретические сведения
- •Учебный проект для работы с событиями
- •Учебный проект для работы с событиями
- •Ход работы
- •Индивидуальное задание
- •Лабораторная работа № 4
- •Теоретические сведения
- •Учебный проект
- •Ход работы
- •Индивидуальное задание
- •Лабораторная работа № 4
- •Теоретические сведения
- •Учебный проект
- •Ход работы
- •Индивидуальное задание
- •Лабораторная работа № 6
- •Теоретические сведения
- •Учебный проект
- •Ход работы
- •Индивидуальное задание
- •Лабораторная работа № 7
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 8
- •Теоретические сведения
- •Атрибуты контекста отображения
- •Цвет фона
- •Режим фона
- •Режим рисования
- •Цвет текста
- •Расстояние между буквами
- •Цветовая палитра
- •Начальные координаты кисти
- •Режим закрашивания многоугольников
- •Текущая позиция пера
- •Изображение bitmap
- •Режим растяжения
- •Область ограничения
- •Режим отображения
- •Начало системы координат для окна
- •Начало системы физических координат
- •Масштаб осей для окна
- •Масштаб осей физических координат
- •Учебный проект
- •Ход работы
- •Лабораторная работа № 9
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 10
- •Теоретические сведения
- •Int (*Add)(int); // для адреса функции Add из dll
- •Int (*Sub)(int); // для адреса функции Sub из dll
- •Int *pCount; // для адреса переменной count из dll
- •Ход работы
- •Список рекомендованной литературы
- •Вопросы к экзамену по дисциплине «Операционные системы»
Ход работы
1. Изучить теоретические сведения из лекционного материала, ход работы и индивидуальное задание к данной лабораторной работе.
3. Разработать алгоритм, реализующий индивидуальное задание.
4. Разработать программу (консольное приложение Win32) при помощи средства разработки Visual Studio на языке программирования C++, в которой создать два потока, вычисляющих каждый свой диапазон значений функции. Вывод на консоль результатов расчетов синхронизировать с помощью мьютекса. Использовать учебный проект для выполнения индивидуального задания.
Индивидуальное задание
Реализовать задание, полученное в лабораторной работе 1, исходя из следующей схемы создания и взаимодействия потоков и мьютекса, приведенной на рисунке 1.
Рисунок 1 - Схема создания и взаимодействия потоков и мьютекса
Отчет по лабораторной работе должен содержать тему, цель, содержание индивидуального задания, листинг программы, скрин-шот результатов расчета.
Лабораторная работа № 3
Базовые механизмы взаимодействия потоков: события и семафоры
Цель: Получить навыки в следующих предметных областях:
создание и использование событий потоками;
создание и использование семафоров потоками;
особенности освобождения и использования функций ожидания на этих диспетчерских объектах.
Теоретические сведения
События
Событие ( event ) - это флаг общего доступа для нескольких потоков. Существует несколько типов событий, каждый из которых предназначен для конкретной цели. Событие находится в сигнальном состоянии в случае, если соответствующий флаг установлен.
События могут быть мануальными ( manual ) и единичными ( single ), соответственно оповещающие о том что событие произошло либо множество потоков сразу, либо единственный поток, после чего событие сбрасывается системой автоматически. Тип события указывается при его создании.
Для работы с событиями используются следующие функции:
CreateEvent - создает событие или открывает уже существующее событие;
OpenEvent - открывает существующее событие;
SetEvent - устанавливает событие (переводит его в сигнальное состояние);
ResetEvent - сбрасывает событие;
PulseEvent - переводит событие в сигнальное состояние на период времени, пока на это событие не прореагируют все ожидающие его потоки; после чего событие сбрасывается.
Эти функции имеют следующие параметры вызова.
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES IpSecurityAttributes, // атрибуты защиты
BOOL bManuaiReset, // тип события
BOOL blnitialState, // начальное состояние события
LPCTSTR lpName // имя события
);
BOOL SetEvent(
HANDLE hEvent // дескриптор события
);
BOOL ResetEvent(
HANDLE hEvent // дескриптор события
);
BOOL PuiseEvent(
HANDLE hEvent // дескриптор события
);
HANDLE OpenEvent(
DWORD dwDesiredAccess, // флаги доступа
BOOL blnheritHandle, // режим наследования
LPCTSTR lpName // имя события
);
Параметр dwDesiredAccess определяет доступ к событию и может быть равен любой логической комбинации следующих флагов:
EVENT_ALL_ACCESS – полный доступ (поток может выполнять над событием любые действия);
EVENT_MODIFY_STATE - модификация состояния (поток может использовать функции SetEvent и ResetEvent для изменения состояния события);
SYNCHRONIZE – синхронизация (поток может использовать событие в функциях ожидания).
