Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05_Konspkt_lektsy_OS / Лекции_ОС_07.doc
Скачиваний:
51
Добавлен:
02.04.2015
Размер:
69.12 Кб
Скачать

Терминология

активное ожидание (в цикле) (busy wait)

алгоритм Деккера (Dekker's Algorithm)

алгоритм Лэмпорта, алгоритм кондитера (Lamport's Bakery Al­gorithm)

асинхронность (asynchronism)

асинхронные параллельные процессы (asynchronous concurrent processes)

бесконечное откладывание (процесса) (indefinite postponement)

блокировка памяти (защитная) (storage interlock)

взаимоисключение (mutual exclusion)

взаимоисключение для двух процессов (two-process mutual exclusion)

взаимоисключение для n процессов (n-process mutual exclusion)

входвзаимоисключения (entermutualexclusion)

выделение (в самостоятельный элемент), форматирование, обрамле­ние ограничителями (encapsulation)

выходвзаимоисключения (exitmutualexclusion)

двоичный семафор (binary semaphore)

Дейкстра (Dijkstra)

жесткая (пошаговая) синхронизация (lockstep synchronization)

защищенная переменная (protected variable)

код входа взаимоисключения (mutual exclusion entry code)

код выхода взаимоисключения (mutual exclusion exit code)

команда проверки и установки (testandset instruction)

координированный (последовательный) доступ (sequentialization)

критическая область (critical section)

критический участок (critical region)

неделимые операции (indivisible operations)

общие, разделяемые, совместно (коллективно) используемые дан­ные (shared data)

общие, разделяемые, совместно (коллективно) используемые ре­сурсы (shared resource)

операция Р (Р operation)

операция V (V operation)

параллелизм (совмещение) (concurrency)

параллельные вычисления (параллельная обработка) (parallel pro­cessing)

параллельное программирование (concurrent programming)

примитивы взаимоисключения (mutual exclusion primitives)

протокол блокирования/пробуждения (block/wakeup protocol)

семафор (semaphore)

синхронизация процессов (process synchronization)

степень параллелизма (level of parallelism)

считающий семафор (семафор со счетчиком) (counting semaphore)

тупик, дедлок (deadlock)

цепочка (нить, последовательность) управления (thread of control)

cobegin/coend

parbegin/parend

Упражнения

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

2.Преобразуйте следующее выражение с использованием конструкции par­begin/parend для обеспечения максимального параллелизма: 3*a*b+4/(c4-d)**(e—f).

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

а : = b+с;

parbegin

d : = b*c - x;

е : = а/6+п**2 parend

4. Почему может оказаться неприемлемой следующая программа:

parbegin

а : = b+c;

d : = b*c—x;

е : = a/6+n**2 parend

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

6.Для реализации взаимоисключения можно использовать алгоритм Деккера, команду проверки и установки testandset и операции Р и V над семафорами. Укажите сходства и различия всех этих способов, а также рассмотрите их от­носительные достоинства и недостатки.

7.Мы предполагали, что, когда два процесса одновременно пытаются выпол­нить примитив «входвзаимоисключения», «победитель» выбирается случайным образом. Обсудите следствия этого предположения.

8.Прокомментируйте следующий пример использования примитивов взаимоисключения:

какиетооператорыодии;

входвзаимоисключения;

какиетооператорыдва;

входвзаимоисключения;

какиетооператорытри;

выходвзаимоисключения;

какиетооператорычетыре;

выходвзаимоисключения;

какиетооператорыпять

9.В чем заключается действительный смысл алгоритма Деккера?

10.Проведите исчерпывающий временной анализ алгоритма Деккера. Имеются ли в этом алгоритме какие-либо слабости?

11. Не ссылаясь на известные варианты реализации примитивов взаимоисклю­чения для п процессов, разработайте собственный способ решения этой проблемы. (Это очень сложная проблема.)

12.Способ реализации взаимоисключения для п процессов, который предло­жили Эйзенберг и Макгайр (Ei 72), гарантирует, что процесс войдет в свой крити­ческий участок не более чем за п—1 попыток. Можно ли надеяться, что удастся получить лучшее решение для n процессов?

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

14.Объясните достаточно подробно, каким образом можно реализовать в ядре операционной системы семафоры и операции над семафорами.

15.Объясните, каким образом при помощи запрещения и разрешения преры­ваний можно достаточно эффективно реализовать примитивы взаимоисключения в однопроцессорной машине.

16. Почему V-операцию необходимо выполнять как неделимую?

17..Что произойдет в программе, приведенной на рис. 4.11, если в процессе-потребителе поменять местами Р-операторы? Что произойдет, если в процессе-производителе поменять местами V-операторы?

18. Перепишите программу, приведенную на рис. 4.9, с использованием счи­тающих семафоров, с тем чтобы обеспечить управление доступом к пулу из пяти идентичных ресурсов.

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

а) Прокомментируйте следующий вариант использования этих новых при­митивов взаимоисключения:

какиетооператорыодин;

входвзаимоисключения(а);

какиетооперациис«а»;

входвзаимоисключения (b);

какиетооперациис«а»и«b»;

выходвзаимоисключения(b);

ещекакиетооперациис«а»;

выходвзаимоисключения(а);

какиетооператорыдва;

б) Предположим, что два процесса, приведенных ниже, работают парал­лельно. Какие при этом возможны результаты?

ПРОЦЕССОДИН: ПРОЦЕССДВА:

… …

входвзаимоисключения(а); входвзаимоисключения(b);

… …

входвзаимоисключения(b); входвзаимоисключения(а);

… …

выходвзаимоисключения(b); выходвзаимоисключения(а);

… …

выходвзаимоисключения(а); выходвзаимоисключения(b);

… …

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

21.Что произойдет (и произойдет ли что-либо), если при реализации алгоритма Деккера поменять местами оба оператора присваивания в коде выхода взаимо­исключения?

Соседние файлы в папке 05_Konspkt_lektsy_OS