Robi2810 / OS_IDZ_2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Операционные системы

Индивидуальное домашнее задание №2

Вариант 24

Вишняков Родион Сергеевич

группа БПИ213
23 апреля 2023 г.

Задание: Задача о наследстве. У старого дона Энрике было два сына, у каждого из сыновей – еще по два сына, каждый из которых имел еще по два сына. Умирая, дон Энрике завещал все свое богатство правнукам в разных долях. Адвокат дон Хосе выполнил задачу дележа наследства в меру своих способностей. Правнуки заподозрили адвоката в укрывательстве части наследства. Требуется создать многопоточное приложение, которое при известных сумме завещания дона Энрике и доле каждого наследника, проверяет честность адвоката. При решении использовать принцип дихотомии. Примечание. Необходимо учесть изощренный ум адвоката, который может не только присваивать себе часть суммы, но и выполнять другие манипуля- ции с суммой наследства.

Typing SVG

Отчёт

Формат входных данных:

  • сумма наследства: целое число
  • доли наследников: double, например 0.1 это 10% от наследства

4 балла

Разработать консольное приложение, в котором единый родительский процесс запускает требуемое число дочерних процессов. Множество процессов взаимодействуют с использованием семафоров в стандарте UNIX SYSTEM V. Обмен данными ведется через разделяемую память в стандарте UNIX SYSTEM V.

Чтобы скомпилировать: gcc 4.c Чтобы запустить: ./a.out 100 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.3

img

5 баллов

В дополнение к программе на предыдущую оценку необходимо разработать программу, в которой для взаимодействия процессов используется один из двух вариантов, описанных выше, но не реализованных на предшествующую оценку. Множество процессов взаимодействуют с использованием неименованных POSIX семафоров расположенных в разделяемой памяти. Обмен данными также ведется через разделяемую память в стандарте POSIX. Чтобы скомпилировать: gcc 5.c -lpthread -lrt

Чтобы запустить: ./a.out 100 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.3

img

6 баллов

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

Чтобы скомпилировать: gcc 6.c -lpthread -lrt

Чтобы запустить: ./a.out 100 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.3 img

7 баллов

В дополнение к программам на предыдущие оценки необходимо разработать приложение, состоящую из отдельных программ–процессов, запускаемых независимо друг от друга. С использованием семафоров и разделяемой памяти организовать между ними взаимодействие. Множество независимых процессов взаимодействуют с исполь- зованием семафоров в стандарте UNIX SYSTEM V. Обмен данными ведется через разделяемую память в стандарте UNIX SYSTEM V.

Чтобы скомпилировать:

  • В терминале №1 gcc 7-1.c -lpthread -lrt -o 7-1
  • В терминале №2 gcc 7-2.c -lpthread -lrt -o 7-2

Чтобы запустить:

  • В терминале №1 ./7-1 100
  • В терминале №2 ./7-2 100 0.1 0, где 100 - сумма наследства, 0.1 доля наследника, 0 индекс наследника. Необходимо последовательно 8 раз ввести данную команду, изменяя долю и индекс наследника

img

8 баллов

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

Чтобы скомпилировать:

  • В терминале №1 gcc 8-1.c -lpthread -lrt -o 8-1
  • В терминале №2 gcc 8-2.c -lpthread -lrt -o 8-2

Чтобы запустить:

  • В терминале №1 ./8-1 100
  • В терминале №2 ./8-2 100 0.1 0, где 100 - сумма наследства, 0.1 доля наследника, 0 индекс наследника. Необходимо последовательно 8 раз ввести данную команду, изменяя долю и индекс наследника

img

About


Languages

Language:C 100.0%