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