Skip to content

firsov179/OC_HW_04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание № 4 «Сетевые взаимодействия с применением транспортного протокола UDP»

Фирсов Федор БПИ219.

Условие задачи:

Задача 15. O клумбе – 1. На клумбе растет 40 цветов, за ними непрерывно следят два процесса–садовника и поливают увядшие цветы, при этом оба садовника очень боятся полить один и тот же цветок, который еще не начал вянуть.
Создать приложение, моделирующее состояния цветков на клумбе и действия садовников. Для изменения состояния цветов создать отдельный процесс (а не 40 процессов для каждого цветка), который может задавать одновременное начало увядания для нескольких цветков.

  • На момент начала моделирования все цветы политы.
  • Каждое утро каждый политый цветок с вероятностью 1/2 начинают увядать.
  • Во избежание траура будем считать, что увядший цветок просто некрасивый и никогда не умрет
  • Днем два Садовника Alice и Bob просыпаются и идут слева направо вдоль клумбы и поливают увядшие цветы.
  • У садовником могут быть лейки разных размеров (задается как параметр) стандартно у Alice для 5-ти цветов, а у BOb-a только 4.
  • Если цветок поливается одним садовникам, то другой не будет его поливать благодаря pthread семафору.
  • Садовники не стареют, а цветы никогда не умрут - процесс может длиться вечность)

Запуск и тестирование:

По сравнению с ИДЗ-3 тут ничего не поменялось Для простоты запуска в каждой папке есть Make файл и Bash скрип.

Скрипт компилирует и запускает всех клиентов и сервер с перенаправлением вывода в файл.

При запуске Bash скрипта процесс начинается автоматически, но для появления выходных файлов необходимо его прервать. (CTRL + C)

В папке sample лежат примеры работы

Решение:

В этот раз я начал делать с конца)

8:

  1. Код клиента-клумбы
  2. Код клиента-садовника
  3. Код клиента-принтера
  4. Код сервера
  5. Код скрипта запуска
  6. Код Makefile

Все соединения между клиентом и серверами - UDP. Для различия сервером первая буква запроса - тип.

  1. A/B - запрос полива цветов от Алисы или Боба соответственно.
  2. N - Запрос "начало нового дня", те обновление информации у садовников о завядших цветах.
  3. F - Запрос от цветника, те обновление информации о завядших цветах на сервере.

Есть возможность для подключения до 10 "принтеров" выводящих все сообщения в одной консоли.

6-7:

  1. Код клиента-клумбы
  2. Код клиента-садовника
  3. Код клиента-принтера
  4. Код сервера
  5. Код скрипта запуска
  6. Код Makefile

Для добавления только 1 принтера меняем константу количества на 1.

4-5:

  1. Код клиента-клумбы
  2. Код клиента садовника
  3. Код сервера
  4. Код скрипта запуска
  5. Код Makefile

Меняем константу на 0))

Скрины запуска:

9 9 9

В виде файла

Releases

No releases published

Packages

No packages published