FreeBSD предусматривает упрощенную возможность управления и отладки выполнения процесса. Эта возможность, доступ к которой осуществляется посредством системного вызова ptrace, позволяет родительскому процессу контролировать выполнение порожденного процесса, манипулируя состоянием выполнения режимов пользователя и ядра. В частности, с помощью ptrace родительский процесс может выполнить в отношении порожденного процесса следующие операции:
Вызов ptrace почти исключительно используется отладчиками программ, такими, как gdb.
При трассировке процесса все отправляемые процессу сигналы заставляют его войти в состояние STOPPED. Родительский процесс уведомляется с помощью сигнала SIGCHLD и может запросить состояние порожденного процесса с помощью системного вызова wait4. На большинстве машин исключения-ловушки трассировки (trace traps), генерируемые при пошаговом выполнении процесса, и исключения-отказы точек останова (breakpoint faults)1, вызываемые выполнением процессом инструкции точки останова, преобразуются FreeBSD в сигналы SIGTRAP. Поскольку сигналы, отправляемые трассируемому процессу, заставляют его остановиться и вызывают уведомление родителя, выполнение программы можно легко контролировать.
Чтобы запустить программу, которую нужно отладить, отладчик сначала создает порожденный процесс с помощью системного вызова fork. После разветвления (fork) порожденный процесс использует вызов ptrace, который вызывает пометку процесса как трассируемого посредством установки бита P_TRACED в полеp_flag структуры процесса. Порожденный процесс устанавливает затем бит ловушки трассировки в слове состояния процессора для процесса и вызывает execve, чтобы загрузить образ программы для отладки. Установка этого бита гарантирует, что первая выполненная порожденным процессом инструкция после загрузки нового образа приведет к аппаратному исключению-ловушке трассировки, которое преобразуется системой в сигнал SIGTRAP. Поскольку родительский процесс уведомляется обо всех сигналах порожденному процессу, он может перехватить сигнал и получить управление программой до того, как она выполнит первую инструкцию.
В качестве альтернативы отладчик может взять управление над существующим процессом путем присоединения к нему. Успешный запрос присоединения заставляет процесс войти в состояние STOPPED, а в поле p_flag его структуры процесса будет установлен бит PTRACED. Затем отладчик может действовать в отношении процесса тем же самым способом, как в случае с явным его запуском.
Альтернативой системному вызову ptrace является файловая система /ргос. Возможности, предоставляемые файловой системой /ргос, те же самые, которые предоставляет ptrace; они отличаются лишь по интерфейсу. Файловая система /ргос реализует представление системной таблицы процессов внутри файловой системы и называется так, потому что обычно монтируется в /ргос. Она предоставляет двухуровневое представление пространства процессов. На высшем уровне названы сами процессы в соответствии с их ID процессов. Имеется также особый узел, который называется curproc и который всегда ссылается на процесс, осуществляющий запрос поиска.
Система поддерживает простую форму учета использования ресурсов. По завершении каждого процесса учетная запись, описывающая использованные этим процессом ресурсы, записывается в системный файл учета.
FreeBSD реализует возможность setgid путем установки в нулевом элементе массива дополнительных групп процесса, который выполняет программу setgid, значения группы этого файла. После этого можно проверять права доступа, как если бы это был обычный процесс. Из-за дополнительной группы программа setgid может иметь возможность доступа к большему количеству файлов, чем процесс пользователя, запускающий программу без этой особой привилегии.
Часто пользователю нужно предоставить дополнительные ограниченные привилегии. Например, пользователь, который хочет отправить сообщение, должен иметь возможность добавить сообщение в почтовый ящик другого пользователя. Разрешение записи в почтовый ящик назначения для всех пользователей дало бы возможность пользователю, не являющемуся владельцем ящика, изменять в нем сообщения (злонамеренно или неумышленно). Чтобы решить эту проблему, ядро допускает создание программ, которым предоставляются при их выполнении дополнительные привилегии.
Часто желательно на всех машинах сети поддерживать одно и то же время. Можно также поддерживать более точное время, чем возможно от базовых часов процессора. Например, без труда доступно оборудование, прослушивающее ряд радиостанций, рассылающих в Соединенных Штатах синхронизирующие сигналы UTC. Когда процессы на различных машинах приходят к соглашению относительно общего времени, им нужно изменить часы процессора своего хоста, чтобы согласовать их с сетевым значением времени.
Ядро предоставляет процессу несколько различных служб времени. Эти службы включают таймеры, работающие в реальном режиме, и таймеры, работающие лишь во время выполнения процесса.