Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задание к практической работе



Разработать программу, реализующую действия, указанные в задании к практической работе с учётом следующих требований:

­ все действия, относящиеся как к родительскому процессу, так и к порожденным процессам, выполняются в рамках одного исполняемого файла;

­ обмен данными между процессом-отцом и процессом-потомком предлагается выполнить посредством временного файла: процесс-отец после порождения процесса-потомка постоянно опрашивает временный файл, ожидая появления в нем информации от процесса-потомка;

­ если процессов-потомков несколько, и все они подготавливают некоторую информацию для процесса-родителя, каждый из процессов помещает в файл некоторую структурированную запись, при этом в этой структурированной записи содержатся сведения о том, какой процесс посылает запись, и сама подготовленная информация.

Модифицировать ранее разработанную программу с учётом следующих требований:

­ действия процесса-потомка реализуются отдельной программой, запускаемой по одному из системных вызовов execl(), execv() и т.д. из процесса-потомка;

­ процесс-потомок, после порождения, должен начинать и завершать свое функционирование по сигналу, посылаемому процессом-предком (это же относится и к нескольким процессам-потомкам);

­ обмен данными между процессами необходимо осуществить через программный канал.

Варианты заданий

1. Разработать программу, вычисляющую интеграл на отрезке [A;B] от функции exp(x) методом трапеций, разбивая интервал на K равных отрезков. Для нахождения exp(х) программа должна породить процесс, вычисляющий её значение путём разложения в ряд по формулам вычислительной математики.

2. Разработать программу, вычисляющую значение f(x) как сумму ряда от k=0 до k=N от выражения x^(2k+1)/(2k+1)! для значений x, равномерно распределённых на интервале [0;Pi], и выводящую полученный результат f(x) в файл в двоичном формате. В это время предварительно подготовленный процесс-потомок читает данные из файла, преобразовывает их в текстовую форму и выводит на экран до тех пор, пока процесс-предок не передаст ему через файл ключевое слово (например, "STOP"), свидетельствующее об окончании процессов.

3. Разработать программу, вычисляющую плотность распределения Пуассона с параметром lambda в точке k (k - целое) по формуле f(k)=lambda^k*exp(-lambda)/k!. Для нахождения факториала и exp(-lambda) программа должна породить два параллельных процесса, вычисляющих эти величины путём разложения в ряд по формулам вычислительной математики.

4. Разработать программу, вычисляющую плотность выпуклого распределения в точке х по формуле f(x)=(1-cos(x))/(Pi*x^2). Для нахождения Pi и cos(х) программа должна породить два параллельных процесса, вычисляющих эти величины путём разложения в ряд по формулам вычислительной математики.

5. Разработать программу, вычисляющую значение плотности лог-нормального распределения в точке х (x>0) по формуле f(x)=(1/2)*exp(-(1/2)*ln(x)^2)/(x*sqrt(2*Pi)). Для нахождения Pi, exp(x) и ln(x) программа должна породить три параллельных процесса, вычисляющих эти величины путём разложения в ряд по формулам вычислительной математики.

6. Разработать программу, вычисляющую число размещений n элементов по r ячейкам N=n!/n(1)!*n(2)!*...*n(r)!, удовлетворяющее требованию, что в ячейку с номером i попадает ровно n(i) элементов (i=1..r) и n(1)+n(2)+...+n(r)=n. Для вычисления каждого факториала необходимо породить процесс-потомок.

7. Разработать программу, вычисляющую число сочетаний C(k,n)=n!/(k!*(n-k)!). Для вычисления факториалов n!, k!, (n-k)! должны быть порождены три параллельных процесса-потомка.

8. Разработать программу, вычисляющую значение f(x) как сумму ряда от k=1 до k=N от выражения (-1)^(k+1)*x^(2k-1)/(2k-1)! для значений x, равномерно распределённых на интервале [0;Pi], и выводящую полученный результат f(x) в файл в двоичном формате. В это время предварительно подготовленный процесс-потомок читает данные из файла, преобразовывает их в текстовую форму и выводит на экран до тех пор, пока процесс-предок не передаст ему через файл ключевое слово (например, "STOP"), свидетельствующее об окончании процессов.

9. Разработать программу, вычисляющую плотность нормального распределения в точке x по формуле f(x)=exp(-x^2/2)/sqrt(2*Pi). Для нахождения Pi и exp(-x^2/2) программа должна породить два параллельных процесса, вычисляющих эти величины путём разложения в ряд по формулам вычислительной математики.

10. Разработать программу, вычисляющую интеграл в диапазоне от 0 до 1 от подинтегрального выражения 4*dx/(1+x^2) с помощью последовательности равномерно распределённых на отрезке [0;1] случайных чисел, которая генерируется процессом-потомком параллельно. Процесс-потомок должен завершиться после заранее заданного числа генераций N.

Контрольные вопросы

1. Каким образом может быть порожден новый процесс? Какова структура нового процесса?

2. Если процесс-предок открывает файл, а затем порождает процесс-потомок, а тот, в свою очередь, изменяет положение указателя чтения-записи файла, то изменится ли положение указателя чтения-записи файла процесса-отца?

3. Что произойдет, если процесс-потомок завершится раньше, чем процесс-предок осуществит системный вызов wait()?

4. Могут ли родственные процессы разделять общую память?

5. Каков алгоритм системного вызова fork()?

6. Какова структура таблиц открытых файлов, файлов и описателей файлов после создания процесса?

7. Каков алгоритм системного вызова exit()?

8. Каков алгоритм системного вызова wait()?

9. В чем разница между различными формами системных вызовов типа exec()?

10. Для чего используются сигналы в ОС UNIX?

11. Какие виды сигналов существуют в ОС UNIX?

12. Для чего используются каналы?

13. Какие требования предъявляются к процессам, чтобы они могли осуществлять обмен данными посредством каналов?

14. Каков максимальный размер программного канала и почему?





Дата публикования: 2015-10-09; Прочитано: 453 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...