Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
спиос-методичка-часть2.doc
Скачиваний:
15
Добавлен:
13.04.2015
Размер:
266.75 Кб
Скачать
    1. Задания к лабораторной работе

  1. См. Файл “Задания к лабораторной работе.doc”

    1. Содержание отчета к лабораторной работе

Отчет должен содержать:

Цель работы, задание, алгоритм работы программы и его вербальное описание, распечатку исходных текстов программы с комментариями, результаты работы программы, выводы.

    1. Контрольные вопросы.

  1. Что такое сообщение?

  2. Откуда возникают сообщения?

  3. Какие типы сообщений бывают?

  4. Чем отличается элемент управления от основного окна программы?

  5. Поясните схему передачи сообщений в ОС Windows.

  6. В чем отличие SendMessageотPostMessage?

  7. Каким образом осуществляется реакция на работу с элементами управления окна?

  8. Опишите структуру оконного приложения.

  9. Что такое WndProc? Зачем она нужна? Как она описывается? В каком виде реализуется?

  10. Что должна делать WndProcс сообщениями которые она не обрабатывает?

  11. Каким образом устанавливается соответствие между окном и обработчиком сообщений этого окна?

  1. Многозадачность и многопоточность

    1. Цель работы

Ознакомление с концепцией многозадачности и многопоточности современных операционных систем, получение практических навыков по составлению, написанию и отладке программ, содержащих параллельно функционирующие подпрограммы.

    1. Указания по подготовке к выполнению лабораторной работы

Многозадачность на сегодняшний день - одна из определяющих особенностей операционных систем. При подготовке к лабораторной работе необходимо ознакомится с теоретическим описанием принципа многозадачности и особенностями ее аппаратной реализации. Внимательно проработать вопросы обеспечения многозадачности (multitasking) и многопоточности (multithreading) приложенийWindows.

При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.763-809], [17,c.59-87].

    1. Обзор темы работы

Многозадачность (multitasking) - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймера для выделения отрезков времени для каждого из одновременно выполняемых процессов. Если эти отрезки времени достаточно малы, и машина не перегружена слишком большим числом программ, то пользователю кажется, что все эти программы выполняются параллельно.

Многопоточность – это возможность программы самой быть многозадачной. Программа может быть разделена на отдельные потоки выполнения, которые, как кажется, выполняются параллельно.

В лабораторной работе изучаются функции порождения и завершения процесса CreateProcess,ExitProcess,TerminateProcess, создания и завершения потокаCreateThread,ExitThread.

Особое внимание в лабораторной работе уделяется исследованию возможностей синхронизации процессов и потоков. Существует большой класс задач (например, в управлении базами данных, параллельных вычислениях), в которых параллельно функционирующие программы (или их модули) нуждаются в обмене информации или порядок выполнения одних из программных модулей зависит от выполнения других.

Критическим ресурсом – будем называть некоторый участок памяти (набор переменных) доступ к которому осуществляется параллельно выполняющимися задачами.

Критической секцией называется участок кода программы, в котором осуществляется доступ к критическому ресурсу.

ОС Windowsпредоставляет четыре типа объектов, которые позволяют синхронизировать параллельно выполняемые задачи – это критическая секция, семафоры, мьютексы и события.

Семафор действует как обычных флаг, и используется для того, чтобы определить свободен или нет в настоящее время требующийся потоку или процессу ресурс. Пользователь может определять для семафора количество ресурсов, доступных для использования параллельными задачами. При занятии потоком какого-либо количества свободных ресурсов происходит декрементация количества ресурсов, и если, оставшееся число ресурсов недостаточно следующему потоку, он приостанавливается до момента освобождения необходимого числа ресурсов. Для управления семафорами используются функции CreateSemaphore,ReleaseSemaphore,OpenSemaphore,WaitForSingleObject,WaitForMultipleObject.

События являются самой примитивной разновидностью объектов синхронизации. Они используются для того, чтобы уведомить поток о том, что наступило ожидаемое событие. Эти объекты обычно используются для того, чтобы синхронизировать потоки, которые работают по принципу конвейера. Например, один поток опрашивает датчики и загружает считанные значения в буфер. Другой поток считывает эти данные из буфера и производит их обработку. Первый поток может сигнализировать второму о том, что событие - заполнение буфера - наступило. Второй поток может сигнализировать первому о том, что наступило другое событие - данные из буфера считаны, ожидается новая порция данных. Событие может иметь два состояния - занятое и свободное. Работа с событиями осуществляется посредством следующих функций: CreateEvent,ResetEvent,PulseEvent,SetEvent.