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

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

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

РаньшС, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ использовало Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ name_open() для связи с сСрвСром, сСрвСр ΠΎΠ± этом Π½Π΅ Π·Π½Π°Π». Π’Π΅ΠΏΠ΅Ρ€ΡŒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ: сСрвСру фактичСски отсылаСтся сообщСниС _IO_CONNECT/_IO_OPEN. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-сСрвСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ сообщСния _IO_CONNECT.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π—Π°Π΄Π°Ρ‡Π° провСдСния ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° рассмотрСнных Π½Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΡ… быстродСйствия ΠΈΠ»ΠΈ, скаТСм, объСма исполняСмого ΠΊΠΎΠ΄Π° Π½Π΅ показалась ΠΌΠ½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ. Полагаю, Ρ‡Ρ‚ΠΎ благодаря высокой эффСктивности ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. А Π²ΠΎΡ‚ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ…Β» ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρƒ мСня.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· рассмотрСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся самым «спартанским» ΠΈ поэтому Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным ΠΏΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Β«Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌΒ», Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обустройства, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСмах. Π›ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅ большС ΠΈΠΌΠΏΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ боюсь, Ρ‡Ρ‚ΠΎ это просто Π»ΠΈΡ‡Π½Ρ‹Π΅ пристрастия (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нравится ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π»Π΅Π½Ρ‚ΡΡŽ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ прСдлагаСтся ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° рСсурсов, ΠΈ самому Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ...). Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ большС всСго нравится Π²Π°ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

1. Π ΠΎΠ± ΠšΠ΅Ρ€Ρ‚Π΅Π½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² QNX/Neutrino 2Β». β€” БПб.: ΠŸΠ΅Ρ‚Ρ€ΠΎΠΏΠΎΠ»ΠΈΡ, 2001. β€” 478 с.

2. Π£ΠΈΠ»ΡŒΡΠΌ БтивСнс Β«UNIX: взаимодСйствиС процСссов». β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2002. β€” 576 с.

3. Π£ΠΈΠ»ΡŒΡΠΌ БтивСнс Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2003. β€” 1086 Ρ.

4. ΠΠ»Π΅ΠΊΡΠ΅Π΅Π², Π’ΠΈΠ΄Ρ€Π΅Π²ΠΈΡ‡, Π’ΠΎΠ»ΠΊΠΎΠ², Π“ΠΎΡ€ΠΎΡˆΠΊΠΎ, Π“ΠΎΡ€Ρ‡Π°ΠΊ, Жавнис, Бошин, Π¦ΠΈΠ»ΡŽΡ€ΠΈΠΊ, Π§ΠΈΠ»ΠΈΠΊΠΈΠ½ Β«ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с QNXΒ». β€” М.: ΠšΠΎΠΌΠ‘ΡƒΠΊ, 2004. β€” 432 с.

5. ΠšΡΠΉΡ‚ Π₯эвилСнд, Π”Π°ΠΉΠ½Π° Π“Ρ€Π΅ΠΉ, Π‘Π΅Π½ Π‘Π°Π»Π°ΠΌΠ° «БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² UNIXΒ». β€” М.: Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2000. β€” 368 с.

6. Π’СрСнс Π§Π°Π½ «БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C++ для UNIXΒ». β€” К.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° BHV, 1997. β€” 592 с.

7. ΠΠ½Π΄Ρ€Π΅ΠΉ РобачСвский Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма UNIXΒ». β€” БПб.: BHV-Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 1997. β€” 528 с.

8. Β«QNX Neutrino Realtime Operating System. System ArchitectureΒ». β€” QNX Software Systems Ltd, 2002.

9. Π™ΠΎΠ½ Π‘Π½Π΅ΠΉΠ΄Π΅Ρ€ Β«Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ TCP/IPΒ». β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2001. β€” 320 с.

10. Π­. ДСйкстра «ВзаимодСйствиС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов», сборник Β«Π―Π·Ρ‹ΠΊΠΈ программирования» ΠΏΠΎΠ΄ Ρ€Π΅Π΄. Π€. Π–Π΅Π½ΡŽΠΈ. β€” М.: ΠœΠΈΡ€, 1972.

