Berkeley Software Distribution или Berkeley Standard Distribution [1] ( BSD ) — это устаревшая операционная система на основе Research Unix , разработанная и распространяемая Computer Systems Research Group (CSRG) в Калифорнийском университете в Беркли . Поскольку оригинал устарел, термин «BSD» обычно используется для его потомков с открытым исходным кодом, включая FreeBSD , OpenBSD , NetBSD и DragonFly BSD .
BSD изначально называлась Berkeley Unix , поскольку была основана на исходном коде оригинальной Unix, разработанной в Bell Labs . В 1980-х годах BSD была широко принята поставщиками рабочих станций в виде проприетарных вариантов Unix, таких как DEC Ultrix и Sun Microsystems SunOS, благодаря ее разрешительному лицензированию и знакомству со многими основателями и инженерами технологических компаний. Эти проприетарные производные BSD были в значительной степени вытеснены в 1990-х годах UNIX SVR4 и OSF/1 .
Более поздние выпуски BSD стали основой для нескольких операционных систем с открытым исходным кодом , включая FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Darwin и TrueOS . Они, в свою очередь, использовались проприетарными операционными системами, включая macOS и iOS от Apple , которые произошли от них [2] и Microsoft Windows (по крайней мере с 2000 года и XP ), которая использовала (по крайней мере) часть своего кода TCP/IP, что было законно. [3] [ нужен лучший источник ] Код из FreeBSD также использовался для создания операционных систем для PlayStation 5 , [4] PlayStation 4 , [5] PlayStation 3 , [6] PlayStation Vita , [7] и Nintendo Switch . [8] [9]
Самые ранние дистрибутивы Unix от Bell Labs в 1970-х годах включали исходный код операционной системы, что позволяло исследователям в университетах модифицировать и расширять Unix. Операционная система прибыла в Беркли в 1974 году по просьбе профессора компьютерных наук Боба Фабри , который был в программном комитете Симпозиума по принципам операционных систем , где Unix был впервые представлен. Для запуска системы была куплена PDP-11/45 , но по бюджетным причинам эта машина использовалась совместно с группами математики и статистики в Беркли, которые использовали RSTS , так что Unix работала на этой машине только восемь часов в день (иногда днем, иногда ночью). Более крупная PDP-11/70 была установлена в Беркли в следующем году на деньги из проекта базы данных Ingres . [10]
BSD начиналась как вариант Unix, который программисты Калифорнийского университета в Беркли, изначально возглавляемые Биллом Джоем , начали разрабатывать в конце 1970-х годов. Он включал дополнительные функции, которые были переплетены с кодом, принадлежащим AT&T.
В 1975 году Кен Томпсон взял академический отпуск в Bell Labs и приехал в Беркли в качестве приглашенного профессора. Он помог установить версию 6 Unix и начал работать над реализацией Pascal для этой системы. Аспиранты Чак Хейли и Билл Джой улучшили Pascal Томпсона и реализовали улучшенный текстовый редактор, например . [10] Другие университеты заинтересовались программным обеспечением в Беркли, и поэтому в 1977 году Джой начал компилировать первый Berkeley Software Distribution (1BSD), который был выпущен 9 марта 1978 года. [11] 1BSD была дополнением к версии 6 Unix, а не полноценной операционной системой. Было разослано около тридцати копий. [10]
Второй дистрибутив программного обеспечения Berkeley (2BSD), выпущенный в мае 1979 года, [12] включал обновленные версии программного обеспечения 1BSD, а также две новые программы Джоя, которые существуют в системах Unix по сей день: текстовый редактор vi ( визуальная версия ex ) и оболочка C. Билл Джой разослал около 75 копий 2BSD. [10]
В 1978 году в Беркли был установлен компьютер VAX, но порт Unix на архитектуру VAX, UNIX/32V , не использовал возможности виртуальной памяти VAX . Ядро 32V было в значительной степени переписано, чтобы включить реализацию виртуальной памяти аспиранта Беркли Озалпа Бабаоглу , и полная операционная система, включающая новое ядро, порты утилит 2BSD на VAX и утилиты из 32V, была выпущена как 3BSD в конце 1979 года. 3BSD также альтернативно называлась Virtual VAX/UNIX или VMUNIX (для Virtual Memory Unix), а образы ядра BSD обычно назывались /vmunix
до 4.4BSD.
После выпуска 4.3BSD в июне 1986 года было решено, что BSD отойдет от устаревшей платформы VAX. Платформа Power 6/32 (кодовое название "Tahoe"), разработанная Computer Consoles Inc., казалась многообещающей в то время, но вскоре после этого была заброшена ее разработчиками. Тем не менее, порт 4.3BSD-Tahoe (июнь 1988 года) оказался ценным, поскольку привел к разделению машинно-зависимого и машинно-независимого кода в BSD, что улучшило будущую переносимость системы.
Помимо переносимости, CSRG работала над реализацией стека сетевых протоколов OSI , усовершенствованиями системы виртуальной памяти ядра и (совместно с Ван Якобсоном из LBL ) новыми алгоритмами TCP/IP для адаптации к росту Интернета. [13]
До этого все версии BSD использовали проприетарный код AT&T Unix и, следовательно, подпадали под лицензию программного обеспечения AT&T. Лицензии на исходный код стали очень дорогими, и несколько сторонних сторон выразили заинтересованность в отдельном выпуске сетевого кода, который был разработан полностью вне AT&T и не подпадал бы под требования лицензирования. Это привело к выпуску Networking Release 1 ( Net/1 ), который был доступен нелицензиатам кода AT&T и свободно распространялся в соответствии с условиями лицензии BSD . Он был выпущен в июне 1989 года.
После Net/1 разработчик BSD Кейт Бостик предложил, чтобы больше не-AT&T разделов системы BSD были выпущены под той же лицензией, что и Net/1. С этой целью он начал проект по повторной реализации большинства стандартных утилит Unix без использования кода AT&T. В течение восемнадцати месяцев все утилиты AT&T были заменены, и было установлено, что в ядре осталось только несколько файлов AT&T. Эти файлы были удалены, и результатом стал выпуск в июне 1991 года Networking Release 2 (Net/2), почти полной операционной системы, которая распространялась свободно.
Net/2 стала основой для двух отдельных портов BSD на архитектуру Intel 80386 : свободного 386BSD Уильяма и Линн Джолиц и фирменного BSD/386 (позже переименованного в BSD/OS) Berkeley Software Design (BSDi). Сам 386BSD просуществовал недолго, но стал исходной кодовой базой проектов NetBSD и FreeBSD , которые были начаты вскоре после этого.
BSDi вскоре оказалась в юридических проблемах с дочерней компанией AT&T Unix System Laboratories (USL), тогда владельцами авторских прав System V и торговой марки Unix. Иск USL против BSDi был подан в 1992 году и привел к запрету на распространение Net/2 до тех пор, пока не будет определена обоснованность претензий USL на авторские права на исходный код. Иск замедлил разработку свободного программного обеспечения-потомков BSD почти на два года, пока их правовой статус был под вопросом, и в результате системы на основе ядра Linux , не имевшие такой юридической двусмысленности, получили большую поддержку. Иск был урегулирован в январе 1994 года, в основном в пользу Беркли. Из 18 000 файлов в дистрибутиве Беркли только три пришлось удалить и 70 изменить, чтобы отобразить уведомления об авторских правах USL. Еще одним условием соглашения было то, что USL не будет подавать дальнейших исков против пользователей и распространителей кода, принадлежащего Беркли, в предстоящем выпуске 4.4BSD. [14]
Последним релизом из Беркли стал 4.4BSD-Lite Release 2 1995 года , после чего CSRG была распущена, а разработка BSD в Беркли прекратилась. С тех пор поддерживалось несколько вариантов, основанных прямо или косвенно на 4.4BSD-Lite (таких как FreeBSD , NetBSD , OpenBSD и DragonFly BSD ).
Разрешительная природа лицензии BSD позволила многим другим операционным системам, как с открытым исходным кодом , так и проприетарным, включать исходный код BSD. Например, Microsoft Windows использовала код BSD в своей реализации TCP/IP [15] и объединяет перекомпилированные версии сетевых инструментов командной строки BSD с Windows 2000. [ 16] Darwin , основа для macOS и iOS от Apple , основана на 4.4BSD-Lite2 и FreeBSD. Различные коммерческие операционные системы Unix, такие как Solaris , также включают код BSD.
Начиная с 8-го издания, версии Research Unix в Bell Labs имели тесную связь с BSD. Это началось, когда 4.1cBSD для VAX была использована в качестве основы для Research Unix 8-го издания. Это продолжалось в последующих версиях, таких как 9-е издание, которое включало исходный код и улучшения из 4.3BSD. Результатом стало то, что эти более поздние версии Research Unix были ближе к BSD, чем к System V. В сообщении Usenet от 2000 года Деннис Ритчи описал эту связь между BSD и Research Unix: [17] [ требуется лучший источник ]
Research Unix 8th Edition начинался с (я думаю) BSD 4.1c, но с огромным количеством выкопанного и замененного нашим собственным. Это продолжалось с 9-й и 10-й. Обычный набор команд пользователя был, я полагаю, немного более BSD-приправленным, чем SysVish, но он был довольно эклектичным.
Эрик С. Рэймонд подводит итог многолетним отношениям между System V и BSD, заявляя: «Разрыв был примерно между «длинношерстными» и «короткошерстными»; программисты и технические специалисты, как правило, присоединялись к Беркли и BSD, более ориентированные на бизнес типы — к AT&T и System V». [18]
В 1989 году Дэвид А. Карри писал о различиях между BSD и System V. Он охарактеризовал System V как часто рассматриваемую как «стандартный Unix». Однако он описал BSD как более популярную среди университетских и правительственных компьютерных центров из-за ее расширенных функций и производительности: [19]
Большинство университетских и государственных компьютерных центров, использующих UNIX, используют Berkeley UNIX, а не System V. Для этого есть несколько причин, но, пожалуй, две наиболее существенные из них заключаются в том, что Berkeley UNIX предоставляет сетевые возможности, которые до недавнего времени (версия 3.0) были полностью недоступны в System V, и что Berkeley UNIX гораздо больше подходит для исследовательской среды, которая требует более быстрой файловой системы, лучшей обработки виртуальной памяти и большего разнообразия языков программирования .
Unix Беркли был первым Unix, включавшим библиотеки, поддерживающие стеки интернет-протоколов : сокеты Беркли . Реализация предшественника IP в Unix, NCP ARPAnet , с клиентами FTP и Telnet , была создана в Университете Иллинойса в 1975 году и была доступна в Беркли. [20] [21] Однако нехватка памяти на PDP-11 привела к усложнению конструкции и проблемам с производительностью. [22]
Интеграция сокетов с файловыми дескрипторами операционной системы Unix позволила почти так же легко читать и записывать данные по сети , как и получать доступ к диску. Лаборатория AT&T в конечном итоге выпустила собственную библиотеку STREAMS , которая включала большую часть той же функциональности в программном стеке с другой архитектурой, но широкое распространение существующей библиотеки сокетов снизило влияние нового API . Ранние версии BSD использовались для формирования SunOS от Sun Microsystems , положив начало первой волне популярных рабочих станций Unix.
Некоторые операционные системы BSD могут запускать собственное программное обеспечение нескольких других операционных систем на той же архитектуре , используя уровень двоичной совместимости . Это намного проще и быстрее, чем эмуляция ; например, это позволяет приложениям, предназначенным для Linux , работать фактически на полной скорости. Это делает BSD подходящими не только для серверных сред, но и для рабочих станций, учитывая растущую доступность коммерческого или закрытого программного обеспечения только для Linux. Это также позволяет администраторам переносить устаревшие коммерческие приложения, которые могли поддерживать только коммерческие варианты Unix, на более современную операционную систему, сохраняя функциональность таких приложений до тех пор, пока их не заменит лучшая альтернатива.
Текущие варианты операционной системы BSD поддерживают многие из распространенных стандартов IEEE , ANSI , ISO и POSIX , сохраняя при этом большую часть традиционного поведения BSD. Как и AT&T Unix , ядро BSD является монолитным , что означает, что драйверы устройств в ядре работают в привилегированном режиме , как часть ядра операционной системы.
Несколько операционных систем основаны на BSD, включая FreeBSD , OpenBSD , NetBSD , MidnightBSD , MirOS BSD , GhostBSD , Darwin и DragonFly BSD . И NetBSD, и FreeBSD были созданы в 1993 году. Первоначально они были получены из 386BSD (также известной как «Jolix») и объединили исходный код 4.4BSD-Lite в 1994 году. OpenBSD была ответвлена от NetBSD в 1995 году, а DragonFly BSD была ответвлена от FreeBSD в 2003 году.
BSD также использовалась в качестве основы для нескольких фирменных версий Unix, таких как SunOS от Sun , DYNIX от Sequent , NeXTSTEP от NeXT , Ultrix от DEC и OSF/1 AXP (теперь Tru64 UNIX ). Позднее NeXTSTEP стала основой для macOS от Apple Inc.