Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ³Ρ Malte Skarupke ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Mutex ΠΈ Spinlock ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π·Π°Π΄Π°Ρ. Π’Π΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Spinlock Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π² Linux ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ Π·Π°Π΄Π°Ρ. ΠΠ²ΡΠΎΡ ΡΠ΅ΡΡΠΎΠ² ΡΠ΄Π΅Π»Π°Π» Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ Linux ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ ΠΈΠ³Ρ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ
Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° Google Stadia, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° GPU Π² ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π² ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π»ΠΈΡΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΊΡΠ°Π½Π° Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π΄ΠΎ 60 ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΊΠ°Π΄ΡΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½ ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½Ρ.
Π ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΡΡ ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·Π²Π°Π» ΠΈΡ
ΠΌΡΡΠΎΡΠΎΠΌ («pure garbage») ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΡΠ°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Π² ΡΠ΅ΠΌΠ΅, ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Spinlock ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ
, ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΠ³Ρ ΠΠΈΠ½ΡΡ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ spinlock ΠΈ Π½Π΅ ΠΏΡΡΠ°ΡΡΡΡ Π³ΠΎΡΠΎΠ΄ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ, ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ± ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π»ΠΈΡΠ½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°.
ΠΠ°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° Π±Π°Π·Π΅ Spinlock ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΠΏΡΠ΅ΡΠ²ΡΡ ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ΅ΡΡΠ°Ρ
Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ spinlock ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±Π²ΡΠ·ΠΊΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π² Π»ΡΠ±ΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°Π±ΡΠ°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² ΡΠ΅ΡΡΠ°Ρ
Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΡ
Π²Π°ΡΡΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Ρ.Π΅. ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΠΏΡΡΠ°Π»ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π°Π²ΡΠΎΡ ΡΠ΅ΡΡΠ°, Π½ΠΎ ΠΈ «ΡΡΠΌ» ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ²ΡΠΎΡ ΡΠ΅ΡΡΠ° ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π²ΠΎΠ·ΡΠ°Π·ΠΈΡΡ ΠΠΈΠ½ΡΡΡ, ΡΠΊΠ°Π·Π°Π² Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π±Π°Π·Π΅ spinlock ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π² ΠΈΠ³ΡΠ°Ρ
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ
ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ², ΡΠ΅ΠΌ Π² Linux, ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΈΠ½ΡΡ Π²ΠΎΠ·ΡΠ°Π·ΠΈΠ», ΡΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Linux ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ, ΠΎΡΡΠ°ΡΠΈΠ²Π°Π»ΡΡ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡΠΌΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° ΠΈ ΠΈΠ³Ρ, Π½ΠΎ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
Π²ΠΈΠ΄ΠΎΠ² Π½Π°Π³ΡΡΠ·ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΡΠ°Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΠΈΠ³ΡΠ°Ρ
Google Stadia, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Windows Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π»ΡΡΡΠ΅ Π² ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΡΡ
ΡΠ΅ΡΡΠ°Ρ
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Linux ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ Π·Π°Π΄Π°Ρ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru