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

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

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

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

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, приступая ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°ΠΏΡ€ΠΈΠΎΡ€Π½ΠΎ, Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° фактичСской Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌ ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями.

Π”Π²Π΅ стороны Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°

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

Для эффСктивного примСнСния Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ³ΠΎ инструмСнтария: простота, Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, возмоТности внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π½Π° этапС Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ сопровоТдСния. Π­Ρ‚ΠΈΠΌ ΠΌΡ‹ ΠΈ займСмся Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части Π³Π»Π°Π²Ρ‹.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ

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

Π‘ΠΎ стороны сСрвСра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это выглядит Ρ‚Π°ΠΊ:

int chid = ChannelCreate(0);

...

while (true) {

Β struct _msg_info info;

Β int rcvid = MsgReceive(chid, &bufin, sizeof(bufin), &info);

Β if (rcvid < 0) exit(EXIT_FAILURE);

Β if (MsgReply(rcvid, EOK, &bufou, sizeof(bufou) < 0) exit(EXIT_FAILURE);

}

Co стороны ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

int coid = ConnectAttach(node, pid, chid, _NTO_SIDE_CHANNEL, 0);

if (coid < 0) exit(EXIT_FAILURE);

...

while(...)

Β if (MsgSend(coid, &bufou, sizeof(bufou), &bufin, sizeof(bufin)) == -1)

Β  exit(EXIT_FAILURE);

}

Код для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, Π½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ рСсурса, Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² нСсколько Ρ€Π°Π· объСмнСС (ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎ тСксту). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎ большСй части ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· заполнСния ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… структур, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° рСсурсов ΠΈΠ»ΠΈ ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ повСрхностный взгляд Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠ°Π»ΠΎΠ²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»Π΅Π½.

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

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΈ установлСнии соСдинСния Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° простого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π² качСствС адрСсата сообщСний (сСрвСра) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Β«ΠΌΠ°Π³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚Ρ€ΠΎΠΉΠΊΡƒΒ» (Ρ‚Ρ€ΠΈΠΏΠ»Π΅Ρ‚ [1]) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ND, PID ΠΈ CHID, Π³Π΄Π΅:

β€’Β 

ND
β€” дСскриптор сСтСвого ΡƒΠ·Π»Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π°Ρ нас ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-сСрвСр (ΡƒΠ·Π΅Π», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСниС);

β€’Β 

PID
β€” PID процСсса этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° своСм сСтСвом ΡƒΠ·Π»Π΅ (ΠΊΠΎΠΌΡƒ ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСниС);

β€’Β 

CHID
β€” Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π»Π° эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠ΅ΠΌΠ° сообщСний Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

Π’ этой адрСсации, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΈ кроСтся самая главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° нСгибкости ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. ДСскриптор сСтСвого ΡƒΠ·Π»Π°

nd
, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, способно ΡΠ°ΠΌΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² сСти с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎ сСтСвому ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ нас хоста, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ
netmgr_strtond()
. (Π­Ρ‚ΠΎ дСйствиС ΠΏΠΎ своСй сути ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ΅, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ косвСнности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΠ·Π»Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ прилоТСнияявляСтся Π΅Π³ΠΎ имя, Π° Π½Π΅ дСскриптор.)

Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅ Π΄Π΅Π»ΠΎ обстоит с

pid
ΠΈ
chid
, особСнно для процСсса, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСтСвом ΡƒΠ·Π»Π΅. НС сущСствуСт Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ прямогоспособа ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PID ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ процСсса, Π° Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π» этот процСсс для ΠΎΠ±ΠΌΠ΅Π½Π° (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π», Ссли ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ошиблись Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ PID). И Ρ‚ΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ искусствСнныС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, построСнныС Π»ΠΈΠ±ΠΎ Π½Π° использовании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… иСрархичСских (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ-Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ) ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ процСссов ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра, Π»ΠΈΠ±ΠΎ Π½Π° систСмах ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ условных договорСнностСй (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ случая ΠΊ ΡΠ»ΡƒΡ‡Π°ΡŽ).

Π . ΠšΠ΅Ρ€Ρ‚Π΅Π½ [1] ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сущСствуСт мноТСство способов нахоТдСния этой адрСсной Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, ΠΈ пСрСчисляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

1.Β ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с извСстным ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ ND/PID/CHID…

2.Β Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ND/PID/CHID Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ программы…

3.Β Π—Π°Π½ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ ΡΡ‚Π°Ρ‚ΡŒ администратором рСсурсов.

НС вдаваясь Π² ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· (Π²Ρ‹ это ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сами), ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ 1-ΠΉ способ β€” ΠΊΡ€Π°ΠΉΠ½Π΅ искусствСнный ΠΈ Π½Π΅Π³ΠΈΠ±ΠΊΠΈΠΉ (особСнно Π² сСтСвой срСдС), 2-ΠΉ β€” ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ лишь ΠΊ ΡƒΠ·ΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ Π·Π°Π΄Π°Ρ‡, Π° 3-ΠΉ способ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Сю ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ адрСсации.

НСсколько, бСзусловно, интСрСсных ΠΈ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… внимания Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ Π½Π° Ρ‚Π΅ΠΌΡƒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π’. Π—Π°ΠΉΡ†Π΅Π² Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт Π·Π° Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²ΠΎΠΉ.

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

read()
ΠΈΠ»ΠΈ
devctl()
, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свой PID ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ для прямого ΠΎΠ±ΠΌΠ΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ CHID. На этом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° вСсь ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ сообщСний Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π». ΠŸΠΎΠ»Π½Ρ‹ΠΉ тСкст Ρ‚Π°ΠΊΠΎΠ³ΠΎ сСрвСра Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ·ΠΆΠ΅.