Переключение контекста между потоками требует, чтобы изменились контексты как режима ядра, так и режима пользователя. Для упрощения этого изменения система обеспечивает размещение всего состояния потока режима пользователя в одной структуре данных: структуре потока (большая часть состояния ядра хранится в другом месте). К этому размещению применяются следующие соглашения.
Аппаратное состояние при выполнении в режиме ядра: переключение контекста может иметь место лишь в режиме ядра. Состояние аппаратного выполнения ядра определяется содержанием ТСВ, который расположен в структуре потока.
Аппаратное состояние при выполнении в режиме пользователя: при выполнении в режиме ядра состояние режима пользователя потока (такое, как копии счетчика команд, указатель стека и общие регистры) всегда находится в стеке выполнения ядра, который расположен в структуре потока. Ядро гарантирует такое размещение состояния режима пользователя, требуя от системных вызовов и обработчиков исключений, чтобы они каждый раз при входе в ядро сохраняли содержимое контекста выполнения режима пользователя.
Структура процесса: структура процесса всегда остается в памяти.
Ресурсы памяти: ресурсы памяти процесса фактически описываются содержанием регистров управления памятью, расположенных в ТСВ, и значениями, присутствующими в структурах процесса и потока. Пока процесс остается в памяти, эти значения будут действительными и переключения контекста можно делать без сохранения и восстановления соответствующих таблиц страниц. Однако эти значения необходимо вычислить заново, когда процесс возвращается в основную память после подкачки из вторичного хранилища.
Система поддерживает простую форму учета использования ресурсов. По завершении каждого процесса учетная запись, описывающая использованные этим процессом ресурсы, записывается в системный файл учета.
FreeBSD реализует возможность setgid путем установки в нулевом элементе массива дополнительных групп процесса, который выполняет программу setgid, значения группы этого файла. После этого можно проверять права доступа, как если бы это был обычный процесс. Из-за дополнительной группы программа setgid может иметь возможность доступа к большему количеству файлов, чем процесс пользователя, запускающий программу без этой особой привилегии.
Часто пользователю нужно предоставить дополнительные ограниченные привилегии. Например, пользователь, который хочет отправить сообщение, должен иметь возможность добавить сообщение в почтовый ящик другого пользователя. Разрешение записи в почтовый ящик назначения для всех пользователей дало бы возможность пользователю, не являющемуся владельцем ящика, изменять в нем сообщения (злонамеренно или неумышленно). Чтобы решить эту проблему, ядро допускает создание программ, которым предоставляются при их выполнении дополнительные привилегии.
Часто желательно на всех машинах сети поддерживать одно и то же время. Можно также поддерживать более точное время, чем возможно от базовых часов процессора. Например, без труда доступно оборудование, прослушивающее ряд радиостанций, рассылающих в Соединенных Штатах синхронизирующие сигналы UTC. Когда процессы на различных машинах приходят к соглашению относительно общего времени, им нужно изменить часы процессора своего хоста, чтобы согласовать их с сетевым значением времени.
Ядро предоставляет процессу несколько различных служб времени. Эти службы включают таймеры, работающие в реальном режиме, и таймеры, работающие лишь во время выполнения процесса.