Через революцию к эволюции Евгений «j1m» Зобнин Хакер, номер #095, стр. 095-110-1 (j1m@list.ru) Обзор ключевых технологий *nix Процесс разработки операционных систем считается одним из самых сложных и трудоемких в индустрии программного обеспечения. Когда в продукт вложено огромное количество денег и сил программистов, мало кто может позволить себе просто взять и выбросить код, а затем начать все сначала только потому, что операционная система не соответствует текущему положению дел. Однако в истории развития иногда случаются переломные моменты, например, когда один из компонентов отмирает, а ему на смену приходит другой, более совершенный. Как пингвин перестал быть игрушкой Первым таким переломным моментом был, конечно же, выпуск Linux версии 0.01 в 1991 году. Далее последовала целая череда «переломов»: стек сетевых протоколов, подсистема VFS, файловая система ext и множество других принципиальных и значительных изменений. Но все это - история, имеющая к современной реальности лишь косвенное отношение. Ее мы затрагивать не будем, а обратимся к тем ключевым разработкам Linux-сообщества, которые были актуальны на момент написания этой статьи. Ext2 и ext3 Первые версии ядра Linux использовали 16-битную файловую систему Minix. Ее максимальный размер составлял 64 Мб, а длина имени файла не могла превышать 14-ти символов. Эти ограничения были совершенно неприемлемы, поэтому спешно началась работа над файловой системой ext (extended - расширенная ФС). Новая ФС имела ограничение в 2 Гб и распознавала имена файлов длиной до 255 символов. Однако проблемы, связанные с неудовлетворительной расширяемостью и отсутствием поддержки дат модификации файлов, так и не были решены. Следующий этап эволюции - ext2, созданная с нуля. Вторая реинкарнация расширенной файловой системы могла иметь размер до 4-х Тб и позволяла выбирать размер блока. Благодаря продуманному дизайну ext2 можно было с легкостью усовершенствовать, и вскоре для нее появились реализации ACL и расширенных атрибутов файлов. Позднее драйвер ext2 оптимизировали, и она стала самой быстрой файловой системой для Linux. Новая ФС не имела серьезных проблем, но компанию Red Hat прельстила возможность ведения журнала. Так была создана ext3, которая не только стала наследницей ext2, но по сути повторяла ее, позволяя включить журналирование как опцию. Кроме того, была проведена работа по оптимизации структуры каталогов и добавлена возможность увеличения размера уже существующей файловой системы. При этом ext3 не только позволяла подключать себя как обычную ext2, но и могла быть преобразована из ext2 одной лишь командой, без необходимости в перезагрузке. Ext3 отличало и то, что она давала возможность использовать разные типы журналирования: от полного (в журнал помещаются данные и метаданные) до классического (журналируются только метаданные). Sysfs и udev Одной из самых интересных и полезных отличительных черт UNIX-подобных ОС является способ работы с оборудованием, который основывается на идее файлов устройств. Однако и здесь не обошлось без головной боли для разработчиков и рядовых пользователей. Сначала возникла проблема конфликтов номеров устройств. Ее решением занялась LANANA (www.lanana.org), и вроде бы все утряслось. Но вскоре выяснилось, что каталог /dev стал слишком загроможденным и пользователей это категорически не устраивает. Тогда была создана devfs - виртуальная файловая система, используя которую ядро получило возможность создавать элементы каталога /dev только для устройств, реально присутствующих в системе. И как будто опять все нормализовалось, но возникла новая проблема, которая заключалась в том, что 8-битных номеров устройств стало просто недостаточно. Так появилась идея создания udev. |