Пример выполнения лабораторной работы


Готовый проект с откомпилированным кодом вы можете скачать здесь:)

В своих поисках Слоны находят источник воды. Это пересыхающий родник, вода из которого вытекает медленно и неравномерно. Приходится ждать, пока наберется порция воды, достаточная для того, чтобы забрать ее хоботом. Набрав порцию воды, Слон медленно ее выпивает, тем временем его место у источника занимает другой Слон, ожидающий следующей порции.

В реализации этой модели порции воды играют роль единиц ресурса, которые подсчитываются семафором. Ганеша создает семафор, получает его идентификатор и передает его всем процессам-Слонам вместе с другими параметрами запуска программы-Слона.

Потребность каждого Слона в воде (выраженная в количестве порций) пропорциональна квадрату веса Слона. (Таким образом мы попытались скомпенсировать наблюдавшуюся в предыдущих примерах тенденцию более вероятной гибели молодых животных.) Мы заранее подсчитали, что общий объем в 145 порций должен с запасом удовлетворить потребность всего стада (хотя этот подсчет можно сделать и в ходе выполнения программы).

Далее Ганеша организует цикл в каждой итерации которого "выдает" Слонам одну порцию воды. "Выдача" состоит в выполнении V-операции на семафоре, которая увеличивает счетчик доступных порций на 1 и в задержке на случайный интервал времени для выработки следующей порции. Параметры задержки подобраны таким образом, чтобы общее время выполнения всех итераций цикла составило примерно те же 30 сек, что и в предыдущих моделях.

Каждый Слон после запуска определяет свою потребность в воде и выполняет цикл, который повторяется до тех пор, пока потребность не будет удовлетворена. Каждая итерация цикла начинается с выполнения P-операции на семафоре. Если значение семафора не 0 (то есть, имеется доступная порция воды), Слон получает порцию (при этом значение семафора уменьшается на 1) и потребляет ее. Если значение семафора 0 (доступных порций нет) Слон переходит в ожидание до появления порции (изменения значения семафора). Время потребления обратно пропорционально возрасту Слона.

Программный модуль, реализующий деятельность Ганеши (ganesha5.c ) и программный модуль, реализующий деятельность одного Слона (elephant5.c) .

В программах используються следующие вызовы:

Ниже приводится пример выполнения этой модели

  08:28:37.370 - Начало работы
  08:28:37.386 Tandy - 2
  08:28:37.396 Aun - 4
  08:28:37.401 Maya - 18
  08:28:37.412 Hao - 10
  08:28:37.417 Assam - 33
  08:28:37.427 BakZap - 20
  08:28:37.434 Hathy - 47
  08:28:37.443 Kitty - 9
  08:28:39.440 Maya - 17
  08:28:39.846 Hao - 9
  08:28:39.877 Assam - 32
  08:28:39.945 Hathy - 46
  08:28:39.961 BakZap - 19
  08:28:41.105 Hathy - 45
  08:28:41.435 BakZap - 18
  08:28:41.526 Hao - 8
  08:28:41.590 Assam - 31
  08:28:41.741 Maya - 16
  08:28:42.161 Hathy - 44
  08:28:42.398 Kitty - 8
  08:28:42.493 BakZap - 17
  08:28:42.701 Assam - 30
  08:28:42.911 Hathy - 43
  08:28:43.003 Hao - 7
  08:28:43.235 BakZap - 16
  08:28:43.560 Maya - 15
  08:28:43.657 Hathy - 42
  08:28:43.981 BakZap - 15
  08:28:44.153 Assam - 29
  08:28:44.403 Hathy - 41
  08:28:44.500 Hao - 6
  08:28:44.727 BakZap - 14
  08:28:44.995 Tandy - 1
  08:28:45.052 Maya - 14
  08:28:45.149 Hathy - 40
  08:28:45.294 Assam - 28
  08:28:45.483 BakZap - 13
  08:28:45.716 Kitty - 7
  08:28:45.895 Hathy - 39
  08:28:45.913 Aun - 3
  08:28:46.007 Hao - 5
  08:28:46.229 BakZap - 12
  08:28:46.426 Assam - 27
  08:28:46.554 Maya - 13
  08:28:46.642 Hathy - 38
  08:28:46.975 BakZap - 11
  08:28:47.388 Hathy - 37
  08:28:47.815 Hao - 4
  08:28:47.877 Assam - 26
  08:28:48.045 Maya - 12
  08:28:48.051 BakZap - 10
  08:28:48.464 Hathy - 36
  08:28:48.798 BakZap - 9
  08:28:49.009 Assam - 25
  08:28:49.029 Kitty - 6
  08:28:49.210 Hathy - 35
  08:28:49.312 Hao - 3
  08:28:49.544 BakZap - 8
  08:28:49.866 Maya - 11
  08:28:49.956 Hathy - 34
  08:28:50.290 BakZap - 7
  08:28:50.461 Assam - 24
  08:28:50.702 Hathy - 33
  08:28:50.809 Hao - 2
  08:28:51.037 BakZap - 6
  08:28:51.358 Maya - 10
  08:28:51.448 Hathy - 32
  08:28:51.592 Assam - 23
  08:28:51.783 BakZap - 5
  08:28:52.017 Kitty - 5
  08:28:52.194 Hathy - 31
  08:28:52.529 BakZap - 4
  08:28:52.616 Hao - 1
  08:28:52.849 Maya - 9
  08:28:53.044 Assam - 22
  08:28:53.270 Hathy - 30
  08:28:53.605 BakZap - 3
  08:28:53.883 - Слон Tandy нормально завершился  
  08:28:53.966 Hathy - 29
  08:28:54.063 - Слон Hao нормально завершился
  08:28:54.091 Assam - 21
  08:28:54.211 BakZap - 2
  08:28:54.304 Aun - 2
  08:28:54.425 Maya - 8
  08:28:54.513 Hathy - 28
  08:28:54.737 BakZap - 1
  08:28:54.905 Kitty - 4
  08:28:55.039 Hathy - 27
  08:28:55.103 Assam - 20
  08:28:55.263 - Слон BakZap нормально завершился  
  08:28:55.457 Maya - 7
  08:28:55.510 Hathy - 26
  08:28:55.805 Assam - 19
  08:28:55.955 Hathy - 25
  08:28:56.348 Maya - 6
  08:28:56.486 Assam - 18
  08:28:56.581 Hathy - 24
  08:28:56.753 Kitty - 3
  08:28:57.027 Hathy - 23
  08:28:57.338 Assam - 17
  08:28:57.420 Maya - 5
  08:28:57.474 Hathy - 22
  08:28:57.920 Hathy - 21
  08:28:58.019 Assam - 16
  08:28:58.312 Maya - 4
  08:28:58.366 Hathy - 20
  08:28:58.712 Kitty - 2
  08:28:58.812 Hathy - 19
  08:28:58.872 Assam - 15
  08:28:59.203 Maya - 3
  08:28:59.257 Hathy - 18
  08:28:59.553 Assam - 14
  08:28:59.712 Aun - 1
  08:28:59.883 Hathy - 17
  08:29:00.095 Maya - 2
  08:29:00.344 Hathy - 16
  08:29:00.435 Assam - 13
  08:29:00.690 Kitty - 1
  08:29:00.790 Hathy - 15
  08:29:01.117 Assam - 12
  08:29:01.186 Maya - 1
  08:29:01.237 Hathy - 14
  08:29:01.693 Hathy - 13
  08:29:01.975 Assam - 11
  08:29:02.087 - Слон Maya нормально завершился
  08:29:02.261 Hathy - 12
  08:29:02.419 - Слон Kitty нормально завершился
  08:29:02.527 Assam - 10
  08:29:02.562 Hathy - 11
  08:29:02.828 Hathy - 10
  08:29:02.939 Assam - 9
  08:29:03.094 Hathy - 9
  08:29:03.110 - Слон Aun погиб
  08:29:03.111 - Слон Assam погиб
  08:29:03.111 - Слон Hathy погиб


 

© life-prog.ru