11. Π‘Ρ‚ΠΈΠ²Π΅Π½ Π―Π½Π³ «АлгоритмичСскиС языки Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β». β€” М.: ΠœΠΈΡ€, 1985. β€” 400 с.

12. ΠœΠ°Ρ€ΠΊ ΠœΠΈΡ‚Ρ‡Π΅Π»Π», Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ ΠžΡƒΠ»Π΄Π΅ΠΌ, АлСкс Бамьюэл Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Linux. ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Β». β€” М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2002. β€” 288 с.

13. Π‘. L. Liu and J.W. Layland Β«Scheduling Algorithms for Multiprogramming in a Hard Real-Time EnvironmentΒ», J. CM, Vol. 20, No. 1, Jan.1973, pp. 46-61.

14. The Open Group Base Specifications Issue 6, IEEE Std 1003.1-2001. General Information. Copyright 2001 The IEEE and The Open Group.


1

По Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ писались ΠΊΠ½ΠΈΠ³ΠΈ, ΡΡ‚Π°Π²ΡˆΠΈΠ΅ самыми ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ источниками Π² ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ описания Даниэля Нортона ΠΏΠΎ MS-DOS ΠΈΠ»ΠΈ Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ Π ΠΈΡ…Ρ‚Π΅Ρ€Π° ΠΏΠΎ Win32.

2

ВсС тСхничСскиС описания QNX API сформированы Π² ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° классичСский Π‘. Напротив, всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² тСкстС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈΠ·Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π² синтаксисС Π‘++, Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹Π΅ ΠΊ тСксту прилоТСния транслированы Π² Π‘++. Π­Ρ‚ΠΎ обусловлСно рядом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² Π² любом случаС Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ использования QNX API.

3

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

4

Π­Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ диктуСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ «слабосвязанных процСссов», Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ сформулированным Π­. ДСйкстрой [10]. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΈ стройная Β«ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΌΠΈΡ€Π°Β», выстроСнная Π­. ДСйкстрой ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰Π°ΡΡΡ классикой, ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅ (Β«Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈ достаточно») описываСт систСму процСссов Ρ€Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π·Π°Ρ‚ΡƒΠΌΠ°Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ всС Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС…

5

На сСгодняшний дСнь практичСски Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ОБ UNIX ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ отнСсСна чисто ΠΊ System V ΠΈΠ»ΠΈ BSD, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ исходя ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· трСбования совмСстимости с POSIX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ наличия ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ API (хотя Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ API рСализуСтся ΠΊΠ°ΠΊ Β«ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°Β» ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ). Одними ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… (ΠΊ 1997–1998 Π³Π³.) ОБ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±Π° Π½Π°Π±ΠΎΡ€Π° API, стали Sun Solaris 2.6 ΠΈ Digital Unix 4.0B [3].

6

ΠŸΡ€ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ истории UNIX, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉΡΡ с 1971 Π³. [7], Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ API β€” BSD ΠΈ System V β€” Π² ΠΈΡ… соврСмСнном Π²ΠΈΠ΄Π΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ достаточно ΠΏΠΎΠ·Π΄Π½ΠΎ: BSD ΠΊ 1983 Π³., a System V ΠΊ 1987 Π³. [3, 7]. Но ΠΌΠ½ΠΎΠ³ΠΈΠ΅ IPC-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ System V (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСмафоры) ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ своих Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ· BSD. Как отмСчаСтся Π² [3]: Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± истории Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ System V IPC Π½Π΅ слишком Π»Π΅Π³ΠΊΠΎ доступна <…> ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний, сСмафоры ΠΈ раздСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ этого Ρ‚ΠΈΠΏΠ° Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ 70Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ„ΠΈΠ»ΠΈΠ°Π»ΠΎΠ² Bell Laboratories Π² Π³ΠΎΡ€ΠΎΠ΄Π΅ ΠšΠΎΠ»ΡƒΠΌΠ±ΡƒΡβ€¦ Π­Ρ‚Π° вСрсия Π½Π°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ Columbus Unix, ΠΈΠ»ΠΈ Π‘Π’ UnixΒ».

