Дистрибутивы из Беркли были первыми основанными на UNIX системами, которые ввели многие важные особенности, включая следующие...
Версии Беркли нашли свой путь в системы UNIX многих производителей и были внутренне использованы группами разработчиков многих других производителей. Реализация набора сетевых протоколов TCP/IP в 4.2BSD и 4.3BSD и доступность этих систем сыграли ключевую роль в превращении набора сетевых протоколов TCP/IP в международный стандарт. Даже производители He-UNIX-систем, такие, как Microsoft, приспособили дизайн сокетов Беркли для своего интерфейса IPC Winsock.
Выпуски BSD оказали также сильное влияние на стандарт интерфейса операционных систем POSIX (стандарт IEEE 1003.1) и связанные с ним стандарты. Несколько особенностей - такие, как надежные сигналы, управление заданиями, несколько групп доступа для процесса и процедуры для операций с каталогами - были приспособлены из BSD для POSIX.
Ранние выпуски BSD содержали лицензионный код UNIX, требуя таким образом от получателей наличия лицензии исходного кода AT&T для получения и использования BSD. В 1988 г. Беркли разделил свой дистрибутив на лицензированный AT&T и на свободно распространяемый код. Свободно распространяемый код был лицензирован отдельно и мог быть получен, использован и распространен дальше любым желающим. Финальный свободно распространяемый выпуск 4.4BSD-Lite2 из Беркли 1994 г. содержал почти полное ядро и все важные библиотеки и утилиты.
В 1993 г. возникли две группы, NetBSD и FreeBSD, начавшие поддерживать и распространять системы, построенные из свободно распространяемых выпусков, сделанных Беркли. Группа NetBSD придавала особое значение переносимости и минималистскому подходу, перенеся системы на более чем 40 платформ и продолжая сохранять систему небольшой, чтобы поддерживать встроенные приложения. Группа FreeBSD делала упор на максимальную поддержку архитектуры PC и нацеливала систему на простоту установки и распространение среди как можно более широкой аудитории. В 1995 г. от группы NetBSD отделилась группа OpenBSD для разработки дистрибутива с упором на безопасность. В течение ряда лет было здоровое соперничество среди дистрибутивов BSD, причем они обменивались множеством идей и кодом.
FreeBSD широко используется для поддержки ядра инфраструктуры многих компаний по всему миру. Поскольку она может быть построена с использованием небольшого дискового пространства, она находит также возрастающее применение во встроенных приложениях. Условия лицензирования FreeBSD не требуют распространения изменений и улучшений системы. Условия лицензирования Linux требуют, чтобы все изменения и улучшения ядра были сделаны доступными в виде исходного кода за минимальную плату. Таким образом, компании, которым нужно контролировать распространение своей интеллектуальной собственности, строят свои продукты с использованием FreeBSD.
Все дистрибутивы BSD доступны либо для загрузки по сети, либо на сменных носителях, таких, как CD-ROM или DVD. Информацию о получении исходного кода и двоичных файлов для FreeBSD можно получить на сайте http://www.FreeBSD.org. Дистрибутив NetBSD откомпилирован и готов к запуску на большинстве архитектур рабочих станций. За дополнительными сведениями обратитесь по адресу http://www.NetBSD.org/. Дистрибутив OpenBSD откомпилирован и готов к запуску на широком ряде архитектур рабочих станций и был тщательно проверен на предмет безопасности и надежности. За дополнительной информацией обращайтесь на веб-сайт проекта OpenBSD http://www.OpenBSD.org/.
Большинство действий, связанных с доставкой сигнала потоку, выполняется в контексте этого потока. Поток проверяет свое поле td_siglist на предмет наличия ожидающих сигналов по крайней мере один раз при входе в систему, вызывая cursigQ.
SLEEPING - Поток заблокирован в ожидании события. Если поток находится в состоянии непрерываемого сна, больше ничего не должно предприниматься. В противном случае ядро может предпринять действие - либо непосредственно, либо косвенно, - пробудив поток. Есть два действия, которые можно применить непосредственно. Для сигналов, вызывающих остановку процесса, все потоки в процессе помещаются в состояние STOPPED и родительский процесс уведомляется об изменении состояния посредством отправки ему сигнала SIGCHLD.
Реализация сигналов разделена на две части, первая из которых - отправка сигнала процессу, а вторая - распознавание сигнала и доставка его потоку назначения. Сигналы может отправлять любой процесс или код, который выполняется на уровне прерывания. Доставка сигнала обычно имеет место в контексте получающего потока. Но когда сигнал форсирует остановку процесса, действие может быть проведено для всех потоков, связанных с этим процессом в тот момент, когда сигнал был отправлен.
Сигналы первоначально были спроектированы для моделирования исключительных событий, таких, как попытка пользователя завершить вышедшую из-под контроля программу. Они не предназначались для использования в качестве общего механизма межпроцессного взаимодействия, поэтому не было сделано попытки сделать их надежными. В более ранних системах каждый раз при перехвате сигнала восстанавливалось его действие по умолчанию.
Описание сигналов указывается для каждого процесса. Если процесс не указал действие на сигнал, ему предоставляется действие по умолчанию которое может быть одним из следующих: