В мире свободных программ не принято назначать сроки выхода - программа выпускается тогда, когда она считается готовой. Такая политика увеличивает стабильность программ и предохраняет от выпуска сырых продуктов, но иногда непредсказуемо задерживает выпуск долгожданных новых версий. Текущей стабильной серии ядер Linux пользователям пришлось ждать два с половиной года, а с графической средой GNOME и вовсе вышло некрасиво - перевод фирмой Troll Tech на свободную лицензию библиотеки Qt, лежащей в основе соперничающей системы KDE, и нетерпеливость Red Hat, контролирующей многих ключевых разработчиков "Гнома", заставили эту компанию, всегда отличавшуюся пренебрежительным отношением к стабильности и безопасности, форсировать преждевременный выпуск GNOME 1.0.
Во избежание подобных проблем с новой версией ядра Линус с самого начала разработки Linux 2.3 (для тех, кто еще не в курсе: нечетный второй номер означает, что это нестабильная рабочая версия, которая со временем превратится в 2.4) заявил, что ставит своей целью ускорить темп выпуска новых стабильных ядер, и потому Linux 2.4 будет включать меньшее число новшеств, но зато выйдет уже в этом году. И вот, в своем последнем интервью на UK Linux, Expo Алан Кокс, второй ведущий разработчик ядра после Линуса, заявил, что новая версия может выйти в ноябре-декабре.
Ядра - чистый изумруд
Что же нас ждет? Скорый выпуск еще не означает, что в Linux 2.4 нет ничего интересного. Коренные изменения начинаются с самого сердца ядра - переписанная начисто система распределения ресурсов теперь обеспечивает более общее иерархическое описание групп ресурсов, устраняет многие ограничения прошлых версий на выделение прерываний и портов ввода-вывода и позволяет на уровне ядра поддерживать платы ISA plug-and-play (до сих пор приходилось пользоваться внешней программой isapnp).
Еще один ключевой компонент ядра - слой виртуальной файловой системы (VFS). Здесь изменениям подверглась порядком оптимизированная еще в Linux 2.2 система кэширования. В Linux 2.4 буферы чтения и записи объединены в один общий слой кэширования, что снимает проблему синхронизации буферов и позволяет сократить расход памяти почти вдвое. Кроме того, здесь, как и в других местах, влияющих на масштабируемость системы, был подчищен старый код, сняты многие конфликты по ресурсам и использованы точечные блокировки (fine-grained locks), улучшающие реентерабельность модулей ядра.
Также следует отметить увеличение максимального поддерживаемого объема оперативной памяти до 4 Гб и снятие ограничения на максимальное число процессов. В 2.2 и ниже существует жесткий предел - 1024 процессов или потоков; теперь же этот потолок можно будет поменять во время работы, и ограничен он только объемом ОЗУ, да и то не сильно. В целом же требования Linux 2.4 к памяти останутся прежними, а то и уменьшатся благодаря всем этим оптимизациям.
Эльфы, гномы и прочие тролли
Linux 2.2 был первой версией ядра, компилируемой только в формате ELF (Executable and Linking Format - продвинутый формат исполняемых файлов для Unix, поддерживающий множество разделов кода и данных и упрощающий подключение и динамическую загрузку разделяемых библиотек). В нем же появилась возможность посредством выполняемого формата "misc" указывать внешние загрузчики и запускать, к примеру, файлы Windows, DOS и Java при помощи Wine, dosemu и Java-интерпретатора соответственно. В новой версии эта система полностью вытеснила старый экспериментальный загрузчик Java (сделавший Linux первой операционной системой, поддерживающей Java на уровне ядра), а дальнейшая интеграция в ELF увеличила модульность ядра 2.4 и упростила подключение драйверов.
Как говорят, увеличилась совместимость ядра. С чем? А ни с чем, просто совместимость. В частности, появились часы и таймеры POSIX, возможность использования дополнительных устройств в качестве часов, добавилась поддержка ряда возможностей новой версии сетевой файловой системы NFS 3 (не путать с одноименным автосимулятором). Из новых аппаратных платформ добавилась поддержка процессора Hitachi SuperH, используемого в игровых приставках и встроенных системах. Улучшилась и поддержка Intel-совместимых процессоров - в то время как в Linux 2.2 впервые использовались регистры MTRR (Memory Type Range Registers), значительно ускоряющие операции обмена с памятью, в 2.4 добавилась поддержка двойных MTRR в AMD K7 "Athlon" и MCR в процессорах Cyrix. Надо сказать, что это весьма немаловажная вещь - у меня, например, после задействования MTRR на K6-2 отрисовка окон в XFree86 ускорилась почти на порядок.
Подает надежды и 64-битный Linux на Merced. В то время как этот процессор еще не вышел, работа над переносом ведется при непосредственной поддержке самой Intel. Основные проблемы, связанные с переходом на 64-битные вычисления, были решены еще во время переноса на Alpha и Sparc64, хотя и нельзя сказать, что Linux ведет себя идеально на 64-битных системах. Ведется работа и над GNU-компилятором, оптимизирующим под весьма специфичную архитектуру IA-64.
Ввод-вывод
Как я уже говорил, в Linux 2.4 наконец появилась поддержка ISA PnP - еще немного, и шина ISA так и сошла бы со сцены, не удостоившись такой чести от свободной операционной системы. Есть и более актуальные прорывы - в ядро включена поддержка USB, I2O и PCMCIA. Обо всех по порядку.
Universal Serial Bus - новая последовательная шина, которая со временем должна полностью вытеснить из ПК старые добрые COM-порты. На сей момент Linux вполне сносно поддерживает клавиатуры и мыши USB, скоро ожидается поддержка аудиосистем, подключаемых к USB, нет пока драйверов для модемов и сетевых адаптеров.
I2O (Intelligent Input-Output) - расширение шины PCI, позволяющее создавать независимые от операционной системы драйверы. Шина PCMCIA (она же PC Card) уже давно поддерживалась, без этого использовать Linux на ноутбуках было бы невозможно, но теперь нет необходимости подключать внешние модули от сторонних производителей, так как PCMCIA поддерживается самим ядром 2.4.
Случилось несколько прорывов и на фронте дисковых контроллеров - Linux 2.4 поддерживает до 10 IDE-контроллеров, увеличилось число чипсетов, в которых поддерживается UDMA, улучшилась поддержка DVD и перезаписываемых CD (сейчас последние рассматриваются как устройства только для чтения, которые можно записывать только целиком с образа, созданного на винчестере).
Еще одна новая возможность позаимствована из коммерческих Unix-систем: устройства ввода-вывода с прямым доступом (raw I/O). Возможность прямого доступа - без буферизации и прочих прибабахов, обеспечиваемых операционной системой - востребуется там, где необходимо обеспечивать стопроцентную синхронизацию данных с накопителем, или в мощных СУБД класс Oracle, которая предпочитает сама организовывать свои данные на диске.
Файловые системы
В связи с переходом на новую систему кэширования (см. выше) реализации многих файловых систем были переработаны и стали быстрее. С другой стороны, файловые системы, поддерживавшиеся безысходными (двоичными) модулями, работать перестали - в отличие от Windows, Linux никому не гарантирует обратной совместимости, поскольку свободные программы обычно поспевают за развитием системы, а до остальных вольным разработчикам дела нет - или работайте над собой, или открывайте исходный код.
Фанаты OS/2 порадуются возможности монтировать разделы HPFS как для чтения, так и для записи, в то время как пользователям Windows NT придется еще подождать - их NTFS пока можно только читать, драйвер для записи по-прежнему находится в "экспериментальном" состоянии и не гарантирует целостности данных. С другой стороны, диски Windows, разделяемые посредством SMB (Server Message Block, он же Netbios), теперь поддерживаются лучше - Linux сама определяет, какая ОС используется на том конце, и автоматически задействует заплатку, обходящую некорректную реализацию Netbios в Windows 9x.
Сеть
Реализация сетевых функций Linux подверглась в новой версии значительной переработке с прицелом на максимальную параллелизацию стека протоколов и оптимизацию взаимодействия с машинами под другими операционными системами. Помимо этого, добавилась поддержка протоколов DECNet и был перестроен модуль PPP (объединились драйверы PPP для ISDN и обычных последовательных устройств, таких как модемы).
Знаменитый тест Windows NT против Linux, проводившийся Mindcraft и PC Week Labs на Intel-серверах высшего уровня, позволил определить узкие места в производительности Linux как файлового и Web-сервера. Одним из таких мест была вышеупомянутая проблема со стеком Netbios, из-за которой Samba работала с клиентами Win9x медленнее, чем с клиентами NT.
Вторая проблема - так называемый "эффект лавины", обнаруженный при использовании Apache под Linux на сильно загруженном сервере. Когда несколько экземпляров "Апача" находятся в ожидании прихода пакета на порт 80 (запроса HTTP), по прибытии оного все они просыпаются, после чего один процесс обслуживает запрос, а остальные засыпают обратно. Обычно все это происходит очень быстро, но при предельных нагрузках задержка становится заметной. В Linux 2.4 стек TCP/IP был расширен таким образом, чтобы процесс мог указывать, что по прибытии пакета на данный порт должен просыпаться только один экземпляр программы.
По материалам
"Wonderful World Of Linux 2.4"
подготовил Дмитрий БОРОДАЕНКО
Горячие темы