Первыми большими изданиями UNIX были Исследовательские системы (Research systems) из Bell Laboratories. В дополнение к самым ранним версиям UNIX эти системы включали шестую версию UNIX с системой разделения времени (Time-Sharing System, Sixth Edition), общеизвестную как V6, которая в 1976 г. была первой версией, широко доступной за пределами Bell Laboratories. Системы идентифицируются номерами редакций Руководства программиста UNIX, которые были текущими на момент создания дистрибутивов.
Система UNIX отличалась от других операционных систем в трех главных отношениях.
Она распространялась в виде исходных кодов.
Она предусматривала мощные примитивы, которые обычно можно было найти лишь в операционных системах, работавших на более дорогом оборудовании.
Большая часть исходного кода системы была написана на С, а не на языке ассемблера. Господствующим убеждением в то время было то, что операционная система должна была быть написана на ассемблере, чтобы обеспечить необходимую эффективность и получить доступ к аппаратному обеспечению. Сам язык С был достаточно высокого уровня, чтобы позволить легкую компиляцию для широкого спектра компьютерного оборудования без излишних усложнений или ограничений, которые заставили бы программистов возвратиться к языку ассемблера, чтобы получить необходимые эффективность или возможности. Доступ к аппаратному обеспечению был предусмотрен через ассемблерные заглушки для 3 процентов функций операционной системы - таких, как переключение контекста, - которые нуждались в них.
Хотя успех UNIX не произрастает лишь из того, что она была написана на языке высокого уровня, использование С было критическим первым шагом [Kernighan & Ritchie, 1978; Kernighan & Ritchie, 1989; Ritchie et al., 1978]. Язык Ритчи С происходил [Rosier, 1984] от языка В Томпсона, который сам происходил от BCPL [Richards & Whitby-Strevens, 1980]. В настоящее время С продолжает развиваться [Tuthill, 1985; ISO, 1999].
Вторым важным отличием UNIX было ее распространение из Bell Laboratories в другие исследовательские учреждения в форме исходного кода. Предоставляя исходный код, основатели системы гарантировали, что другие организации могли не только использовать систему, но также подправлять ее внутреннюю работу. Легкость, с которой новые идеи могли быть приняты в новую систему, всегда была ключом к изменениям, которые с ней делались. Каждый раз, когда развивалась новая система, пытавшаяся обставить UNIX, кто-нибудь анализировал пришельца и клонировал его основные идеи в UNIX. Уникальная способность использовать небольшую, постижимую систему, написанную на языке высокого уровня, в окружении, погруженном в новые идеи, вела к системе UNIX, которая развилась значительно дальше своего скромного начала. Хотя получатели исходного кода должны были его лицензировать, для университетов были доступны дешевые университетские лицензии. Таким образом, многие люди стали опытными в работе UNIX, создав платформу для мира с открытым исходным кодом, который последовал в дальнейшем.
Третьим важным отличием UNIX было то, что она предоставляла отдельным пользователям возможность параллельно запускать множество процессов и подключать эти процессы в конвейеры команд. В то время лишь операционные системы, работающие на больших и дорогих машинах, имели возможность запускать несколько процессов, а число параллельных процессов обычно строго контролировалось системным администратором.
Самые ранние системы UNIX работали на PDP-11, которая была недорогой и мощной для своего времени. Тем не менее был по крайней мере один ранний перенос шестой редакции UNIX (Sixth Edition UNIX) на машину с другой архитектурой: Interdata 7/32 [Miller, 1978]. PDP-11 имела также неудобно маленькое адресное пространство. Появление машин с 32-разрядными адресными пространствами, особенно VAX-11/780, предоставило UNIX возможность расширить свои службы со включением виртуальной памяти и работы в сети. Ранние эксперименты Исследовательской группы (Research group) по предоставлению UNIX-подобных возможностей на другом оборудовании привели к заключению, что переносить всю операционную систему было так же просто, как дублировать службы UNIX под другой операционной системой. Первой системой UNIX с переносимостью в качестве конкретной цели была система UNIX с разделением времени, седьмая редакция (UNIX Time-Sharing System, Seventh Edition (V7), которая работала на PDP-11 и Interdata 8/32 и имела разновидность VAX, которая называлась UNIX/32V Time-Sharing, System Version 1.0 (32V).
Исследовательская группа в Bell Laboratories разработала также восьмую, девятую и десятую версии UNIX с разделением времени (соответственно V8, V9 и V10). Их системой 1996 г. является Plan 9
Вычисления приоритета, использованные в алгоритме кратковременного планирования, разбросаны в различных частях системы. Периодически запускаются две процедуры, schedcpuQ и roundrobinQ. SchedcpuQ пересчитывает приоритеты потоков раз в секунду, используя формулу 4.2, и обновляет значение kg_slptime для потоков, заблокированных вызовом sleepQ. Процедура roundrobinQ запускается 10 раз в секунду и заставляет систему перепланировать потоки в (непустой) очереди с самым высоким приоритетом в режиме карусели, что дает каждому потоку квант времени в 100 миллисекунд.
Процесс представляет собой выполняющуюся программу. У процесса должны быть системные ресурсы, такие, как память и лежащий в основе процессор. Ядро поддерживает иллюзию одновременного выполнения множества процессов, распределяя системные ресурсы среди набора процессов, которые готовы к выполнению. На многопроцессорной машине несколько процессов могут действительно выполняться параллельно.
Некоторые из коммуникационных доменов, поддерживаемые механизмом I2С сокетов, предоставляют доступ к сетевым протоколам. Эти протоколы реализованы в виде отдельного программного уровня, находящегося в ядре логически ниже программного обеспечения сокетов. Ядро предоставляет много дополнительных служб, таких, как управление буферами, маршрутизация сообщений, стандартизированные интерфейсы к протоколам и интерфейсы к драйверам сетевых интерфейсов для использования различных сетевых протоколов.
Межпроцессное взаимодействие в FreeBSD организовано в коммуникационные домены. Важнейшие домены, поддерживаемые в настоящее время, включают локальный домен для взаимодействия процессов, выполняющихся на одной машине; домен IPv4 для взаимодействия процессов с использованием набора протоколов TCP/IP (четвертой версии) и домен IPv6, который является новейшей версией протоколов Интернета.
Исторически пользователи взаимодействовали с системой, используя подключенные к компьютеру через жестко запаянные линии связи терминалы. Хотя фиксированные терминалы в значительной степени остались в истории, обработка символов, осуществляемая для ввода/вывода с клавиатуры, по-прежнему важна. Наиболее обычный вид сеанса пользователя в FreeBSD использует псевдотерминал. Псевдотерминал состоит из пары устройств, называемых ведущим (master) и ведомым (slave) устройствами.