Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6262.pdf
Скачиваний:
37
Добавлен:
13.02.2021
Размер:
6.54 Mб
Скачать

166

4.6 Лабораторная работа по теме №10

Выполнение лабораторной работы №10 опирается на теоретический материал и примеры, изложенные в данном разделе данного методического руководства, поэтому, приступая к выполнению работы, следует сначала подробно изучить подразделы 4.1 и 4.2, где дано описание проблематики синхронизации процессов, которые выполняют свою работу асинхронно.

Изучив основную идею и назначение системного пакета System V IPC, следует познакомиться с набором утилит, которые поддерживат этот пакет. Для этого, следует изучить подраздел 4.3 и, например, запустить утилиту ipcs без параметров, которая, как показано на рисунке 4.3, выведет информацию о семафорах, разделяемых сегментах памяти и очередях сообщений, используемых в данный момент в среде ОС.

Рисунок 4.3 — Вывод информации утилитой ipcs без параметров

Далее, следует перейти к основной тематике данной лабораторной работы, которая

167

посвящена изучению семафоров, где вся последовательность выполнения заданий разделена на две группы:

подраздел 4.6.1 — синхронизация двух процессов, позволяет закрепить основные навыки работы с системными вызовами семафоров;

подраздел 4.6.2 — задача «Обедающие философы», демострирует реальный

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

Чтобы во время выполнения работы были доступны проекты примеров среды разработки Eclipse, следует:

выйти из среды разработки Eclipse, если она - запущена;

правой кнопкой мыши активировать меню значка EclipseC, расположенного на рабочем столе и выбрать пункт меню «Свойства...»;

отредактировать команду запуска, указав рабочую область среды Eclipse в директорию /home/upk/lab10, как показано на рисунке 4.4.

закрыть окно «Eclipse — Свойства» и снова запустить среду разработки, которая должна содержать проекты лабораторной работы №10.

Рисунок 4.4 — Настройка среды разработки Eclipse С

168

4.6.1 Синхронизация двух процессов

Системные вызовы для работы с семаформами описаны в подразделе 4.4 данного руководства.

Следует изучить учебный материал этого подраздела и выполнить следующее задание.

Задание 4.1

Запустить среду разработки EclipseС, с настройками, указанными ранее, а затем разобраться с примерами программ, реализованными в виде двух проектов: lab10.1

и lab10.2.

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

Отразить содержание проделанной работы в личном отчете.

4.6.2 Задача «Обедающие философы»

Задача «Обедающие философы» является классическим примером взаимодействия процессов, которое может привести к их взаимной блокировке. Поэтому, решение данной задачи подробно изложено в подразделе 4.5 данного рукововдства.

Задание 4.2

Запустить среду разработки EclipseС и, в процессе изучения подраздела 4.5, выполнить данное задание, воспользовавшись модержимым проектов lab10.3 и lab10.4.

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

Отразить содержание проделанной работы в личном отчете.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]