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

Задание к лабораторной работе



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

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

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

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

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

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

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

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

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

  1. Разработать программу, вычисляющую число сочетаний C(k,n)=n!/(k!*(n-k)!). Для вычисления факториалов n!, k!, (n-k)! должны быть порождены три параллельных процесса-потомка.
  2. Разработать программу, вычисляющую плотность нормального распределения в точке x по формуле f(x)=Exp(-x**2/2)/Sqrt(2*Пи). Для нахождения Пи и Exp(-x**2/2) программа должна породить два параллельных процесса, вычисляющих эти величины путем разложения в ряд по формулам вычислительной математики.
  3. Разработать программу, вычисляющую плотность выпуклого распределения в точке х по формуле f(x)=(1-Cos(x))/(Пи*x**2). Для нахождения Пи и Cos(х) программа должна породить два параллельных процесса, вычисляющих эти величины путем разложения в ряд по формулам вычислительной математики.
  4. Разработать программу, вычисляющую значение плотности распределения Коши в точке х=е по формуле f(x)=1/(Пи*(1+x**2)). Для нахождения Пи и е**2 программа должна породить два параллельных процесса, вычисляющих эти величины путем разложения в ряд по формулам вычислительной математики.
  5. Разработать программу, вычисляющую интеграл в диапазоне от 0 до 1 от подинтегрального выражения 4*dx/(1+x**2) с помощью последовательности равномерно распределенных на отрезке [0,1] случайных чисел, параллельно генеририруемую процессом-потомком. Процесс-потомок должен завершиться после заранее заданного числа генераций N.
  6. Разработать программу, вычисляющую значение f(x) как сумму ряда от k=1 до k=N от выражения (-1)**(k+1)*x**(2k-1)/(2k-1)! для значений x, равномерно распределенных на интервале [0,Пи], и выводящую полученный результат f(x) в файл в двоичном формате. В это время предварительно подготовленный процесс-потомок читает данные из файла, преобразовывает их в текстовую форму и выводит на экран до тех пор, пока процесс-предок не передаст ему через файл ключевое слово (например, "STOP"), свидетельствующее об окончании процессов.
  7. Задание, аналогичное варианту 6, но для вычисления суммы ряда от k=0 до k=N для выражения x**(2k+1)/(2k+1).
  8. Разработать программу, вычисляющую число размещений по r ячейкам n элементов N=n!/n(1)!*n(2)!*...*n(r)!, удовлетворяющих требованию, что в ячейку с номером i попадает ровно n(i) элементов; i=1,...,r и n(1)+n(2)+...+n(r)=n. Естественно, что на каждый факториал необходимо породить один процесс-потомок, как указано в варианте 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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





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



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