ΠΠΎΡΠΎΠΊΠΈ
Π₯ΠΎΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Unix ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Posix.1, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Pthreads, Π±ΡΠ» ΠΏΡΠΈΠ½ΡΡ Π² 1995 Π³ΠΎΠ΄Ρ. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ. ΠΠΎΠΎΠ±ΡΠ΅, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΡΠΌΠΎΠΉ IPC, ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ IPC Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ Π΄Π°Π½Π½ΡΠΌ.
Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ΅Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° Β«Π΅ΡΠ»ΠΈ ΠΊΠ°Π½Π°Π» ΠΏΡΡΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠ°Π½Π°Π»Β». ΠΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Β«ΠΏΠΎΡΠΎΠΊΠΈΒ» Π½Π° Β«ΠΏΡΠΎΡΠ΅ΡΡΡΒ» ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Unix, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠΈ ΠΈΠ· ΠΏΡΡΡΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ read. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΡΠΎΠΊΠΈ, Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊ, Π·Π°ΠΏΡΠΎΡΠΈΠ²ΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΡΡΡΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠ°Π½Π°Π» ΡΠΌΠΎΠΆΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠΎΠΊ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π ΡΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ Π΄Π°Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Pthread, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
1.3. ΠΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC
ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ (persistence) Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° IPC ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ° ΡΠΈΡ. 1.2 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ.
Π ΠΈΡ. 1.2. ΠΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC
1. ΠΠ±ΡΠ΅ΠΊΡ IPC, ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ (process-persistent), ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π΅ΡΠ΅ ΠΎΡΠΊΡΡΡ. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ (pipes, FIFO).
2. ΠΠ±ΡΠ΅ΠΊΡ IPC, ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ (kernel-persistent), ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΄ΡΠ° ΠΈΠ»ΠΈ Π΄ΠΎ ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° System V, ΡΠ΅ΠΌΠ°ΡΠΎΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ. ΠΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix, ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠ΄ΡΠΎΠΌ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
3. ΠΠ±ΡΠ΅ΠΊΡ IPC, ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ (filesystem-persistent), ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ ΡΠ²Π½ΠΎ. ΠΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ΄ΡΠ°. ΠΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix, ΡΠ΅ΠΌΠ°ΡΠΎΡΡ ΠΈ ΠΏΠ°ΠΌΡΡΡ Ρ ΠΎΠ±ΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ (ΡΠ°ΠΊ Π±ΡΠ²Π°Π΅Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°).
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΌ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° IPC, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠ°Π½Π°Π»Π΅ (pipe) ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ΄ΡΠΎΠΌ, Π½ΠΎ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π° Π½Π΅ ΡΠ΄ΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠ°Π½Π°Π» Π±ΡΠ» ΠΎΡΠΊΡΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΊΡΠΎΠ΅Ρ Π΅Π³ΠΎ, ΡΠ΄ΡΠΎ ΡΠ±ΡΠΎΡΠΈΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΠ΄Π°Π»ΠΈΡ ΠΊΠ°Π½Π°Π». ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Ρ ΠΎΡΡ ΠΊΠ°Π½Π°Π»Ρ FIFO ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π±ΡΠ» ΠΎΡΠΊΡΡΡ, Π·Π°ΠΊΡΠΎΠ΅Ρ Π΅Π³ΠΎ.
Π ΡΠ°Π±Π». 1.1 ΡΠ²Π΅Π΄Π΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC.
Π’Π°Π±Π»ΠΈΡΠ° 1.1. ΠΠΈΠ²ΡΡΠ΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC
Π’ΠΈΠΏ IPC ΠΠΈΠ²ΡΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠ°Π½Π°Π» (pipe) ΠΡΠΎΡΠ΅ΡΡ ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» (FIFO) ΠΡΠΎΡΠ΅ΡΡ ΠΠ·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Posix (mutex) ΠΡΠΎΡΠ΅ΡΡ Π£ΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Posix (condition variable) ΠΡΠΎΡΠ΅ΡΡ ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Posix (lock) ΠΡΠΎΡΠ΅ΡΡ ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ fcntl ΠΡΠΎΡΠ΅ΡΡ ΠΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix (message queue) Π―Π΄ΡΠΎ ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΌΠ°ΡΠΎΡ Posix (named semaphore) Π―Π΄ΡΠΎ Π‘Π΅ΠΌΠ°ΡΠΎΡ Posix Π² ΠΏΠ°ΠΌΡΡΠΈ (memory-based semaphore) ΠΡΠΎΡΠ΅ΡΡ Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ Posix (shared memory) Π―Π΄ΡΠΎ ΠΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ System V Π―Π΄ΡΠΎ Π‘Π΅ΠΌΠ°ΡΠΎΡ System V Π―Π΄ΡΠΎ ΠΠ°ΠΌΡΡΡ Ρ ΠΎΠ±ΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ System V Π―Π΄ΡΠΎ Π‘ΠΎΠΊΠ΅Ρ TCP (TCP socket) ΠΡΠΎΡΠ΅ΡΡ Π‘ΠΎΠΊΠ΅Ρ UDP (UDP socket) ΠΡΠΎΡΠ΅ΡΡ ΠΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix (Unix domain socket) ΠΡΠΎΡΠ΅ΡΡΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ IPC Π² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΈ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Posix ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΡΠΎΡ ΡΠΈΠΏ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ» ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ IPC ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² IPC Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ½ΠΈΠ·ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° IPC, Π° ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π·Π°Π΄Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
1.4. ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½
ΠΡΠ»ΠΈ Π΄Π²Π° Π½Π΅ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²ΠΈΠ΄ IPC Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, ΠΎΠ±ΡΠ΅ΠΊΡ IPC Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ β server) ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² β client) ΠΌΠΎΠ³ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ (pipes) ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡ (ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ), Π½ΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌ FIFO ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π° Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ (ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°Π½Π°Π»Ρ FIFO ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²). ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² IPC, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ (naming conventions). ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° IPC Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ ΠΈΠΌΠ΅Π½ (name space). ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ β Π²Π°ΠΆΠ½ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠ² IPC, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ²ΡΠ·ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Π ΡΠ°Π±Π». 1.2 ΡΠ²Π΅Π΄Π΅Π½Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄ΠΎΠ² IPC.
Π’Π°Π±Π»ΠΈΡΠ° 1.2. ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² IPC
Π’ΠΈΠΏ IPC ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΠΈΡ ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΈΡ Posix.1 1996 Unix 98 ΠΠ°Π½Π°Π» (ΠΠ΅Π· ΠΈΠΌΠ΅Π½ΠΈ) ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ β’ β’ FIFO ΠΠΌΡ ΡΠ°ΠΉΠ»Π° (pathname) ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ β’ β’ ΠΠ·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Posix (ΠΠ΅Π· ΠΈΠΌΠ΅Π½ΠΈ) Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° pthread_mutex_t β’ β’ Π£ΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Posix (ΠΠ΅Π· ΠΈΠΌΠ΅Π½ΠΈ) Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° pthread_cond_t β’ β’ ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Posix (ΠΠ΅Π· ΠΈΠΌΠ΅Π½ΠΈ) Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° pthread_rwlock_t β’ ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ fcntl ΠΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ β’ β’ Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ Posix Posix-ΠΈΠΌΡ IPC ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ β’ β’ ΠΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ System V ΠΠ»ΡΡ key_t ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ IPC System V β’ Π‘Π΅ΠΌΠ°ΡΠΎΡ System V ΠΠ»ΡΡ key_t ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ IPC System V β’ Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ System V ΠΠ»ΡΡ key_t ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ IPC System V β’ ΠΠ²Π΅ΡΠΈ (doors) ΠΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π£Π΄Π°Π»Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ (RPC) Sun ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°/Π²Π΅ΡΡΠΈΡ ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ (handle) RPC Π‘ΠΎΠΊΠ΅Ρ TCP IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ TCP ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ .1g β’ Π‘ΠΎΠΊΠ΅Ρ UDP IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ TCP ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ .1g β’ ΠΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix (domain socket) ΠΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ .1g β’ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎΡΠΌΡ IPC ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Posix.1 1996 Π³ΠΎΠ΄Π° ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡ Unix 98. ΠΠ± ΠΎΠ±ΠΎΠΈΡ ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 1.7. ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΌΡ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π² ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠΎΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² [24]. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² (Application Program Interface β API) ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΠΎΠΉ Posix.1g ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠ°ΡΡ ΡΠ°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Posix.1.