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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «АрхитСктура ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX (Π›ΠŸ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 129

Автор Π‘Π°Ρ… ΠœΠΎΡ€ΠΈΡ Π”ΠΆ.

Β  close(ns);

Β }

}

Рисунок 11.20. ΠŸΡ€ΠΎΡ†Π΅ΡΡ-сСрвСр Π² Π΄ΠΎΠΌΠ΅Π½Π΅ "UNIX system"

#include β€Ήsys/types.hβ€Ί

#include β€Ήsys/socket.hβ€Ί

main() {

Β int sd, ns;

Β char buf[256];

Β struct sockaddr sockaddr;

Β int fromlen;

Β sd = socket(AF_UNIX, SOCK_STREAM, 0);

Β /* имя Π² запросС Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΒ ΠΏΡƒΡΡ‚ΠΎΠΉ символ */

Β if (connect(sd, "sockname", sizeof("sockname")Β - 1) == -1) exit();

Β write(sd, "hi guy", 6);}

Рисунок 11.21. ΠŸΡ€ΠΎΡ†Π΅ΡΡ-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² Π΄ΠΎΠΌΠ΅Π½Π΅ "UNIX system"

На РисункС 11.21 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ процСсса-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с сСрвСром. ΠšΠ»ΠΈΠ΅Π½Ρ‚ создаСт Π³Π½Π΅Π·Π΄ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π΄ΠΎΠΌΠ΅Π½Π΅, Ρ‡Ρ‚ΠΎ ΠΈ сСрвСр, ΠΈ посылаСт запрос Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π³Π½Π΅Π·Π΄Ρƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ sockname. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ процСсс-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» связи с сСрвСром. Π’ рассматриваСмом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ сообщСниС ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Если сСрвСр обслуТиваСт процСссы Π² сСти, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³Π½Π΅Π·Π΄ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄ΠΎΠΌΠ΅Π½Ρƒ "Internet", ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

socket(AF_INET, SOCK_STREAM, 0);

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

11.5 Π’Π«Π’ΠžΠ”Π«

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

БистСма UNIX ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСй. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ согласования ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π² сильной стСпСни ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ioctl, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… сСтСй ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ систСмС BSD ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Π½Π΅Π·Π΄Π°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ структуру сСтСвого взаимодСйствия. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π² Π²Π΅Ρ€ΡΠΈΡŽ V прСдполагаСтся Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ описанный Π² Π³Π»Π°Π²Π΅ 10 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² сСти.

11.6 Π£ΠŸΠ ΠΠ–ΠΠ•ΠΠ˜Π―

1.Β Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ debug Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wait (Рисунок 11.3)? (НамСк: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° исхода.)

2.Β Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ptrace ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ считываСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· пространства трассируСмого процСсса ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ слову Π·Π° ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. КакиС измСнСния слСдуСт произвСсти Π² ядрС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство считываСмых слов? КакиС измСнСния ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ptrace?

3.Β Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ptrace Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° pid ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π½Π°Π΄ вопросами, связанными с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: ΠŸΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… процСссу ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· адрСсного пространства Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ процСсса? ΠŸΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ вСсти запись Π² адрСсноС пространство Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса?

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

5. КакиС дСйствия пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, прСдставлСнная Π½Π° РисункС 11.22?

*6. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π±Ρ‹ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ раздСляСмой памяти слишком Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ позволяла Π±Ρ‹ стСку ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ раздСляСмой области. Π’ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°Ρ ошибка памяти?

7.Β Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, прСдставлСнной Π½Π° РисункС 11.14, Ρ„Π»Π°Π³ IPC_NOWAIT, рСализуя условный Ρ‚ΠΈΠΏ сСмафора. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π·Π° счСт этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ возникновСния Π²Π·Π°ΠΈΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

8.Β ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ сСмафорами Ρ‚ΠΈΠΏΠ° P ΠΈ V Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ. Как Π±Ρ‹ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ P условного Ρ‚ΠΈΠΏΠ°?

9.Β Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Ρ…Π²Π°Ρ‚Π° рСсурсов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ (Π°) ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹, (Π±) систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ creat ΠΈ unlink, (Π²) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈΡ… эффСктивности.

10. На практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ сравнитС ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, с ΠΎΠ΄Π½ΠΎΠΉ стороны, с функциями read ΠΈ write, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

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

#include β€Ήsys/types.hβ€Ί

#include β€Ήsys/ipc.hβ€Ί

#include β€Ήsys/msg.hβ€Ί

#define ALLTYPES 0

main() {

Β struct msgform {

Β  long mtype;

Β Β char mtext[1024];

Β } msg;

Β register unsigned int id;

Β for (id = 0; ; id++) while (msgrcv(id, &msg, 1024, ALLTYPES, IPC_NOWAIT) β€Ί 0);