Лабораторная работа №3 «Практическое знакомство с потоками и синхронизацией потоков ос unix»
Национальный исследовательский университет
Томский политехнический университет
Институт Кибернетики
Кафедра ВТ
Операционные системы

ЛАБОРАТОРНАЯ РАБОТА № 3
«Практическое знакомство с потоками и синхронизацией потоков ОС UNIX »
Выполнил студент группы 8В83 | | Е.Ю. Чистяков |
Проверил | | Д.В. Сидоров |
Цель работы
Ознакомиться с подсистемой управления потоками в операционной системе Unix и основными программными средствами для создания, управления и удаления потоков..
Задание
Изучить основные программные средства управления потоками ОС Unix, а также способы синхронизации потоков. Разработать приложения для многопоточных вычислений с использованием синхронизации посредством мьютексов, семафоров и условных переменных.
Ход работы работы
Разработать три многопоточные программы с использованием минимум двух потоков и различных средств синхронизации. Необходимо обеспечить синхронизированную работу потоков в критической секции с использованием:
мьютексов;
семафоров;
условных переменных
В программе имеются два потока, один поток получает введенную в консоль информацию и записывает ее в текстовый документ, второй поток , при запросе от пользователя, выводит содержимое того же документа на экран. Синхронизация с помощью мьютекса.


holop@holop-bubunta:~/OS/labka3/temp1$ ./a.out
Enter a string (enter to quit):
test1
Enter a string (enter to quit):
test2
Enter a string (enter to quit):
test3
Enter a string (enter to quit):
r
test1
test2
test3
r
Enter a string (enter to quit):
The threads are stopped
Во второй программе первый поток добавляет к общей переменной 10 а второй поток отнимает 5, после завершения одного цикла потока поток приостанавливается и начинает действие другой поток. Синхронизация с использованием семофора.

holop@holop-bubunta:~/labka3/temp2$ ./mf
-5
5
0
10
5
15
25
20
30
25
35
30
40
35
45
40
50
The threads are stopped
В данной программе два потока, с разной частотой, изменяют значение общей переменной, один поток прибавляет 1, другой отнимает 1, первый поток имеет в 2 раза большею частоту. Синхронизация с использованием условных переменных.


holop@holop-bubunta:~/lab3/temp3$ ./mf
1 2 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10
Убедиться в результативности применения средств синхронизации потоков, сравнив результаты работы программ с использованием и без использования средств синхронизации.
Во второй программе были убраны семофоры, следовательно, потоки получились асинхронные, потоки работают в произвольном порядке, в результате чего мы не можем гарантировать правильность работы приложения, в некоторых случаях это приводит к ошибке приложения или зацикливанию потока.

holop@holop-bubunta:~/lab3/temp4$ ./mf
-5
0
-5
-10
-15
-20
-255
-15
-5
5
15
25
35
45
55
The threads are stopped
Выводы
В ходе данной лабораторной работы были получены навыки работы с потоками которые помогают оптимизировать работу приложения, и в некоторых случаях повысить скорость работы приложения. Так же изучены основные методы для синхронизации потоков, которые помогают избежать ошибочной работы много поточных программ.
2011
страница 1
скачать
Другие похожие работы: