Главная страница  Взаимодействие нетривиальных процессов 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 [ 154 ] 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

Размер

Канал

Очередь

Очередь

Sun RPC

Sun RPC

Сокет

Домен-

сообщения

сообщений

сообщений TCP

Posix

System V

сокет

4096

17,1

21,1

8192

16,5

17,1

16 384

17,3

11,7

17,3

32 768

15,9

14,0

65 536

14,2

18,0

Результаты синхронизации потоков

в табл. А.4 приведены значения времени, нужного одному или нескольким потокам для увеличения счетчика в разделяемой памяти с использованием различных средств синхронизации в Solaris 2.6, а на рис. А.З показан график этих значений. Каждый поток увеличивает значение счетчика 1 ООО ООО раз, а количество потоков меняется от 1 до 5. В табл. А.5 приведены эти же значения для Digital Unix 4.0В, а на рис. А.4 - график этих значений.

Мы увеличиваем количество потоков, чтобы проверить правильность кода. Кроме того, при добавлении потоков время работы программы может начать расти нелинейно. Блокировка fcntl может использоваться только одним потоком, поскольку эта форма синхронизации предназначена только для использования между несколькими процессами, а не потоками одного процесса.


12 3 4

количество потоков

Рис. А.З. Время увеличения счетчика в разделяемой памяти (Solaris 2.6)



В Digital Unix 4.0В значения для семафоров Posix оказываются непомерно большими, если работает более одного потока, что указывает на наличие какой-то аномалии. На графике мы эти значения не приводим.

ПРИМЕЧАНИЕ -

Одна из возможных причин этой аномалии заключается в том, что в этой программе синхронизация проверяется неправильно. В данном случае потоки не делают ничего полезного, и все время уходит на синхронизацию. Поскольку потоки создаются с внут-рипроцессной конкуренцией, при потере управления потоком блокировка сохраняется, поэтому поток, получающий управление, выполняться дальше не может.

Таблица А.4. Время увеличения счетчика в разделяемой памяти для Solaris 2.6 (в секундах)

Кол-во

Взаимое

Блоки-

Семафор

Имено-

Семафор

Семафор

Блоки-

потоков

исключе-

ровка

Posix в

ванный

System V

System V

ровка

ние Posix

чтения-

памяти

семафор

с UNDO

записей

записи

Posix

fcntl

15,4

16,3

21,1

89,4

31,1

31,5

37,5

14,4

46,5

48,3

57,7

13,7

18,2

62,5

65,8

75,8

19,7

22,8

76,8

81,8

90,0


1 2 3 4 5

количество потоков

Рис. А.4. Время увеличения счетчика в разделяемой памяти (Digital Unix 4.0В)



Таблица А.5. Время увеличения счетчика в разделяемой памяти в Digital Unix 4.0В (в секундах)

Кол-во

Взаимое

Блоки-

Семафор

Имено-

Семафор

Семафор

Блоки-

потоков

исключе-

ровка

Posix в

ванный

System V

System V

ровка

ние Posix

чтения-

памяти

семафор

с UNDO

записей

записи

Posix

fcnti

12,9

13,2

14,2

26,6

46,6

96,4

11,4

40,8

742,5

771,6

54,9

93,9

28,4

73,2

1080,5

1074,5

84,5

141,9

49,3

95,0

1534,1

1502,2

109,9

188,4

67,3

126,3

1923,3

1764,1

137,3

233,6

Результаты синхронизации процессов

в табл. А.4 и А.З и на соответствующих рисунках были приведены результаты синхронизации потоков одного процесса. Интересно посмотреть, как взаимодействуют разные процессы. В табл. А.6 и на рис. А.З приведены результаты измерения времени увеличения счетчика несколькими процессами в Solaris 2.6, а в таб-л. А.7 и на рис. А.6 - в Digital Unix 4.0В. Результаты похожи на полученные для потоков, однако в Solaris 2.6 теперь получаются одинаковые результаты для первых двух типов семафоров. Мы приводим на графике только первое значение для fcntl, поскольку последующие слишком велики. Как отмечалось в разделе 7.2,


1 2 3 4 5

количество процессов

Рис. А.5. Время увеличения счетчика в разделяемой памяти (Solaris 2.6)



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 [ 154 ] 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.