Добор 16.11.2016
Открыто с: среда, 16 ноября 2016, 18:30
Срок сдачи: среда, 16 ноября 2016, 20:30
Требуемые условия завершения
Указание: задачи решаются на языке C при помощи интерфейса Windiows API или POSIX (по выбору).
I вариант
- [20 баллов] Родительский процесс должен считывать по одной строке из консоли (признак завершения — пустая строка) и передавать её дочернему процессу. Дочерний процесс должен выводить строку в текстовый файл. Необходимо организовать обмен между процессами при помощи неименованных каналов.
- [20 баллов] Задано n имён текстовых файлов. Программа должна в n потоках считывать целые значения из этих файлов и прибавлять получаемые значения к глобальной переменной, блокируемой мьютексом.
- [20 баллов] Решить предыдущую задачу для случая n = 2 при помощи родительского и дочернего процесса, а также переменной в общей памяти, доступ к которой ограничен семафором.
II вариант
- [20 баллов] Родительский процесс должен найти все простые числа, не большие заданного значения, и передать их дочернему процессу. Дочерний процесс должен вывести их на консоль. Необходимо организовать обмен между процессами при помощи неименованных каналов.
- [20 баллов] Задан массив целых чисел. Каждый k-й поток (k меняется от 0 до n - 1, всего n потоков) должен считывать элементы массива с номерами k, n + k, n + 2 k и т. д. (до конца массива) и прибавлять их к локальной переменной, содержащей сумму элементов массива, обрабатываемых текущим потоком. По окончании суммирования данных всеми потоками основной поток должен найти сумму всех локальных сумм потоков и вывести полученное значение на консоль.
- [20 баллов] Решить предыдущую задачу для случая n = 2 при помощи родительского и дочернего процесса, а также переменной в общей памяти, доступ к которой ограничен семафором.