Читайте также:
|
|
В текущей и следующей теме под словом «процесс» понимается «процесс или поток», а при обсуждении специфичных для потоков вопросов явно используется слово «поток».
Процессы называются параллельными, если они существуют одновременно.
Параллельные процессы могут быть независимыми или взаимодействующими.
Взаимодействующим процессам в некоторые моменты времени может требоваться синхронизировать свои действия (запрос на выполнение операции, обмен данными). Такие процессы являются асинхронными.
Синхронизация – использование специальных неделимых (атомарных) операций для кооперации между асинхронными параллельными процессами.
Параллельная обработка – поле современных исследований и практической деятельности.
Проблемы разработки параллельных алгоритмов: критерий возможности выполнения операций параллельно, надёжное и безопасное взаимодействие процессов, отладка параллельных программ.
Синхронизация «готовность данных».
Задача: вычисление корней уравнения ax 2+ bx+c
Последовательный алгоритм вычисления корней требует 11 шагов.
Алгоритм с параллельными вычислениями требует 6 шагов. Идея:
объединяем то, что может быть выполнено без дополнительных промежуточных действий.
Проблема готовности промежуточных результатов вычислений при распараллеливании
Синхронизация «выполнение одним из многих».(РиС)
Задача о покупке молока: если один из супругов по возвращении с работы обнаруживает, что молоко закончилось, то необходимо сходить в магазин и купить его.
Возможна ситуация, при которой молоко будет куплено обоими супругами. Источник проблемы: субъекты действуют независимо. Решение проблемы: синхронизация действий (кооперация).
Вариант: использование записки. Новая проблема: на написание и оставление записки требуется время.
33. Задача «разделение доступа к ресурсу». Способы ее решения.
В примере учёта поступающих средств для обеспечения надёжной работы требуется предотвратить одновременный доступ нескольких процессов к разделяемому ресурсу – счётчику.
Взаимоисключение: процесс, обращающийся к разделяемому ресурсу, исключает для других процессов возможность одновременного с ним доступа к ресурсу.
Участок в программе, в котором осуществляется доступ к разделяемому ресурсу называется критической секцией ресурса.
Если один процесс находится в своей критической секции определённого ресурса, то остальные не должны иметь возможности войти в их критические секции, относящиеся к тому же самому ресурсу.
Обеспечение взаимоисключения – необходимость отслеживать попытки входа процессов в свои критические секции (операция entercritical) и выхода из них (операция leavecritical).
При выполнении entercritical процесс может блокироваться до освобождения ресурса. При выполнении leavecritical, один из процессов ожидающих входа, возобновляет свою работу.
Требование к реализации операций entercritical и leavecritical – их атомарность.
34. Задача «синхронизация по готовности данных». Способы ее решения.
Синхронизация потоков по действиям и данным может быть выполнена с
помощью семафоров.
Семафор S – защищённая переменная, значение которой можно опрашивать и менять только специальными операциями P и V, а также операцией инициализации. Множество значений семафора: неотрицательные целые числа.
Операция инициализации: определяет начальное значение семафора.
Операция P(S): значение семафора уменьшается на 1, если оно положительно или поток блокируется, если значение семафора нулевое.
Операция V(S): пробуждение одного из потоков, ожидающих на семафоре, или увеличение значения на 1, если таковых нет.
При входе в критическую секцию поток должен выполнять операцию P(S), а при выходе – V(S).
Расширение операции P (неблокирующий вариант) – P'(S): при нулевом значении семафора немедленно возвращается признак отказа в доступе.
Дата добавления: 2015-01-30; просмотров: 16 | Поможем написать вашу работу | Нарушение авторских прав |