Архитектура операционной системы UNIX


     заработок в интернете | как начать свой бизнес с нуля |     

ТРАССИРОВКА ПРОЦЕССОВ


В системе 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. Структура процесса отладки

Псевдопрограмма, представленная на , имеет типичную структуру отладочной программы. Отладчик порождает новый процесс, запускающий системную функцию ptrace, в результате чего в соответствующей процессу-потомку записи таблицы процессов ядро устанавливает бит трассировки. Процесс-потомок предназначен для запуска (exec) трассируемой программы. Например, если пользователь ведет отладку программы a.out, процесс-потомок запускает файл с тем же именем. Ядро отрабатывает функцию exec обычным порядком, но в финале замечает, что бит трассировки установлен, и посылает процессу-потомку сигнал прерывания. На выходе из функции exec, как и на выходе из любой другой функции, ядро проверяет наличие сигналов, обнаруживает только что посланный сигнал прерывания и исполняет программу трассировки процесса как особый случай обработки сигналов. Заметив установку бита трассировки, процесс-потомок выводит своего родителя из состояния приостанова, в котором последний находится вследствие исполнения функции wait, сам переходит в состояние трассировки, подобное состоянию приостанова (но не показанное на диаграмме состояний процесса, см. ), и выполняет переключение контекста.



Содержание  Назад  Вперед