ЛР.3. Posix-программирование, fork и exec.
Задание 1
Используя алгоритм быстрой сортировки, разработать программу, которая
сортирует содержимое переданного ей бинарного файла, выполняя его загрузку и выгрузку
низкоуровневыми файловыми функциями. Вторым и третьим
параметром могут передаваться номер начального и конечного байта в сортируемом
файле (их отсутствие означает требование упорядочить весь файл).
На первом шаге сортировки содержимое файла (части файла) разбивается на два отрезка
в соответствии с правилами быстрой сортировки. В классическом алгоритме следующий шаг -
последовательная рекурсивная
сортировка сначала левой, затем - правой частей. Вместо этого предлагается для левой части запустить дочерний
процесс, после чего в родительском процессе выполнить сортировку правой части. Запущенная программа
должна завершить свою работу по окончании сортировки всего файла.
Если левая часть меньше заранее определенного размера S, она должна сортироваться на месте, без запуска
дочернего процесса.
Количество выполняющихся в текущий момент времени дочерних процессов
не должно превышать заранее заданного значения X.
При достижении указанного предела, вместо запуска дочернего процесса, следует сортировать левую часть на месте.
Задание 2
Осуществить сортировку с помощью механизма fork-exec. Сравнить скорости работы штатного алгоритма сортировки, fork-сортировки
и fork-exec-сортировки на больших файлах и различных значениях S, X. Объяснить полученные результаты.