NetNado
  Найти на сайте:

Учащимся

Учителям



Лабораторная работа №3 «Практическое знакомство с потоками и синхронизацией потоков ос unix»


Национальный исследовательский университет

Томский политехнический университет

Институт Кибернетики

Кафедра ВТ

Операционные системы

gerb-b

ЛАБОРАТОРНАЯ РАБОТА № 3

«Практическое знакомство с потоками и синхронизацией потоков ОС UNIX »

Выполнил

студент группы 8В83




Е.Ю. Чистяков

Проверил





Д.В. Сидоров

Цель работы
Ознакомиться с подсистемой управления потоками в операционной системе Unix и основными программными средствами для создания, управления и удаления потоков..

Задание


Изучить основные программные средства управления потоками ОС Unix, а также способы синхронизации потоков. Разработать приложения для многопоточных вычислений с использованием синхронизации посредством мьютексов, семафоров и условных переменных.


Ход работы работы



  1. Разработать три многопоточные программы с использованием минимум двух потоков и различных средств синхронизации. Необходимо обеспечить синхронизированную работу потоков в критической секции с использованием:

    • мьютексов;

    • семафоров;

    • условных переменных


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





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


  1. Во второй программе первый поток добавляет к общей переменной 10 а второй поток отнимает 5, после завершения одного цикла потока поток приостанавливается и начинает действие другой поток. Синхронизация с использованием семофора.


d:\os\lab3\screenshot-2.png


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, другой отнимает 1, первый поток имеет в 2 раза большею частоту. Синхронизация с использованием условных переменных.


d:\os\lab3\screenshot-3.png


d:\os\lab3\screenshot-4.png

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



  1. Убедиться в результативности применения средств синхронизации потоков, сравнив результаты работы программ с использованием и без использования средств синхронизации.


Во второй программе были убраны семофоры, следовательно, потоки получились асинхронные, потоки работают в произвольном порядке, в результате чего мы не можем гарантировать правильность работы приложения, в некоторых случаях это приводит к ошибке приложения или зацикливанию потока.
d:\os\lab3\screenshot-5.png

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


скачать

Другие похожие работы: