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

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

Автор Π¦ΠΈΠ»ΡŽΡ€ΠΈΠΊ ОлСг Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ сразу ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСакция Π½Π° сигналы Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Ρ‚ΠΎΠ½ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹) Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… 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) β€” опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ синхронизации (ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹, условныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹ ΠΈ Π΄Ρ€., Π½ΠΎ Π½Π΅ сСмафоры), диспСтчСризация.

System V API

Π­Ρ‚ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ API являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ [6]UNIX β€” System V (AT&T Unix System V). Как ΠΈ ΠΎΠ±Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ…, этот Π½Π°Π±ΠΎΡ€ API самодостаточСн для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ практичСски всСх возмоТностСй ОБ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для этого ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ TLI вмСсто сокСтов BSD. Для области рассматриваСмых Π½Π°ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² - ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², процСссов, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² ΠΈ Π΄Ρ€. β€” Π² POSIX API ΠΈ System V API ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΊ синтаксичСски, Ρ‚Π°ΠΊ ΠΈ сСмантичСски. НапримСр, Π² POSIX API сСмафор прСдставлСн Ρ‚ΠΈΠΏΠΎΠΌ

sem_t
ΠΈ основными опСрациями с Π½ΠΈΠΌ
sem_wait()
ΠΈ
sem_post()
, Π° Π² System V API сСмафор описываСтся структурой ядра
sem
, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈ
wait
, ΠΈ
post
) ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ
semop()
. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ производятся Π½Π΅ Π½Π°Π΄ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΌΠΈ сСмафорами, Π° Π½Π°Π΄ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ (массивами) сСмафоров (Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΠ΄ΠΈΠ½ сСмафор). Как ΠΎΡ‚ΡΡŽΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, Π»ΠΎΠ³ΠΈΠΊΠ° использования ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² сущСствСнно отличаСтся.

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

Π’ тСхничСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ присутствиС System V API Π² QNX Π½Π΅ упоминаСтся Π½ΠΈ ΠΎΠ΄Π½ΠΈΠΌ словом, Π½ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ POSIX, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСдоставляСтся ΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΈ Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²). ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ синтаксис Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², находятся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ POSIX-интСрфСйсов мСстах. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, описаниС сСмафоров POSIX API (Ρ‚ΠΈΠΏ

sem_t
) располоТСно Π² Ρ„Π°ΠΉΠ»Π΅
<semaphore.h>
, Π° описаниС сСмафоров System V API β€” Π² Ρ„Π°ΠΉΠ»Π΅
<sys/sem.h>
(Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ всСх конструкций, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… этим API).

Π‘ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ программиста System V API присутствуСт Π² QNX Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ для пСрСносимости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ€Π°Π½Π΅Π΅ созданных с использованиСм этого API, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ созданных для Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ UNIX (Sun Solaris, HP UNIX ΠΈ Π΄Ρ€.). Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ это сСмСйство API Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

2. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ

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

Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ рассмотрСниС особСнностСй ΠΈΠΌΠ΅Π½Π½ΠΎ QNX [7](вСрсии 6.X послС привСдСния Π΅Π΅ Π² соотвСтствиС с POSIX, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ 4.25) лишний Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ:

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

β€’Β Π›ΡŽΠ±Ρ‹Π΅ взаимодСйствия, синхронизация, диспСтчСризация ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ, Π΄Π°ΠΆΠ΅ Ссли это ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссов. Π’ΠΎΡ‚ здСсь ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΡΡ‚Π°Π²ΡˆΠΈΠΉ ΡƒΠΆΠ΅ стСрСотипным: Β«IPCΒ β€” срСдства взаимодСйствия процСссов». Для ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этот тСрминологичСский нюанс Π½Π΅ вносит Ρ€ΠΎΠ²Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ различия, Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌ прилоТСниям ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ процСссов (ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ…).

β€’Β Π’ систСмах с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ трансляциСй адрСсов памяти (MMU β€” Memory Management Unit) процСсс создаСт для своих ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Β«Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ сущСствования» β€” Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠ΅ адрСсноС пространство. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ слоТностСй, описываСмых Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ Π² связи с использованиСм IPC, обусловлСно Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Ρ‚ΡŒ адрСсныС Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹, устанавливаСмыС процСссами для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. (Π§Ρ‚ΠΎ касаСтся MMU, Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ прСдполагаСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ x86-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, хотя количСство Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ОБ QNX, Π½Π° сСгодняшний дСнь ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²Π°Π»ΠΈΠ»ΠΎ Π·Π° дСсяток.)

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

МодСль ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² QNX Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит с процСссами Π² MS-DOS ΠΈΠ»ΠΈ с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ (task) Π² сущСствСнно Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ОБ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ VxWorks: исполнимыС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΎΠ΅ адрСсноС пространство Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° использованиС всСго адрСсного пространства. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² QNX ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ слоТный комплСкс, трансформировав Π² ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ этот комплСкс, с Ρ‚Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² QNX всС элСмСнты собствСнно ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ адрСсном пространствС ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ (ΠΈ Ρ‚Π΅ΠΌ самым ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Ρ‹) Π² пространство прилоТСния.