Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_SPO_2.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
4.28 Mб
Скачать

40. Процессы и синхронизация. Основные понятия: состояние, действие, история. Независимость параллельных процессов.

Процессы и синхронизация

  • Состояние

    • Значение переменных программы в некоторый момент времени

  • Действие

    • Неделимое действие: изменяет состояние неделимым образом

  • История (трасса)

    • Конкретное выполнение программы

Независимость параллельных процессов

  • R = {r} – множество переменных, которые читает процесс Pi

  • W = {w} – множество переменных, которые пишет процесс Pi

  • RVi множество ссылок процесса – множество переменных, которые встречаются в утверждениях доказательства корректности процесса Pi

  • Д ва процесса независимы, если множество записи переменных одного процесса (Pi) не пересекается с множеством ссылок другого процесса (Pj).

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

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

Основные понятия: состояние, действие, история.

41. Разделяемый и критический ресурс. Доказательство корректности параллельных алгоритмах Примеры.

Разделяемый и критический ресурс

Разделяемый ресурс

К ритический ресурс (для процессов Pi и Pj)

Параллельные процессы. Пример.

char chin, chout;

void echo()

{

chin = getchar();

chout = chin;

putchar(chout);

}

Параллельные процессы. Пример. (2)

Process P1 Process P2

. .

chin = getchar(); .

. chin = getchar();

chout = chin; chout = chin;

putchar(chout); .

. putchar(chout);

. .

Параллельные процессы

  • Вывод: работа программы зависит от скорости развития процессов, что приводит к состоянию состязания за ресурсы («состояние гонки» - Race Condition)

  • В общем случае для программы, содержащей n процессов, где каждый из процессов выполняет m неделимых действий число различных трасс процесса

42.Понятие синхронизации. Виды синхронизации.

  • Цель синхронизации – предотвратить нежелательные истории.

    • Взаимное исключение – объединение мелкомодульных неделимых операторов в крупномодульные

    • Условная синхронизация – задержка выполнения процесса до достижения программой состояния, удовлетворяющего некоторому предикату.

В среде, позволяющей исполнять несколько потоков одновременно, очень важно синхронизировать их деятельность. Для этого в операционных системах, базирующихся на Win32, предусмотрен целый ряд синхронизирующих объектов. Здесь рассматриваются четыре объекта: критические секции, события, мьютексы и семафоры. Все перечисленные объекты, за исключением критических секций, принадлежат ядру (со всеми вытекающими последствиями).

Суть синхронизации. В общем случае поток синхронизирует себя с другим потоком так: он засыпает, и операционная система, не выделяя ему процессорного времени, приостанавливает его выполнение. Но прежде чем заснуть, поток сообщает системе, какое особое событие должно произойти, что бы его выполнение возобновилось. Как только указанное событие произойдёт, поток вновь получит процессорное время (продолжит выполнение). Таким образом, выполнение потока синхронизировано с определённым событием.

Если бы синхронизирующих объектов не было, потоку пришлось бы самому пришлось отслеживать определённые события и синхронизировать себя с ними.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]