Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: взаимодСйствиС процСссов». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 113

Автор Уильям БтивСнс

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Π’ Ρ‚Π°Π±Π». А.4 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ значСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ для увСличСния счСтчика Π² раздСляСмой памяти с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… срСдств синхронизации Π² Solaris 2.6, Π° Π½Π° рис. А.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика 1000000 Ρ€Π°Π·, Π° количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² мСняСтся ΠΎΡ‚ 1 Π΄ΠΎ 5. Π’ Ρ‚Π°Π±Π». А.5 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ эти ΠΆΠ΅ значСния для Digital Unix 4.0Π’, Π° Π½Π° рис. А.4 β€” Π³Ρ€Π°Ρ„ΠΈΠΊ этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. 

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


ΠœΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ расти Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° fcntl ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта Ρ„ΠΎΡ€ΠΌΠ° синхронизации ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для использования ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими процСссами, Π° Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса. 

Π’ Digital Unix 4.0B значСния для сСмафоров Posix ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΏΠΎΠΌΠ΅Ρ€Π½ΠΎ большими, Ссли Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΌΡ‹ эти значСния Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Одна ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ этой Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ синхронизация провСряСтся Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ, ΠΈ всС врСмя ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с внутрипроцСссной ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠ΅ΠΉ, ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° сохраняСтся, поэтому ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ дальшС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. 

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


Π’Π°Π±Π»ΠΈΡ†Π° А.4. ВрСмя увСличСния счСтчика Π² раздСляСмой памяти для Solaris 2.6 (Π² сСкундах)

Кол-Π²ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π’Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Posix Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° чтСния-записи Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ Posix Π² памяти Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сСмафор Posix Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ System V Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ System V с UNDO Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° записСй fcntl 1 0,7 2,0 4,5 15,4 16,3 21,1 89,4 2 1,5 5,4 9,0 31,1 31,5 37,5 3 2,2 7,5 14,4 46,5 48,3 57,7 4 2,9 13,7 18,2 62,5 65,8 75,8 5 3,7 19,7 22,8 76,8 81,8 90,0

Π’Π°Π±Π»ΠΈΡ†Π° А.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

Π’Π°Π±Π»ΠΈΡ†Π° А.7. ВрСмя увСличСния счСтчика Π² раздСляСмой памяти для Digital Unix 4.0B (Π² сСкундах)

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ процСссов Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ Posix Π² памяти Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сСмафор Posix Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ System V Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ System V с UNDO Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° записСй fcntl 1 12,8 12,5 30,1 49,0 98,1 2 664,8 659,2 58,6 95,7 477,1 3 1236,1 1269,8 96,4 146,2 1785,2 4 1772,9 1804,1 120,3 197,0 2582,8 5 2179,9 2196,8 147,7 250,9 3419,2

А.Π—. Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ полосы пропускания: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