Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обзор темы работы. Многозадачность (multitasking) - это способность операционной системы выполнять несколько программ одновременно



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

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

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

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

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

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

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

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

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





Дата публикования: 2015-01-13; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...