Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО-Вопросы к экзамену-2014 (Восстановлен).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
1.16 Mб
Скачать
  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;

Задачи на понимание алгоритмов решения задач, связанных с тупиками

  1. Рассматривается система с повторно используемыми ресурсами. Дан граф повторно используемых ресурсов. Проверить, не является ли состояние, которое он представляет, тупиковым (выполнить редукцию графа).

  2. Рассматривается система с повторно используемыми единичными ресурсами. Дан граф повторно используемых ресурсов. Проверить, не является ли состояние, которое он представляет, тупиковым (различными способами, выбрать оптимальный).

  3. Рассматривается система с повторно используемыми ресурсами. Дан граф повторно используемых ресурсов. Проверить, является ли состояние системы выгодным. Проверить, не является ли состояние, которое он представляет, тупиковым (различными способами, выбрать оптимальный).

  4. Рассматривается система с потребляемыми ресурсами. Дан граф потребляемых ресурсов. Проверить, не является ли состояние, которое он представляет, тупиковым. Какими способами это можно сделать?

  5. Рассматривается система с потребляемыми ресурсами. Дан граф потребляемых ресурсов. Проверить, является ли состояние системы выгодным. Проверить, не является ли состояние, которое он представляет, тупиковым. Какими способами это можно сделать?

  6. Рассматривается система с обобщенными ресурсами. Дан граф обобщенных ресурсов. Проверить, не является ли состояние, которое он представляет, тупиковым. Какими способами это можно сделать?

Задачи на анализ состояний системы для выявления тупиков

  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. Пусть в системе есть два процесса 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.

Построить граф состояний системы. Возможны ли в системе тупиковые состояния?