Реализуйте процесс взаимного исключения (mutual exclusion) для процесов , используя именные семафоры стандарту POSIX. Время работы на общем ресурсе симулировать с помощью, например функции sleep(). Для демонстрации правильной работы программы используйте вывод сообщений через отдельные процессы до, во время и после критической секции и функции, которая дает значение семафора. Не забудьте инициализировать семафор с соответствующим значением, как только он будет создан.
Создайте свою собственную библиотеку в использовании простых функций: для создания, открывания, получения значения, работы, закрывания и удаления семафора(используя соответствующие функции системы / библиотеки и включая обработку ошибок).
Напишите специальную программу для воспроизведения процессов взаимного исключения - на основе функций fork и exec(название программы для инициализации процессов, количество процессов и количество критических/приватных каждого процесса передавать через аргументы программы "Множителя"). Эта программа должна изначально создать и инициировать семафор, a в конце - когда все его дочерние процессы завершаться - удалите его.
Чтобы проверить взаимное исключение процессов, пусть программа "Множитель" в самом начале создаст текстовый файл number.txt и запишет в нем число со значением 0, a программа которая реализует взаимное исключение в своей критической секции читает значение числа, сохраненного в этом файле, затем увеличивает его на 1 и после некоторого (например, случайного) моменту времени сохраняет обратно в файл. После того, как все процессы закончились которые реализуют взаимное исключение, процесс "Множитель" должен проверить правильность сохраненного последнего номера записаного в файл и написать соответствующее сообщение.
Также проверьте, какое будет окончательное значение числа без использования критической секции.
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |