Операционная система UNIX широко использовалась в течение свыше 30 лет и помогла определить многие области вычислительной техники. Первая версия системы UNIX была разработана в Bell Laboratories в 1969 г. Кеном Томпсоном (Ken Thompson) в качестве частного исследовательского проекта для использования с PDP-7, не имевшей операционной системы. К Томпсону вскоре присоединился Денис Ритчи (Dennis Ritchie), который не только внес вклад в создание проекта и реализацию системы, но также создал язык программирования С. В дальнейшем система была полностью переписана на С, почти без ассемблера. Оригинальный элегантный дизайн системы [Ritchie, 1978] и разработки в течение первых 15 лет [Ritchie, 1984а; Compton, 1985] сделали UNIX важной и мощной операционной системой [Ritchie, 1987]. Ритчи, Томпсон и другие ранние разработчики UNIX в Bell Laboratories работали до этого над проектом Multics [Peirce, 1985; Organick, 1975], который сильно повлиял на эту более новую операционную систему. Даже имя UNIX является просто каламбуром с Multics; в областях, в которых Multics пытался выполнять множество задач, UNIX старался выполнить лишь одну задачу, но сделать это хорошо. Базовая организация файловой системы UNIX, идея использования процесса пользователя для командного интерпретатора, общая организация интерфейса файловой системы и многие другие характеристики системы пришли непосредственно из Multics. Были внедрены также идеи из других операционных систем, таких как CTSS Мас-сачусетского технологического института (Massachusetts Institute of Technology - MIT). Операция fork для создания новых процессов пришла из операционной системы GENIE Беркли (SDS-940, позже XDS-940). Возможность недорогого создания процессов для пользователя вела к использованию одного процесса на команду, вместо использования для команд вызовов процедур, как было сделано в Multics.
Вычисления приоритета, использованные в алгоритме кратковременного планирования, разбросаны в различных частях системы. Периодически запускаются две процедуры, schedcpuQ и roundrobinQ. SchedcpuQ пересчитывает приоритеты потоков раз в секунду, используя формулу 4.2, и обновляет значение kg_slptime для потоков, заблокированных вызовом sleepQ. Процедура roundrobinQ запускается 10 раз в секунду и заставляет систему перепланировать потоки в (непустой) очереди с самым высоким приоритетом в режиме карусели, что дает каждому потоку квант времени в 100 миллисекунд.
Процесс представляет собой выполняющуюся программу. У процесса должны быть системные ресурсы, такие, как память и лежащий в основе процессор. Ядро поддерживает иллюзию одновременного выполнения множества процессов, распределяя системные ресурсы среди набора процессов, которые готовы к выполнению. На многопроцессорной машине несколько процессов могут действительно выполняться параллельно.
Некоторые из коммуникационных доменов, поддерживаемые механизмом I2С сокетов, предоставляют доступ к сетевым протоколам. Эти протоколы реализованы в виде отдельного программного уровня, находящегося в ядре логически ниже программного обеспечения сокетов. Ядро предоставляет много дополнительных служб, таких, как управление буферами, маршрутизация сообщений, стандартизированные интерфейсы к протоколам и интерфейсы к драйверам сетевых интерфейсов для использования различных сетевых протоколов.
Межпроцессное взаимодействие в FreeBSD организовано в коммуникационные домены. Важнейшие домены, поддерживаемые в настоящее время, включают локальный домен для взаимодействия процессов, выполняющихся на одной машине; домен IPv4 для взаимодействия процессов с использованием набора протоколов TCP/IP (четвертой версии) и домен IPv6, который является новейшей версией протоколов Интернета.
Исторически пользователи взаимодействовали с системой, используя подключенные к компьютеру через жестко запаянные линии связи терминалы. Хотя фиксированные терминалы в значительной степени остались в истории, обработка символов, осуществляемая для ввода/вывода с клавиатуры, по-прежнему важна. Наиболее обычный вид сеанса пользователя в FreeBSD использует псевдотерминал. Псевдотерминал состоит из пары устройств, называемых ведущим (master) и ведомым (slave) устройствами.