Тихий пингвиненок 2.4.0
Архив
- Вот тебе твое счастье, - сказал бог и протянул человеку нетронутый кусок глины. - Да, да, в этом и есть счастье - в куске глины, из которого что хочешь можно вылепить!
Человек взял глину, повертел в руках.
- Да-а… - сказал он. - Это ты ловко придумал…
Феликс Кривин
4 января 2001 года без восторженных криков и фейерверков, скромно и незаметно, даже как-то обыденно, миру было явлено новое ядро Linux 2.4.0.
Было даже забавно - буквально накануне появились статьи со злорадным вопросом «Ну так где же?». Ведь обещано новое ядро было еще в прошлом тысячелетии. Тут, как мне кажется, блестяще проявилась философия свободного программного обеспечения: продукт появляется тогда, когда он готов (стабилен и отлажен), а сроки - дело десятое. (Хотя закралось подозрение, что пауза была выдержана сознательно, - ну не верю я, что кто-то в новогоднюю ночь отлаживал ядро.)
Линус Торвальдс прокомментировал событие так: «Я решил, что хватит, - что-то код перестал становиться лучше оттого, что одни и те же люди тестируют его снова и снова». В этой фразе заложена доля «коварства» - как правило, увеличение второй (или, что то же самое, обнуление третьей) цифры версии ядра привлекает к тестированию гораздо большее, чем обычно, число людей. Ведь разработка ядра Linux - процесс непрерывный, и многие возможности были уже доступны в «промежуточных» релизах достаточно давно. То есть релиз 2.4.0 - не повод для почивания на лаврах, а скорее подведение черты под некоторым этапом, заявление, что те составляющие, которые уже были доступными, стали стабильными. А процесс разработки не замедлился - следующее обновление ядра появилось буквально через пару дней.
Ядро - еще не вся операционная система. Ведь изменение второй цифры - это обычно хороший повод существенно поменять некоторые аспекты системы, ее API и т. п. И хотя принципиальных трудностей не предвидится, утряска и согласование ядра с другими составляющими операционной системы наверняка потребует существенных усилий и хорошо, если только десятка инкрементов третьей цифры. После появления 2.4.0 жизнь для предыдущего «большого» релиза тоже не заканчивается: 11 декабря 2000 года вышел релиз 2.2.18, и идет работа над 2.2.19. Так что «старое доброе» ядро 2.2, на котором еще какое-то время придется работать, тоже не будет стоять на месте и вберет в себя некоторые возможности 2.4. Более того, не далее как 9 января текущего года было объявлено о релизе 2.0.39. Раз релизы появляются, значит это кому-нибудь нужно!
И наверняка пройдет некоторое время (может быть, несколько месяцев) до появления новых дистрибутивов (а они обязательно посыплются, как из рога изобилия). Но о том, какими они будут, эти новые дистрибутивы, кое-что можно сказать уже сейчас. И выход Linux 2.4.0 - хороший повод для этого.
Самая сердцевина
Ядро Linux, это набор модульных компонентов и подсистем - драйверов устройств, протоколов и т. п. И все это крутится вокруг сердцевины ядра - планировщика задач, менеджера памяти, виртуальной файловой системы и системы управления ресурсами.
Многие части ядра в Linux 2.4.0 существенно переупорядочены и переписаны - код стал более модульным, более простым в модификации и проще в настройке. Пользователи это не сразу заметят, но в целом ОС станет производительнее и надежнее. Следует подчеркнуть, что многие части могут быть как встроены в ядро, так и скомпилированы как подгружаемые модули.
В Linux 2.4 наконец-то появилась полноценная подсистема управления ресурсами, поддерживающая динамическую конфигурацию. Интегрирована в ядро и стала более надежной работа с ISA PnP (правда, эта технология уже сходит со сцены), I2O (Intelligent Input/Output), PCMCIA (ранее требовались дополнительные, не входящие в состав ядра драйверы), USB, Firewire (IEE1394).
Переписаны все драйверы блочных устройств, произошло разделение на уровне ядра API блоков и API файлов. Это потребует переписывания кода сторонними производителями модулей (драйверов).
Для интерфейса IDE существенным является увеличение числа поддерживаемых контроллеров с 4 до 10 (что принципиально лишь для «дорогих» систем, обычно их всего два). Обновлены драйверы, стало поддерживаться больше устройств и чипсетов.
Важные изменения готовит DevFS (Device FileSystem) - использовать ее необязательно, но если это сделать, то изменятся все имена устройств. Список имен устройств не статический, устройства регистрируются драйверами по мере необходимости на лету. Имена устройств, вместо того чтобы всем находиться в /dev, будут распределены по его подкаталогам. Это дает больше возможностей для именования и облегчает использование интерфейсов с динамическим подключением устройств (например, USB, PCMCIA и т. п.).
Претерпела изменения виртуальная файловая система (VFS). Кэширование теперь основано на более простой системе с одним буфером, что снимает многие проблемы и упрощает код системы в целом. Кроме того, теперь файловую систему можно примонтировать в нескольких точках сразу и даже сделать так, что в каталоге окажутся файлы из разных файловых систем.
Важное добавление к множеству уже поддерживаемых файловых систем - поддержка UDF, использующейся на DVD-дисках.
Полностью переписан сетевой слой. То, что касается брандмауэров и маскарадинга, претерпело значительные изменения: все разбито на две подсистемы - фильтрации пакетов и трансляции сетевых адресов (NAT).
Из «плохих» новостей: полноценной поддержки WinModem в ядре так и не появилось.
Платформы
На заре своей истории Linux писалась для процессора Intel i386 и какое-то время считалась операционной системой для PC. Теперь же различных поддерживаемых платформ целый пучок: от наладонников и тому подобных встроенных систем, с одной стороны, и до мэйнфреймов и многопроцессорных суперкопьютеров - с другой. К списку поддерживаемых платформ добавились теперь SuperH (на этом процессоре работает WindowsCE), Intel IA-64 (Itanium) и мэйнфреймы IBM S/390 (надо сказать, что 2.2.18 тоже ее поддерживает).
Тут важно подчеркнуть «плавную» масштабируемость Linux. Проприетарные Unix работают на многих платформах, но они настолько разошлись, что фактически перестали быть единой операционной системой. Есть множество специализированных ОС для встроенных систем для многих платформ, но их масштабируемость существенно ограничена, а возможности, как правило, гораздо слабее, чем у Linux.
Поэтому неспроста IBM последнее время уделяет так много внимания Linux и даже рассматривает ее как стратегическую для себя платформу - она позволяет компании связать в единую линию весь многочисленный и разнообразный выводок своих аппаратных платформ (вплоть до мэйнфреймов).
И IBM не одинока - за последние два года к лагерю Linux примкнули Intel, Motorola, AMD, Hitachi, Toshiba, National Semiconductor, STMicroelectronics, Cirrus Logic. Прелесть Linux для производителей процессоров понятна: не нужны лицензионные отчисления, и операционную систему для своего процессора можно просто раздавать вместе с процессором. Ориентация же на проприетарную операционную систему более рискованна (в разных смыслах).
…и много-много процессоров
Очень много изменений в Linux 2.4 направлено на усиление масштабирумости вверх, в сторону мощных серверов и многопроцессорных систем.
Теперь Linux 2.4 поддерживает до 64 гигабайт оперативной памяти, до 16 сетевых контроллеров Ethernet и работает с файлами терабайтных размеров (преодолен двухгигабайтный барьер). Число одновременно исполняемых процессов (ранее допускалось только 4090 процессов) ограничено только имеющейся памятью. Теперь Linux может справиться и с 4 миллиардами пользователей.
Интегрирован в ядро менеджер логических томов LVM (Logical Volume Manager) - средство гибкой конфигурации дисков, которое позволяет, например, получать тома, физически занимающие несколько дисков (обычно диски можно было примонтировать, но проблема оптимального использования их объема до сих пор оставалась). Это вклад в копилку Linux со стороны IBM.
Существенно улучшена поддержка многопроцессорных систем. Версия 2.2 ядра Linux нормально работала с четырьмя процессорами, тогда как ряд систем могли нести на борту 8 или 16 процессоров. Теперь ядро 2.4 способно управляться с шестнадцатью и даже больше процессорами без больших затрат на их координацию.
Практически заново переписана и стала более быстродействующей и надежной поддержка устройств RAID (дисков, работающих вместе для увеличения производительности или надежности).
Совершенно новое свойство - поддержка так называемых raw I/O devices (устройства, не использующие встроенное в операционную систему кэширование, что повышает живучесть систем, например баз данных, при сбоях).
Хотя поддержка журналирующих файловых систем (обеспечивающих высокую надежность и восстанавливаемость при сбоях) и не введена в ядро, тем не менее одна из них, ReiserFS, вполне для этого готова и ее интеграцию можно ожидать в самое ближайшее время - препатч Linux 2.4.1-pre7 ее уже включает. Другим вариантом может стать Ext3 (хотя можно вспомнить и о тоже журналирующих XFS от SGI, JFS от IBM).
Как маленькое, но полезное дополнение стоит упомянуть встроенный в ядро HTTP сервер khttpd, облегчающий создание Web-серверов с высокой готовностью (это не замена Apache, поскольку поддерживаются только статические страницы, без CGI или PHP).
Для самых маленьких
Вообще-то, девяносто процентов процессоров используеются в так называемых встроенных (embedded) системах. Поэтому неудивительно, что значительные усилия в сообществе Linux прикладываются в этой сфере.
Здесь существенно, что ядро можно перекомпилировать, выбрав лишь действительно необходимые возможности, чтобы достичь компромисса между ценой устройства и этими возможностями. Неудивительно, что появляется множество устройств (наладонники, сотовые телефоны и даже наручные часы) с Linux внутри.
В этой части новые возможности Linux 2.4 в основном связаны с поддержкой Memory Technology Devices, обеспечивающей работу с ПЗУ и Flash-памятью и позволяющей взаимодействовать с ними, как с обычными дисками.
Кратко достижения 2.4.0 можно сформулировать так: лучшая масштабируемость как вверх, так и вниз. Улучшенный ввод-вывод и сетевые возможности. Большие возможности в симметричной многопроцессорности. Совместимость с мэйнфреймами IBM и поддержка Intel Itanium.
Революции, конечно, не произошло. Но изменения действительно впечатляют.
P. S. Зато мы можем гордиться, что когда-то Финляндия входила в состав Российской империи…
[i37946]