Скачиваний:
25
Добавлен:
01.05.2014
Размер:
641 Кб
Скачать
☆

1.3 Исходный данные:

OS GNU/Linux

Компилятор С (gcc)

1.4 Технические требования

Для работы приложения необходимо следующее:

- 64 МВ ОП

- Наличие ОС Unix (Linux)

- Процессор класса Pentium с частотой не менее 200 МГц

1.5 Специальные технические требования

Компьютер с установленной на нем ОС Unix (Linux) – для отладки программы, написанной на языке С.

Компилятор С – для компиляции программы на языке С (gcc,gc).

2 Разработка структуры программы

В соответствии с техническим заданием программа должна реализовывать следующие функции:

  • Расчет факториала

  • Расчет бесконечно убывающей геометрической прогрессии

  • Расчет суммы числового ряда

На рисунке 1 представлена структура разрабатываемой программы, включающая в себя функцию main главного процесса, порождающую другие процессы.

Рисунок 1 Структурная схема программы

3 Разработка Алгоритмов основных функций

3.1 Главная функция (main)

Главная функция (main) – функция, с которой начинается выполнение программы.

Эта функция осуществляет создание потоков A, B и Е, производит проверку завершения каждого из созданных потоков. Производит корректное удаление семафоров. Алгоритм главной функции представлен на рисунке 2.

Рисунок 2 Алгоритм главной функции

3.2 Функция thread_func_A

Функция thread_func_A предназначена для выполнения подсчета функции факториала числа 32 и вывода полученного значения на экран. Также этой функцией производится запуск потока С.

Алгоритм функции представлен на рисунке 3

Рисунок 2 Алгоритм функции thread_func_A

3.3 Функция thread_func_В

Функция thread_func_В выполняет подсчет числового ряда типа -1, +2, -3, +4… и вывода полученного значения на экран. Также этой функцией производится запуск потока D. А лгоритм функции представлен на рисунке 3.

Рисунок 3: Алгоритм функции thread_func_В

3.4 Функция thread_func_c

Функция thread_func_C выполняет подсчет первых 30 членов геометрической прогрессии 1, ½, ¼….Алгоритм функции представлен на рисунке 4.

Рисунок 4 Алгоритм функции thread_func_C

3.5 Функция thread_func_d

Функция thread_func_D выполняет подсчет первых 1.000.000 членов прогрессии 1, ½, 1/3, ¼ … Алгоритм функции представлен на рисунке 5.

Рисунок 5 Алгоритм функции thread_func_D

3.6 Функция thread_func_e

Функция thread_func_D выполняет подсчет первых 1.000.000 членов прогрессии ½, 1/6, 1/8, 1/10 … Алгоритм функции представлен на рисунке 6.

Рисунок 6 Алгоритм функции thread_func_E

4. Разработка программы

Разработанные алгоритмы функций были реализованы на языке С.

При разработке данной программы были использованы стандартные функции:

pthread_create – функция создание потока

pthread_join – функция проверки завершения потока

printf – функция вывода сообщения на экран

perror – функция вывода сообщения в стандартный поток ошибок

sem_init – функция инициализации семафора

sem_post – функция увеличивает значение семафора на 1

sem_wait – функция останавливает вызвавший ее поток, до тех пор, пока значение семафора не станет больше нуля

sem_destroy – функция для удаления семафора

При разработке программы были использованы переменные, приведенные в таблице 1

Таблица 1 – Переменные, использованные в программе

Имя

Тип

Назначение

sem,sem_B,

sem_C,sem_C2

sem_t

Переменные-семафоры, служащие для синхронизации потоков

result

int

Переменная для проверки создания потока

thread_A,

pthread_t

Переменная-идентификатор потока А

thread_B,

pthread_t

Переменная-идентификатор потока B

thread_C,

pthread_t

Переменная-идентификатор потока C

thread_D,

pthread_t

Переменная-идентификатор потока D

thread_E;

pthread_t

Переменная-идентификатор потока E

sum

float

Переменная для подсчета суммы в функциях

i

float

Переменная для подсчета итераций цикла

ЗАКЛЮЧЕНИЕ

В курсовой работе были изучены методы создания многопоточных приложений с использованием языка C для OS GNU/Linux.

Построены алгоритмы и структура программы многопоточного приложения. Полученная программа синхронизирует выполнение вычислительных процессов. Данная программа реализована на языке С, исполняемый файл занимает 13849 байт, в приложении приведена разработанная документация (спецификация, руководство оператора и текст программы)