4.2BSD
4.2BSD — это версия операционной системы Berkeley Software Distribution (BSD), разработанная в Калифорнийском университете в Беркли и выпущенная в августе 1983 года. Она стала одной из наиболее значимых и влиятельных версий BSD, заложившей основы для многих современных Unix-подобных систем, включая последующие версии BSD, а также оказавшей прямое влияние на коммерческие реализации Unix, такие как SunOS и Ultrix.
История
Предпосылки и разработка
Разработка 4.2BSD началась в 1980 году как проект по расширению возможностей 4.1BSD, которая, в свою очередь, была ответом на проблемы производительности 4.0BSD. Основной целью 4.2BSD было создание операционной системы, способной эффективно работать в сетевой среде, поддерживать большие объёмы данных и обеспечивать высокую производительность для научных и инженерных приложений. Ключевым заказчиком и спонсором проекта выступило Агентство перспективных исследовательских проектов Министерства обороны США (DARPA), которое нуждалось в надёжной и масштабируемой Unix-системе для своих исследовательских сетей, в частности ARPANET.
Разработка велась под руководством Билла Джоя и других сотрудников Computer Systems Research Group (CSRG) в Беркли. В процессе работы над 4.2BSD были внесены значительные изменения в ядро, систему управления памятью, файловую систему и сетевой стек. В 1982 году вышла промежуточная версия 4.1aBSD, которая включала первые реализации новой файловой системы и сетевых протоколов. Затем последовали 4.1bBSD и 4.1cBSD, в которых проводились тестирование и доработка.
Релиз и распространение
Официальный выпуск 4.2BSD состоялся в августе 1983 года. Система распространялась по лицензии, которая позволяла использовать её в академических и исследовательских целях, а также в коммерческих продуктах при условии указания авторства. Это способствовало её широкому распространению в университетах, исследовательских лабораториях и компаниях. 4.2BSD стала одной из первых Unix-систем, которая была портирована на архитектуру VAX от Digital Equipment Corporation, что обеспечило ей доступ к мощному и популярному аппаратному обеспечению того времени.
Основные нововведения и особенности
Файловая система Fast File System (FFS)
Одним из наиболее значительных нововведений 4.2BSD стала файловая система Fast File System (FFS), разработанная Маршаллом Кирком МакКузиком и другими. FFS была призвана решить проблемы производительности и надёжности оригинальной файловой системы Unix (UFS), которая была разработана для небольших дисков и неэффективно работала с большими объёмами данных.
Основные особенности FFS:
- Группировка цилиндров: Диск разбивался на группы цилиндров, каждая из которых содержала собственную суперблок, карту блоков и inode. Это позволяло минимизировать перемещение головок жёсткого диска при чтении и записи данных, увеличивая производительность.
- Оптимизация размещения данных: FFS стремилась размещать файлы и их метаданные (inode) в одной группе цилиндров, а также обеспечивала последовательное размещение блоков одного файла, что ускоряло последовательное чтение.
- Поддержка длинных имён файлов: В отличие от предыдущих версий Unix, где имена файлов были ограничены 14 символами, FFS поддерживала имена длиной до 255 символов.
- Улучшенная надёжность: FFS включала механизмы для восстановления после сбоев, такие как проверка целостности суперблока и использование журнала (хотя полноценное журналирование появилось позже).
FFS стала стандартом для многих Unix-систем на протяжении десятилетий и оказала влияние на разработку файловых систем в других операционных системах, включая ext2/ext3 в Linux.
Сетевой стек и протоколы
4.2BSD стала первой версией BSD, которая включала полноценную реализацию стека протоколов TCP/IP. Это было сделано в рамках контракта с DARPA для поддержки ARPANET. Реализация включала:
- Протоколы TCP и IP: Базовая передача данных с установлением соединения (TCP) и без установления соединения (UDP).
- Сокеты (Sockets): Абстракция для сетевого взаимодействия, которая позволяла программам работать с сетевыми соединениями так же, как с файлами. Сокеты стали стандартным интерфейсом для сетевого программирования в Unix.
- Поддержка ARPANET: Включение протоколов, необходимых для работы в ARPANET, включая Telnet, FTP и SMTP.
Сетевой стек 4.2BSD стал основой для развития интернета. Он был портирован на множество других платформ и лёг в основу сетевых реализаций в коммерческих Unix-системах, а также в Linux и Windows.
Управление памятью и виртуальная память
4.2BSD включала улучшенную систему управления памятью, основанную на страничной организации. Она поддерживала:
- Виртуальную память: Процессы могли использовать адресное пространство, превышающее физическую память, за счёт подкачки страниц на диск.
- Разделение памяти: Поддержка совместного использования памяти между процессами (shared memory) и отображения файлов в память (memory-mapped files).
- Динамическое распределение памяти: Ядро могло выделять и освобождать память для процессов и системных структур по мере необходимости.
Эти возможности позволили запускать на 4.2BSD более крупные и сложные приложения, а также улучшили многозадачность.
Другие улучшения
- Поддержка сигналов: Расширенная модель сигналов, позволяющая процессам обрабатывать асинхронные события.
- Утилиты и библиотеки: Включение новых утилит, таких как
vi(текстовый редактор, разработанный Биллом Джоем),csh(C shell),make(система сборки),diff(сравнение файлов),grep(поиск текста) и многих других. - Документация: 4.2BSD поставлялась с обширной документацией, включая справочные руководства (man pages) и руководства по системному администрированию.
Влияние и наследие
Влияние на коммерческие Unix-системы
4.2BSD оказала огромное влияние на коммерческие Unix-системы. Многие компании, такие как Sun Microsystems (SunOS), Digital Equipment Corporation (Ultrix), Hewlett-Packard (HP-UX) и IBM (AIX), лицензировали код 4.2BSD и использовали его в своих продуктах. В частности, SunOS, выпущенная в 1983 году, была основана на 4.2BSD и стала одной из самых популярных рабочих станций Unix.
Влияние на последующие версии BSD
4.2BSD стала основой для последующих версий BSD, включая 4.3BSD (1986), 4.4BSD (1993) и, в конечном счёте, для современных BSD-систем, таких как FreeBSD, NetBSD и OpenBSD. Многие из её нововведений, такие как FFS и сокеты, остаются ключевыми компонентами этих систем.
Влияние на Linux и другие системы
Хотя Linux не является прямой производной от BSD, многие концепции и реализации, разработанные в 4.2BSD, были заимствованы и адаптированы в Linux. Например, файловая система ext2 была основана на принципах FFS, а сетевой стек Linux был вдохновлён BSD-сокетами.
Влияние на развитие интернета
Реализация TCP/IP в 4.2BSD стала стандартом де-факто для сетевого взаимодействия. Она обеспечила надёжную и эффективную основу для ARPANET и, впоследствии, для интернета. Многие протоколы и утилиты, разработанные для 4.2BSD, такие как Telnet, FTP и SMTP, стали основой для современных интернет-протоколов.
Критика и ограничения
Несмотря на свои достижения, 4.2BSD не была лишена недостатков. Основные критики касались:
- Сложность: Система была значительно сложнее предыдущих версий Unix, что требовало от системных администраторов и разработчиков более глубоких знаний.
- Производительность: Хотя FFS была значительным улучшением, она всё ещё могла быть неэффективной на некоторых типах дисков и при определённых нагрузках.
- Совместимость: 4.2BSD не была полностью совместима с AT&T System V Unix, что приводило к проблемам с переносимостью программного обеспечения.
- Лицензирование: Исходный код 4.2BSD содержал код AT&T, что ограничивало его распространение и использование в коммерческих продуктах без лицензирования.
Источники
- McKusick, M. K., Joy, W. N., Leffler, S. J., & Fabry, R. S. (1984). A Fast File System for UNIX. ACM Transactions on Computer Systems, 2(3), 181–197.
- Quarterman, J. S., & Hoskins, J. (1985). Notable Computer Networks. Communications of the ACM, 28(10), 1014–1029.
- Salus, P. H. (1994). A Quarter Century of UNIX. Addison-Wesley.
- McKusick, M. K., & Neville-Neil, G. V. (2005). The Design and Implementation of the FreeBSD Operating System. Addison-Wesley.
- Leffler, S. J., McKusick, M. K., Karels, M. J., & Quarterman, J. S. (1989). The Design and Implementation of the 4.3BSD UNIX Operating System. Addison-Wesley.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →