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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QNX/UNIX: Анатомия ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 3

Автор ОлСг Π¦ΠΈΠ»ΡŽΡ€ΠΈΠΊ

ВсС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ (ΠΈ это Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ прямоС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² POSIX-стандартах, Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π² тСкстах ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ стандартам) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСявно Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ прСдполоТСния ΠΎΠ± ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… скоростях ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ… достиТСния ΠΈΠΌΠΈ (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ выполнСния.[4] Π’Π°ΠΊ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅:

void* threadfunc(void* data) {

 // ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1:

}

...

pthread_create(NULL, NULL, threadfunc, NULL);

// ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2:

...

нСльзя Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°ΠΏΡ€ΠΈΠΎΡ€Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ послС Ρ‚ΠΎΡ‡ΠΊΠΈ вСтвлСния (Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π° pthread_create()): Π°) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2Β» Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅; Π±) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1Β» Π² ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅; Π²) Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссорах Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1Β» ΠΈ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2»… ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π»ΡŽΠ±Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… конфигурациях (количСство процСссоров, ΠΈΡ… скорости, особСнности ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ памяти процСссорами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ характСристики) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ эквивалСнтны.

Благодаря Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² составС ОБ QNX сСтСвой подсистСмы QNET, ΠΎΡ€Π³Π°Π½ΠΈΡ‡Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Β«ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΡƒΡŽΒ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ сСтСвых ΡƒΠ·Π»ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ°ΡˆΠΈΠ½Π½ΡƒΡŽ систСму, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ источник ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (Π° вмСстС с Ρ‚Π΅ΠΌ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ…Π»ΠΎΠΏΠΎΡ‚), Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: запросы ΠΏΠΎ QNET ΠΊ сСрвисам, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСтСвом ΡƒΠ·Π»Π΅, со стороны клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ…. НапримСр, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ выполняя ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

# cp /net/host/dev/ser1 ./file

часто Π»ΠΈ ΠΌΡ‹ задумываСмся Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

Для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ запрос ΠΈΠ· сСти QNET являСтся скрытым источником ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, Π° благодаря наслСдованию ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Π΄Π°ΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ запрос ΠΏΠΎ сСти ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ‚Π΅ΡΠ½Π΅Π½ΠΈΡŽ локальной Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Π΄ΠΎ получСния запроса.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²Ρ‹ΡˆΠ΅ аргумСнтация β€” это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стоит Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½Π΅Π΅ ΠΈ с большСй Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса. Π’ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, [11]), Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° многопроцСссорной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ СстСствСнного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΊΠ°ΠΊ «одноврСмСнности выполнСния», β€” Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° расщСплСниС ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ прилоТСния Π½Π° логичСскиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ построСны ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π°, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ числС Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°, β€” это ΠΏΡƒΡ‚ΡŒ построСния Β«ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎΒ» для написания ΠΈ понятного для сопровоТдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. И ΠΊΠ°ΠΊ слСдствиС, этот ΠΏΡƒΡ‚ΡŒ (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТущийся нСсколько искусствСнным ΠΈ привнСсСнным) β€” ΠΏΡƒΡ‚ΡŒ построСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ высокой надСТности, свободных ΠΎΡ‚ ошибок, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΡ… ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ простых Π² своСм ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΈ сопровоТдСнии.

Как ΡƒΠΆΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° выраТСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, сопряТСна с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ трудностями: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ, Β«ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎΒ», взгляда Π½Π° описываСмыС процСссы ΠΈ отсутствиС ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ спСцифичСскиС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ API, Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² классичСском Β«ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π•Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹ освоив эту Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ Π² дальнСйшСм становится Π»Π΅Π³ΠΊΠΎ ΠΈ просто. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ большСС число Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² использования ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ β€” Π² своСй ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Β«Ρ€Π°ΡΡΡ‹ΠΏΠ°Ρ‚ΡŒΒ» ΠΏΠΎ тСксту мноТСство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ.

НаконСц, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°, послСдняя ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°: Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ описаний относится ΠΊΠΎ всСму ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡŽ ОБ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… POSIX-стандарт, ΠΎΠ΄Π½Π°ΠΊΠΎ Π°ΠΊΡ†Π΅Π½Ρ‚ дСлаСтся Π½Π° Π½Π΅ совсСм ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ особСнности построСния Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ» [4]. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это касаСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² синхронизации Π·Π°Π΄Π°Ρ‡, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ рСсурс. К соТалСнию, ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ программирования, ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнныС ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π½Π΅ совсСм прСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ (ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ) ΠΏΡ€ΠΈ построСнии систСм Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ построСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ исполняСмых систСм Π² сфСрах Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ стали Ρ‚Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ строили этот тСкст.

БСмСйства API

ΠžΠ±Ρ‰Π΅Π΅ мноТСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API (Application Program Interface β€” ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ всСго мноТСства Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды ΠΊ услугам ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой (ОБ) Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ QNX, СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ раздСляСтся Π½Π° Ρ‚Ρ€ΠΈ нСзависимых ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏΡ‹:

β€’ Native QNX API β€” это самодостаточный Π½Π°Π±ΠΎΡ€ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ со Π²Ρ€Π΅ΠΌΠ΅Π½ Ρ€Π°Π½Π½ΠΈΡ… вСрсий QNX (ΠΊΠΎΠ³Π΄Π° вопрос ΠΎ совмСстимости с POSIX Π΅Ρ‰Π΅ Π½Π΅ стоял); являСтся СстСствСнным базисом этой систСмы, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌ Β«ΠΌΠΈΠΊΡ€ΠΎΡΠ΄Π΅Ρ€Π½ΠΎΡΡ‚ΡŒΒ» Π΅Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π½ΠΎ ΠΏΠΎ сообраТСниям Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ совмСстимости ΠΈ пСрСносимости ΠΎΠ½ являСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ этой ОБ.

β€’ POSIX (BSD) API β€” это ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ API, Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ постоянно Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ систСмой стандартов Π³Ρ€ΡƒΠΏΠΏΡ‹ POSIX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС ОБ, ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ сСмСйству UNIX.

β€’ System V API (POSIX) β€” это Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ API, которая заимствуСт ΠΌΠΎΠ΄Π΅Π»ΠΈ, принятыС Π² UNIX-ax, относящихся ΠΊ Π²Π΅Ρ‚Π²ΠΈ развития System V, Π° Π½Π΅ ΠΊ Π²Π΅Ρ‚Π²ΠΈ BSD.

Native QNX API

ИмСнно этот слой являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ слоСм, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ самой систСмы QNX. Π”Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… слоя Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ лишь Β«ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°ΠΌΠΈΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²Ρ‹Π·ΠΎΠ²Ρ‹ native QNX API послС выполнСния рСструктуризации ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π° Π² соотвСтствии с синтаксисом, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ этим Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ.

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ СстСствСнно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ прописано Π² этом API (ΠΊΠ°ΠΊ, Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈΠ· описываСмых Π½ΠΈΠΆΠ΅), Π½ΠΎ это Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ (Π½Π° этом Π°ΠΊΡ†Π΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ тСхничСская докумСнтация QNX) ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈΠ· сообраТСний пСрСносимости, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, этот слой являСтся самым Β«ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΒ» β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ QSSL ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ систСмы. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π° этого слоя являСтся, Π² частности, ThreadCreate(), примСняСмый для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ сразу ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСакция Π½Π° сигналы Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Ρ‚ΠΎΠ½ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹) Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… POSIX-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² native API QNX.

POSIX (BSD) API

Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ API Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ соотвСтствуСт API ОБ UNIX, относящихся ΠΊ Π²Π΅Ρ‚Π²ΠΈ BSD (BSD, FreeBSD, NetBSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅).[5] Π•Π΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΡƒΠ·ΠΈΡ‚ΡŒ Π΄ΠΎ Β«BSD APIΒ», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ описанный Π΄Π°Π»Π΅Π΅ Π½Π°Π±ΠΎΡ€ API System V Ρ‚Π°ΠΊΠΆΠ΅ рСгламСнтируСтся POSIX, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«POSIX APIΒ», слСдуя Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π£. БтивСнса [2]. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ΠΎΠΌ Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ для native API ThreadCreate() здСсь Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ pthread_create().

ИмСнно Π½Π° API этого слоя ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° (ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ этого API ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ для справки ΠΊΠΎΠ΅-Π³Π΄Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Ρ‹Ρ… ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² native API), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случаСв использования Ρ‚Π΅Ρ… возмоТностСй QNX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ эквивалСнтов Π² POSIX API. Как Ρ€Π°Π· всС, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² этом API Π΄Π°Π»Π΅Π΅ ΠΏΠΎ тСксту, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСнСсСно Π½Π° всС UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π‘Π°ΠΌΡ‹ΠΉ Ρ€Π°Π½Π½ΠΈΠΉ стандарт POSIX извСстСн ΠΊΠ°ΠΊ IEEE 1003.1–1988 ΠΈ, ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· Π΅Π³ΠΎ названия, относится ΠΊ 1988 Π³ΠΎΠ΄Ρƒ (Ссли Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎ Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π» Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ IEEEIX 1986 Π³ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ POSIX Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Β«ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Β»). Π‘ΠΎΠ»Π΅Π΅ поздняя рСдакция Π΅Π³ΠΎ развития, IEEE 1003.1–1996, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстна ΠΊΠ°ΠΊ «стандарт POSIXΒ», ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ POSIX.1. Набор стандартов POSIX находится Π² постоянном Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ ΠΈ ΠΊ настоящСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π°Π±ΠΎΡ€ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΈΠ· 30 Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… стандартов.

Для Ρ†Π΅Π»Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ особыми стандартами, Π½Π° сСмь ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто: 1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21, 1003.2h. НапримСр:

1003.1a (OS Definition) β€” опрСдСляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ интСрфСйсы ОБ;

1003.1b (Realtime Extensions) β€” описываСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ модСль сигналов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, диспСтчСризация ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌ, Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹, синхронный ΠΈ асинхронный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, IPC-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ (сСмафоры, раздСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ, сообщСния);

1003.1c (Threads) β€” опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ синхронизации (ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹, условныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹ ΠΈ Π΄Ρ€., Π½ΠΎ Π½Π΅ сСмафоры), диспСтчСризация.