- •Структура оконного приложения и обработка сообщений.
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Структура оконного приложения
- •Задания к лабораторной работе
- •Содержание отчета к лабораторной работе
- •Контрольные вопросы.
- •Многозадачность и многопоточность
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Обобщенный алгоритм доступа к критическому ресурсу с использованием объектов синхронизации
- •Практические аспекты
- •Задания на лабораторную работу
- •Контрольные вопросы и задания
- •Управление распределением памяти (win api)
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Порядок выполнения работы.
- •Задания к выполнению.
- •Содержание отчета
- •Контрольные вопросы и задания
- •Управление файлами
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
Задания к лабораторной работе
См. Файл “Задания к лабораторной работе.doc”
Содержание отчета к лабораторной работе
Отчет должен содержать:
Цель работы, задание, алгоритм работы программы и его вербальное описание, распечатку исходных текстов программы с комментариями, результаты работы программы, выводы.
Контрольные вопросы.
Что такое сообщение?
Откуда возникают сообщения?
Какие типы сообщений бывают?
Чем отличается элемент управления от основного окна программы?
Поясните схему передачи сообщений в ОС Windows.
В чем отличие SendMessageотPostMessage?
Каким образом осуществляется реакция на работу с элементами управления окна?
Опишите структуру оконного приложения.
Что такое WndProc? Зачем она нужна? Как она описывается? В каком виде реализуется?
Что должна делать WndProcс сообщениями которые она не обрабатывает?
Каким образом устанавливается соответствие между окном и обработчиком сообщений этого окна?
Многозадачность и многопоточность
Цель работы
Ознакомление с концепцией многозадачности и многопоточности современных операционных систем, получение практических навыков по составлению, написанию и отладке программ, содержащих параллельно функционирующие подпрограммы.
Указания по подготовке к выполнению лабораторной работы
Многозадачность на сегодняшний день - одна из определяющих особенностей операционных систем. При подготовке к лабораторной работе необходимо ознакомится с теоретическим описанием принципа многозадачности и особенностями ее аппаратной реализации. Внимательно проработать вопросы обеспечения многозадачности (multitasking) и многопоточности (multithreading) приложенийWindows.
При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.763-809], [17,c.59-87].
Обзор темы работы
Многозадачность (multitasking) - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймера для выделения отрезков времени для каждого из одновременно выполняемых процессов. Если эти отрезки времени достаточно малы, и машина не перегружена слишком большим числом программ, то пользователю кажется, что все эти программы выполняются параллельно.
Многопоточность – это возможность программы самой быть многозадачной. Программа может быть разделена на отдельные потоки выполнения, которые, как кажется, выполняются параллельно.
В лабораторной работе изучаются функции порождения и завершения процесса CreateProcess,ExitProcess,TerminateProcess, создания и завершения потокаCreateThread,ExitThread.
Особое внимание в лабораторной работе уделяется исследованию возможностей синхронизации процессов и потоков. Существует большой класс задач (например, в управлении базами данных, параллельных вычислениях), в которых параллельно функционирующие программы (или их модули) нуждаются в обмене информации или порядок выполнения одних из программных модулей зависит от выполнения других.
Критическим ресурсом – будем называть некоторый участок памяти (набор переменных) доступ к которому осуществляется параллельно выполняющимися задачами.
Критической секцией называется участок кода программы, в котором осуществляется доступ к критическому ресурсу.
ОС Windowsпредоставляет четыре типа объектов, которые позволяют синхронизировать параллельно выполняемые задачи – это критическая секция, семафоры, мьютексы и события.
Семафор действует как обычных флаг, и используется для того, чтобы определить свободен или нет в настоящее время требующийся потоку или процессу ресурс. Пользователь может определять для семафора количество ресурсов, доступных для использования параллельными задачами. При занятии потоком какого-либо количества свободных ресурсов происходит декрементация количества ресурсов, и если, оставшееся число ресурсов недостаточно следующему потоку, он приостанавливается до момента освобождения необходимого числа ресурсов. Для управления семафорами используются функции CreateSemaphore,ReleaseSemaphore,OpenSemaphore,WaitForSingleObject,WaitForMultipleObject.
События являются самой примитивной разновидностью объектов синхронизации. Они используются для того, чтобы уведомить поток о том, что наступило ожидаемое событие. Эти объекты обычно используются для того, чтобы синхронизировать потоки, которые работают по принципу конвейера. Например, один поток опрашивает датчики и загружает считанные значения в буфер. Другой поток считывает эти данные из буфера и производит их обработку. Первый поток может сигнализировать второму о том, что событие - заполнение буфера - наступило. Второй поток может сигнализировать первому о том, что наступило другое событие - данные из буфера считаны, ожидается новая порция данных. Событие может иметь два состояния - занятое и свободное. Работа с событиями осуществляется посредством следующих функций: CreateEvent,ResetEvent,PulseEvent,SetEvent.