7

[4]: Π³Π»Π°Π²Π° Π”. АлСксССва Β«ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΒ».

8

Π—Π΄Π΅ΡΡŒ РобачСвский ΠΌΠΈΠΌΠΎΡ…ΠΎΠ΄ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ понятиС процСсса ΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкстом для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° shell, ΠΈΠ»ΠΈ языков Perl, Tcl/Tk, ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ контСкстС нашСго обсуТдСния Π² случаях выполнСния Ρ‚Π°ΠΊΠΈΡ… Β«ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ» «процСссом» Π±ΡƒΠ΄Π΅Ρ‚ процСсс, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ тСкст скрипта, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ Π½Π΅ΠΌΡƒ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ относятся всС Π΄Π΅Ρ‚Π°Π»ΠΈ нашСго рассмотрСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ процСссов.

9

Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ тСрминология [7]; тСрминология ΠΈ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΎΠ½ΠΎΠ² UNIX нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π² ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΈΡ… Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… источниках.

10

Π—Π΄Π΅ΡΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ зависит ΠΎΡ‚ расстановки ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ². Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всякий, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ваш ΠΊΠΎΠ΄, Ρ‚ΡƒΡ‚ ΠΆΠ΅ воскликнул: «Ну ΠΈ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°Ρ€Π΅Π½ΡŒ написал Ρ‚Π°ΠΊΠΎΠ΅!Β», Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ spawn(). ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ максимально элСгантным ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ fork(), Π° Ссли ставится Π·Π°Π΄Π°Ρ‡Π° Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ читаСмости ΠΈ ясности ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто достаточно ΠΈ system().

11

Π”Π΅Ρ‚Π°Π»ΠΈ создания ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ ΠΈ частности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅Π΅.

12

НапоминаСм, Ρ‡Ρ‚ΠΎ листинги, названия ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Π½Π° сСром Ρ„ΠΎΠ½Π΅), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Π΅ прилоТСния. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ…; ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ воспроизвСдСны ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ‚ΠΎΠ½ΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

13

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ это вовсС Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слСдуСт нСпосрСдствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² spawn(), вСдь ΠΎΠ½ самый Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΈ Ρ‡Ρ€Π΅Π²Π°Ρ‚ ошибками.

14

Часто Π² публикациях ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ POSIX 1003b (1993). Но POSIX 1003b Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΡƒ pthread_*, хотя ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этой Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ сСмафоры sem_t. Π£. БтивСнс [2] ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ POSIX ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ 1003.1 (1995).

15

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… процСссов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fork() β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ пСсня. Π₯отя POSIX ΠΈ прСдусматриваСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (pthread_atfork()) Ρ‚Π°ΠΊΠΎΠΉ возмоТности, Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π½Π΅ ясно, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. API QNX прСдоставляСт эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сам ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° послСдствия. Π”Π΅Ρ‚Π°Π»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° pthread_atfork() см. Π² справочном руководствС QNX.

16

БобствСнно с этим ΠΈ связано ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ названия Β«Π»Π΅Π³ΠΊΠΈΠ΅ процСссы». Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ (LWP β€” lightweight process) Π²Π²Π΅Π»Π° Π² своСй тСхничСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для обозначСния понятия, эквивалСнтного ΠΏΠΎΡ‚ΠΎΠΊΡƒ, Ρ„ΠΈΡ€ΠΌΠ° Sun Microsystems.

17

Π­Ρ‚Π° схСма PID/TID описана Π² POSIX, Π½ΠΎ выполняСтся Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΠΎ всСх UNIX-совмСстимых ОБ. НапримСр, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ самых послСдних Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΉ ядра Linux (ситуация стала ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСйчас) процСссы (fork()) ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ (pthread_create()) (создавались Π½Π° Π±Π°Π·Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π° (_clone()) ΠΈ TID являлись ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ряду PID. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ выявляСмым ошибкам ΠΏΡ€ΠΈ пСрСносС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ОБ.