Читать «UNIX: взаимодействие процессов» онлайн - страница 305

Уильям Ричард Стивенс

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

Кол-во потоков Взаимное исключение Posix Блокировка чтения-записи Семафор Posix в памяти Именованный семафор Posix Семафор System V Семафор System V с UNDO Блокировка записей fcntl
1 2,9 12,9 13,2 14,2 26,6 46,6 96,4
2 11,4 40,8 742,5 771,6 54,9 93,9
3 28,4 73,2 1080,5 1074,5 84,5 141,9
4 49,3 95,0 1534,1 1502,2 109,9 188,4
5 67,3 126,3 1923,3 1764,1 137,3 233,6

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

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

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

Рис. А.6. Время увеличения счетчика в разделяемой памяти 

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

Кол-во процессов Взаимное исключение Posix Блокировка чтения-записи Семафор Posix в памяти Именованный семафор Posix Семафор System V Семафор System V с UNDO Блокировка записей fcntl
1 0,8 1,6 13,6 14,3 17,3 22,1 90,7
2 1,6 3,9 29,2 29,2 34,9 41,6 244,5
3 2,3 6,4 41,6 42,9 54,0 60,1 376,4
4 3,1 12,2 57,3 58,8 72,4 81,9 558,0
5 4,0 20,4 70,4 73,5 87,8 102,6 764,0