Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры ОС1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.61 Mб
Скачать

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

Процессы называются независимыми, множества переменных которых не пересекаются. Взаимодействующие процессы совместно используют несколько общих переменных, и выполнение одного процесса может повлиять на выполнение другого. Ресурсы, которые не допускают одновременного использования несколькими процессами называются критическими. Если нескольким вычислительным процессам необходимо пользоваться критическим ресурсом, то им следует синхронизировать свои действия т.о., чтобы ресурс всегда находился в распоряжении не более чем одного из процессов. Если ресурс используется одним из процессов, то остальные процессы, которым нужен этот ресурс должны ждать, пока он не освободиться, иначе возникают ошибки, поиск и исправление которых является одной из самых трудных задач в программировании. Синхронизация процессов может быть создана на уровне ОС, либо прикладной программы. Взаимодействующие процессы делятся на 2 класса: Конкурирующие и Сотрудничающие (работают так что действие одного передаётся другому).Конкурирующие процессы действуют независимо, но имеют доступ к общим переменным. Сотрудничающие работают так, что результат действия одного процесса передаётся по схеме «поставщик - потребитель». Существует правило : Некорректное использование критических секий приводит к возникновению ошибок поиск и исправление которых является одной из самых сложных задачв прогр.

Пример1: имеются 2-а процесса, х - видно обоим процессам

1-процесс: х=0; while (х!100)х++;

2-процесс: while (1)

{

If(х==100) Printf (“%d”,х); X++;}

}

По данному примеру 2-х процессов невозможно утверждать, что мы хоть что-нибудь увидим на экране, а т.ж. что 1-й процесс когда-нибудь завершиться.

Пример 2: Два процесса и односвязный список.

1-й процесс осуществляет добавление и удаление данных из списка

2-й процесс ищет данные в списке

Если эти два процесса не синхронизировать через критические секции, то это приведёт к краху (процесса 2). Список необходимо сделать критическим ресурсом. Без синхронизации процессов результат непредсказуем. Приведённые процессы рассматривают самую простую ситуацию взаимодействия только 2-х процессов.

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

Список условий функционирования взаимодействующих процессов:

1) В любой момент времени только один процесс должен находится в одной из критических секций, связанных с критическим ресурсом.

2) Ни один процесс не должен находится в критической секции бесконечно долго.

3) Ни один процесс не должен ждать бесконечно долго входа в критическую секцию.

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

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

Любое нарушение этих правил ведет либо к аварийному завершению процессов либо к ситуации, называемой тупиком (deadlock). Тупик может также возникнуть при неправильной синхронизации процессов для нескольких критических ресурсов. Решением проблемы обнаружения тупиков и выхода из них занимается особое направление прикладной математики, начало которому положил в 1962 год Карл Петри.