Лабораторная 5.
Синхронизация и обмен данными между процессами при параллельной обработке текстовых файлов.

Задание

Дан текстовый файл. Разработать многокомпонентную программу "перемешивания" строк данного файла и сохранения полученного результата в новый текстовый файл. Состав компонентов:

  1. Программа-менеджер, которой в качестве параметров командной строки передается имя исходного текстового файла и количество программ-обработчиков. Менеджер создает все необходимые для работы системы объекты синхронизации, формирует пустой результирующий файл, добавлением к исходному расширения ".res", формирует блок разделяемой памяти, который заполняет информацией об имени исходного и результирующего файлов, количестве строк файла для каждой программы-обработчика, а затем переходит в режим ожидания завершения обработки. По окончании обработки менеджер уничтожает все выделенные ресурсы и завершает свою работу.
    Граничные условия: менеджер может быть запущен только один, запуск дополнительного экземпляра программы должен сопровождаться сообщением об ошибке и завершением работы данного экземпляра.
  2. Программы-обработчики. Программы-обработчики запускаются вручную или скриптом. Каждая программа-обработчик, используя ресурсы, предоставленные менеджером, загружает в оперативную память свою часть исходного файла и сохраняет в результирующем файле соответствующий "перемешанный" набор строк, по окончании сохранения - блокируется в ожидании завершения работы менеджера, по окончании блокировки - завершает свою работу.
    Граничные условия: обработчик может быть запущен только при наличии и доступности набора ресурсов, предоставленных менеджером. Во всех остальных случаях обработчик должен завершать свою работу с сообщением об ошибке.
Общие граничные условия: запрещается создание/модификация/удаление регулярных файлов/каталогов (кроме результирующего файла), до/после/во время работы системы.