Назад
Индивидуальные задания к лабораторной работе №10
- Вычислить для n (n>3) клиентов 12 процентнов от заданной пользователем суммы кредита. В потомке 1 вычислить 12-ти процентную выплату для первой половины клиентов [1 – n/2], а в потомке 2 – для второй половины клиентов [(n/2+1) – n].
- Выполнить порождение двух дочерних процессов и проверку статуса их завершения с помощью обработчика сигнала SIGCHLD.
В теле каждого процесса определить собственный идентификатор и идентификатор родителя. Выполнение потомка 1 завершить с кодом 200.
Выполнение потомка 2 – с помощью сигнала, посланного родителем после того, как родитель получил от второго потомка сигнал –
извещение про возможность завершения. Родитель в конце своей деятельности уходит в цикл ожидания, выход из которого осуществить только
после завершения обеих процессов-потомков (реализовать с помощью сигналов).
- Выполнить порождение «Сына», «Внука» и «Правнука». Каждый потомок отправляет сигнал – извещение о рождении своему родителю и
переходит в режим ожидания, родитель, получив сигнал, выводит сообщение «У меня родился сын!» и отправляет потомку сигнал на завершение.
Потомок завершается только по получению сигнала SIGKILL из трех возможных.
В теле каждого процесса определить и вывести на экран информацию о процессе: идентификатор и поколение (родитель – 1 поколение,
сын – 2 поколение и т.д.).
- Вычислить число сочетаний C(k,n)=n!/(k!∙|n-k|)!), где n>0, k>0, n≠k. Вычисления n!, k!, |n-k|! выполнить в трех процессах-потомках соответственно.
- Используя сигналы, разработать программную модель следующей ситуации. Поздно вечером молодой «философ» изучает труды всемирно известных философов. Посмотрев на часы, «философ» задумывается о том, что уже пора идти спать, так как завтра нужно рано вставать, однако, ему хочется продолжить изучение. Так «философ» переходит в состояние противоречия с самим собой: он то напоминает себе, что пора идти спать, то продолжает изучение. Только после пятого напоминания он соглашается с тем, что нужно заканчивать изучение и идет спать. Все действия выполнить в рамках одного исполняемого файла.
- Вычислить плотность нормального распределения в точке x по формуле
f(x)=Exp(-x2/2)/Sqrt(2∙x), где x>0. Вычисления экспоненты и квадратного корня выполнить в двух процессах-потомках соответственно.
- Вычислить плотность выпуклого распределения в точке х по формуле
f(x)=(1-Cos(x))/(x2), где x>0. Вычисление Cos(х) и x2 выполнить в двух процессах-потомках соответственно.
- Вычислить значение функции f(x)=((-1)x+x(2x-1))/(2x-1)!, где x>0. Вычисление (-1)x, x(2x-1), (2x-1)! выполнить в трех процессах-потомках соответственно.
- Вычислить значение функции f(x,k)=(x(2k+1)+x(5k-1))/(2k+1). Вычисление (2k+1) и x(5k-1) выполнить в двух процессах-потомках соответственно.
- Разработать программную модель с помощью обмена сигналами между процессами. У отца есть трое сыновей, которых он «отправил на прогулку». Через некоторое время отец просит каждого сына завершить прогулку, однако сыновья отвечают отказом в течение времени, зависящем от возраста (чем младше сын, тем он быстрее отвечает). Получив отказ, отец повторяет свою просьбу, однако, его дети соглашаются с ним лишь с третьего раза. Если за определенное время какой-либо из сыновей не согласился с отцом, последний перестает считать его своим ребенком.
- Определить, сумма цифр какого целого числа больше из заданных трех. Подсчет суммы цифр каждого числа выполнить в отдельном процессе-потомке.
- Выполнить поиск максимального из 8 чисел с использованием поиска большего из двух чисел. Поиск большего из двух для каждой пары чисел выполнить в отдельном процессе потомке.
- Вычислить площадь кольца по значениям внутреннего и внешнего радиусов, используя функцию вычисления площади круга. Вычисление площади круга с внутренним и внешним радиусом выполнить в двух процессах-потомках соответственно.
- Выполнить обмен сигналами между родительским и дочерним процессами по следующей схеме. Родитель после порождения посылает потомку сигнал на завершение SIGTERM, однако потомок игнорирует его. Через некоторое время родитель проверяет статус потомка и, если тот не завершился, посылает сигнал SIGINT. Потомок, получив сигнал SIGINT, не завершается, а отправляет родителю сигнал SIGUSR1 – отказ от завершения. Получив сигнал SIGUSR1 родитель принудительно завершает потомка.
- Выполнить порождение трех дочерних процессов. Каждый из потомков выполняется заданное родителем случайное время (реализовать с помощью сигнала SIGALRM). О завершении потомка родитель узнает с помощью сигнала SIGCHLD. Если по истечении некоторого времени родитель не получил от потомка сигнал SIGCHLD, он отправляет потомку сигнал на завершение, однако, потомок реагирует на данный сигнал лишь со второго раза.
Назад