Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
567 из 715
В начале речь идет о трассировке процессов, о том, каким образом один процесс следит за ходом выполнения другого процесса, затем рассматривается пакет IPC: сообщения, разделяемая память и семафоры. Делается обзор традиционных методов сетевого взаимодействия процессов, выполняющихся на разных машинах, и, наконец, дается представление о "гнездах", применяющихся в системе BSD. Вопросы сетевого взаимодействия, имеющие специальный характер, такие как протоколы, адресация и др., не рассматриваются, поскольку они выходят за рамки настоящей работы.
11.1 ТРАССИРОВКА ПРОЦЕССОВ
В системе UNIX имеется простейшая форма взаимодействия процессов, используемая в целях отладки, — трассировка процессов. Процесс-отладчик, например sdb, порождает трассируемый процесс и управляет его выполнением с помощью системной функции ptrace, расставляя и сбрасывая контрольные точки, считывая и записывая данные в его виртуальное адресное пространство. Трассировка процессов, таким образом, включает в себя синхронизацию выполнения процесса-отладчика и трассируемого процесса и управление выполнением последнего.
if ((pid = fork()) == 0) {
/* потомок — трассируемый процесс */
ptrace(0, 0, 0, 0);
exec("имя трассируемого процесса");
}
/* продолжение выполнения процесса-отладчика */
for (;;) {
wait((int *) 0);
read(входная информация для трассировки команд);
ptrace(cmd, pid, …);
if (условие завершения трассировки) break;
}
Рисунок 11.1. Структура процесса отладки
Псевдопрограмма, представленная на Рисунке 11.1, имеет типичную структуру отладочной программы.
|< Пред. 565 566 567 568 569 След. >|