Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи по СППО.doc
Скачиваний:
4
Добавлен:
24.09.2019
Размер:
194.56 Кб
Скачать
  1. Задача “обедающие философы” формулируется следующим образом: “Пять философов садятся обедать за круглый стол, в центре которого стоит одно блюдо со спагетти. На столе имеется пять тарелок и пять вилок между ними. Философ может начать есть, если у него есть тарелка и две вилки, которые он может взять с двух сторон от своей тарелки. Философ может отдать одну вилку ближайшему соседу только после того, как он положит в свою тарелку спагетти, а вторую – после того, как закончит обед”. О соображениях гигиены мы здесь умалчиваем. Может ли описанный ниже на псевдокоде процесс представить алгоритм поведения философа за столом?

    1. Решение:

Инициализация:

{ “Вилки”, которые используются философами – это разделяемые ресурсы, защищенные бинарными семафорами: }

common B: array[0..4] of binary semaphore; { глобальный массив семафоров}

for I:=0 to 4 do B[I]:=1; { все “вилки” свободны }

process Философ(I: Integer);

{ Это процесс, описывающий поведение I-го философа. }

{ “Вилки”, которыми он ест, защищаются двумя бинарными семафорами. }

common B: array[0..4] of binary semaphore

begin { Пытается получить вилки: }

while (P(B[I])=0) or (P(B[(I+1) mod 5])=0) do ;

{ Ест спагетти, используя вилки, находящиеся слева и справа } …

{ Освобождает вилки: } V(B[(I+1) mod 5]); V(B[I]);

end;

    1. Решение:

Инициализация:

{ “Вилки”, которые используются философами – это разделяемые ресурсы, защищенные бинарными семафорами: }

common B: array[0..4] of binary semaphore; { глобальный массив семафоров}

for I:=0 to 4 do B[I]:=1; { все “вилки” свободны }

process Философ(I: Integer);

{ Это процесс, описывающий поведение I-го философа. }

{ “Вилки”, которыми он ест, защищаются двумя бинарными семафорами. }

common B: array[0..4] of binary semaphore

begin

{ Пытается получить вилки: }

P(B[I]); P(B[(I+1) mod 5]);

{ Ест спагетти, используя вилки, находящиеся слева и справа } …

{ Освобождает вилки: }

V(B[(I+1) mod 5]); V(B[I]);

end;

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

  1. Пусть в системе есть два процесса P1 и P2 и два единичных повторно используемых ресурса R1 и R2. Процессы имеют следующее описание:

Процесс 1

Процесс 2

process P1 ;

begin ...

While true do

begin …

request ( R1, 1) ;

...

request ( R2, 1) ;

...

release ( R2, 1) ;

...

release ( R1, 1) ;

...

end

...

end.

process P2 ;

begin ...

While true do

begin …

request ( R2, 1) ;

...

request ( R1, 1) ;

...

release ( R2, 1) ;

...

release ( R1, 1) ;

...

end

...

end.

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

  1. Для описанной выше системы с ПИР покажите, как будут меняться состояния при выполнении процессов, представляя их графами ПИР (выполните «трассировку» для трех возможных вариантов параллельного выполнения процессов). Если имеется тупиковое состояние, покажите с помощью операций над графом ПИР, последовательно выполняя их в соответствии с кодом процессов, каким образом система может перейти в тупиковое состояние.

  2. Пусть в системе есть два процесса P1 и P2 и два потребляемых ресурса R1 и R2, используемых этими процессами. Ресурс R1 производится процессом P1, а R2 – P2. Процессы имеют следующее описание:

Процесс 1

Процесс 2

process P1 ;

begin ...

While true do

begin …

request ( R2, 1) ;

...

release ( R1, 1) ;

...

end

...

end.

process P2 ;

begin ...

While true do

begin …

request ( R1, 1) ;

...

release ( R2, 1) ;

...

end

...

end.

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

  1. Для описанной выше системы с ПР покажите, как будут меняться состояния при выполнении процессов, представляя их графами ПР (выполните «трассировку» для различных возможных вариантов параллельного выполнения процессов). Если имеется тупиковое состояние, покажите с помощью операций над графом ПР, последовательно выполняя их в соответствии с кодом процессов, каким образом система может перейти в тупиковое состояние.

  2. Для описанной выше системы с ПИР (задание 1 в данной теме) покажите, покажите, каким образом изменится ее состояние, если процессы «успеют» выполнить следующие действия (в том порядке, который показан ниже – в таблице); впишите в ячейки таблицы операции, которые выполняет система в том порядке (система выделяет ресурсы в ответ на запросы), который обеспечивает данную трассу процессов:

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

Задание А

Процесс 1

Процесс 2

...

...

...

request ( R2, 1) ;

request ( R1, 1) ;

...

...

...

request ( R2, 1) ;

...

...

...

release ( R2, 1) ;

...

...

...

...

request ( R1, 1) ;

...

...

release ( R1, 1) ;

...

...

...

...

release ( R2, 1) ;

...

...

...

release ( R1, 1) ;

...

...

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

Задание В

Процесс 1

Процесс 2

...

...

request ( R1, 1) ;

...

...

...

request ( R2, 1) ;

...

...

request ( R2, 1) ;

release ( R2, 1) ;

...

...

...

...

...

release ( R1, 1) ;

...

...

...

...

request ( R1, 1) ;

...

...

...

release ( R2, 1) ;

request ( R1, 1) ;

...

...

release ( R1, 1) ;

request ( R2, 1) ;

...

...

...

...

request ( R2, 1) ;

  1. Нарисуйте граф ПИР, представляющий состояние системы после выполнения операции 9 и после выполнения операции 15 (порядок выполнения операций показан выше).

  2. Выполните редукцию построенных графов ПИР (задание 7), покажите порядок редукции по шагам, поясните их.

  3. Пусть в системе с потребляемыми ресурсами (задание 3) на начальный момент выполнения процессов имеется 1 единица ресурса R1. Покажите в таблице возможный порядок выполнения операций процессами при этих условиях (Заполните ячейки таблицы, вписав туда операции, которые выполняются процессами и системой, в нужном порядке. Операции, выполняемые системой, впишите в ячейки (столбец), которые отведены для операций процесса, «в интересах» которого эти операции выполняются.)

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

    Задание В

    Процесс 1

    Процесс 2

  4. Нарисуйте граф ПР для состояния системы (задание 9) после выполнения операции 5, после выполнения операции 10. Покажите результаты редукции этих графов (покажите порядок редукции по шагам, поясните их).

  5. Повторите выполнение заданий 9‑10 при условии, что в системе нет ни одной единицы ресурсов R1 и R2 на начало выполнения процессов.