Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование для ЭВМ, Л.р.1-4.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
411 Кб
Скачать
  1. Алгоритмы

Алгоритм (А1) процедуры получения ресурса:

Шаг 1. Если значение семафора ресурса положительно, перейти к шагу 2, иначе перейти к шагу 3;

Шаг 2. Уменьшить значение семафора ресурса на 1 и выйти из процедуры;

Шаг 3. Добавить процесс в список ожидания ресурса.

Схема алгоритма изображена на рис. 1.

Алгоритм (А2) процедуры освобождения ресурса:

Шаг 1. Если очередь ожидания ресурса пуста, перейти к шагу 2, иначе перейти к шагу 3;

Шаг 2. Увеличить значение семафора ресурса на 1 и выйти из процедуры;

Шаг 3. Извлечь из очереди следующий процесс и передать ему ресурс.

Схема алгоритма изображена на рис. 2.

Рис. 1 Схема алгоритма А1 Рис. 2 Схема алгоритма А2

(процедура получения ресурса) (процедура освобождения ресурса)

  1. Тестовый пример

Дано: 8 процессов, 3 ресурса.

Задание: требуется разработать:

  1. Примитивы V(S), P(S), SIGNAL, WAIT, работающие в среде 8 процессов и 3 ресурсов;

  2. Структуру данных ресурса R;

  3. Структуру указателя описи ресурса;

  4. Структуру очереди с её заголовком;

  5. Программу вставки в очередь Insert[q];

  6. Программу удаления Remove[q];

  7. Распределитель Allocator;

  8. Построить программу динамического моделирования.

Результат:

Результат работы программы приведёт в Приложении 1.

Код программы приведён в Приложении 2.

  1. Контрольные вопросы

  1. Что такое семафор?

  2. Для чего применяются семафоры?

  3. Что такое операции V(s) и P(s)?

  4. Что такое операции SIGNAL и WAIT?

  5. Что включает в себя опись ресурса?

  6. Что такое список ожидающих процессов?

  7. Что содержит заголовок очереди?

  8. Что такое Allocator(r, k, L)?

  9. Что значит «неделимая (атомарная) операция»?

  10. Чем грозило бы «деление» V(s) или P(s)?

  1. Варианты заданий

Таблица 1

Вариант

Кол-во процессов

Кол-во ресурсов

Вариант

Кол-во процессов

Кол-во ресурсов

1

2

1

16

3

5

2

3

1

17

2

5

3

5

2

18

4

2

4

7

5

19

5

3

5

2

2

20

4

1

6

3

2

21

4

2

7

3

3

22

6

4

8

2

4

23

3

4

9

5

4

24

7

2

10

6

2

25

4

5

11

8

2

26

7

4

12

5

1

27

6

3

13

4

3

28

7

3

14

2

3

29

7

6

15

5

5

30

8

3