Тема
“Разработка программы создания
параллельно взаимодействующих вычислительных процессов в ОС UN
Цель :
Разработать программу создания взаимодействующих вычислительных процессов.
1
Задание
Работа посвящена разработке программы создания параллельно взаимодействующих процессов на языке С.
В работе рассмотрен метод создания многопоточного приложения на языке С. Разработан алгоритм и его программная реализация на языке С.
Приложение демонстрирует принципы взаимодействия и механизмы синхронизации процессов в операционной системе UNI
Выполнили:
Студенты группы Севрюкова О. Сорокина Е.
Вензель
2
Исходные данные
Разработать программу создания параллельно взаимодействующих вычислительных процессов.
Процесс A запускает задачи С и Е. Время завершения задач С и В приблизительно одинаковое.
Поток F запускается тем, кто завершается первым, но только после завершения 2-х остальных, приходящих в точку синхронизации.
Задача G запускается последним закончившим работу потоком D, E или F.
3
СТРУКТУРА ПРОГРАММЫ
В соответствии с техническим заданием программа должна реализовывать следующие функции:
•Расчет факториала
•Расчет бесконечно убывающей геометрической прогрессии
•Расчет суммы числового ряда
4
Структурная схема программы |
||
|
Main() |
|
|
[ thread_A ] |
|
thread_func_B |
|
|
|
thread_func_C |
thread_func_E |
thread_func_D |
thread_func_F |
|
|
|
thread_func_G |
5
Алгоритм главной функции
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Очистка |
|
|
|
|
|
|
|
экрана |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Инициализ. |
|
|
|
|
|
|
|
cемафоров |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Создание |
|
|
|
|
|
|
|
потока B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Поток B |
|
|
|
|
|
|
|
создан? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Создание |
|
|
|
|
|
|
|
потока C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Поток C |
|
|
|
|
|
|
|
создан? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Создание |
|
|
|
|
|
|
|
потока E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Поток E |
|
|
Вывод |
|
||
|
|
|
|
||||
|
|
|
сообщения об |
|
|||
|
создан? |
|
|
|
|||
|
|
|
ошибке |
|
|||
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Ожидание |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
завершения |
|
|
|
|
|
|
|
потока G |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Удаление |
|
|
|
|
|
|
|
семафоров |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Конец |
6 |
|||||
|
|
|
|||||
Алгоритм функции thread_func_F
Bход
Вывод сообщения о начале работы
Ожидание начала потока В
i<33
+
Вычисление i факториала
i=5
+
Создание потока C
+
Поток C создан
Вывод результата вычислений
Вывод сообщения об ошибке 
Вывод сообщения о конце работы
Bыход |
7 |
|
Алгоритм функции thread_func_E
Bход
Вывод сообщения о начале работы
|
i<10^6 |
|
+ |
i=i+1 |
sum=sum+1/(i*2) |
|
Вывод результата вычислений |
|
Сигнал потоку D о конце работы |
Bыход
8
Вывод
В ходе курсовой работы были изучены методы организации многопоточных приложений, алгоритмы взаимодействия потоков
Разработаны алгоритмы реализации, программный код и произведена отладка приложения, отвечающего требованиям задания.
Разаработка завершена составлением технической документации :
Спецификация Текст программы
Руководство пользователя
9
