Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы к зачету по ОВП.doc
Скачиваний:
18
Добавлен:
02.05.2014
Размер:
105.47 Кб
Скачать

7. Взаимодействие процессов.

Способы взаимодействия процессов можно классифицировать по степени осведомления одного процесса о существовании другого:

1.Процессы не осведомлены о наличии друг друга (независимые процессы и не предназначены для совместной работы).

2.Процессы косвенно осведомлены о наличии друг друга (они разделяют доступ к некоторому объекту).

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

а. Конкуренция процессов в борьбе за ресурсы:

Проблемы (подробнее стр 8-9)

- необходимость взаимных исключений («принтер»)

- взаимоблокировка

- голодание

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

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

Доступ к данным осуществляется в режиме чтения и записи. В этом случае вводится новое требование согласования данных.

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

8. Взаимоисключения: программный подход. Алгоритм Деккера

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

9. Взаимоисключения: аппаратная поддержка.

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

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

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

Инструкция проверки и установки значения Инструкция проверяет значение своего параметра i. Если i = 0, то функция заменяет его на 1 и возвращает true. Иначе значение аргумента не изменяется и функция возвращает значение false. Данная функция выполняется автономно, т.е. ее выполнение не может быть прервано.

Инструкция обмена обменивает содержимое регистра и ячейки памяти. В процессе ее выполнения доступ к ячейке памяти остальных процессов блокируется.

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

Недостатки: пережидание занятости; возможно голодание; возможна взаимоблокировка.