Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (39 – предобработка мультипроцессов, часть 23)

предыдущая часть ««»» следующая часть

Строки 53-56. Подпрограмма cleanup_child (). Эта подпрограмма вызывается обработчиком chld модуля Daemon, вызов которого происходит после удаления из системных таблиц информации о завершившемся дочернем процессе; следовательно, подпрограмма вызывается во время обработки прерывания.

Выполняется выборка PID дочернего процесса, переданного модулем Daemon, но в данной версии сервера с этой информацией не выполняется каких-либо действий. Происходит только уменьшение переменной на единицу, что будет служить для главного цикла сигналом об уничтожении одного дочернего процесса.

Если в вашей системе применяются версии процедур ps или top, которые вызывают системный вызов, выполняемый каждым процессом, то с их помощью можно заметить разницу между версиями сервера, в которых используются неупорядоченные и упорядоченные вызовы функции accept ( ). В системе Linux утилита top после вызова неупорядоченной версии сервера показала следующее:

PID      SIZE    WCHAN         STAT. %CPU %MEM           TIME   COMMAND :

15300      2560    tcp_parse      S    0.0    4.0    0:00    web_preforkl.pl
15301      2560    tcp_parse      S    0.0    4.0    0:00    web_preforkl.pl
15302      2560    tcp_parse      S    0.0    4.0    0:00    web_preforkl.pl
15303      2560    tcp_parse      S    0.0    4.0    0:00    web_preforkl.pl
15304      2560    tcp_parse      S    0.0    4.0    0:00    web_preforkl.pl

Здесь — пять дочерних процессов, и для каждого из них (как показано в столбце WCHAN) выполняется системный вызов tcp_parse. Вероятно, эта процедура вызывается функцией accept () во время ожидания входящего соединения.

PID 1

SIZE

WCHAN

 

STAT

%CPU

%MEM

TIME

15313

2984

pause

 

S

0.0

4.6

0

00

15314

2980

flock

lock

S

0.0

4.6

0

00

15315

2980

tcp parse

S

0.0

4.6

0

00

15316

2980

flock

lock

S

0.0

4.6

0

00

15317

2980

flock

lock

S

0.0

4.6

0

00

15318

2980

flock

lock

S

0.0

4.6

0

00

В отличие от этого, последняя версия сервера с предварительным ветвлением об­наруживает совсем иную картину. Процесс, находящийся в верхней части списка (PID 15313), является родительским. Утилита top указывает для него значение pause, поскольку в функции sleep () применяется именно этот системный вызов. Остальные пять процессов (15314- 15318) — дочерние. Только один из них выполняет функцию accept (), а другие заблокированы в системном вызове flock_lock. После того как активный дочерний процесс обработает входящее соединение, его место займет другой, но в любой мо­мент времени функцию accept ( ) вызывает только один дочерний процесс.



2014-12-10 16:36:27

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония