Ядру Linux почти 25 лет . Если бы мне пришлось придумать краткую версию истории развития ядра Linux с 1991 года (с момента его создания) и частично с 1994 года (1.0.0) до сегодняшнего дня, ну, я бы не смог. Лучшее, что я мог бы сделать, если бы не читал все примечания к выпуску ядра, - это предоставить следующие основные функции выпуска, добавленные в ядро до версии 3.11 (примечания и ссылки опущены):
- Версия 1.0 ядра Linux была выпущена 14 марта 1994 года. Этот выпуск ядра Linux поддерживал только однопроцессорные компьютерные системы на базе i386. Мобильность стала проблемой, и поэтому версия 1.2 (выпущенная 7 марта 1995 г.) получила поддержку компьютерных систем, использующих процессоры на основе архитектур Alpha, SPARC и MIPS.
- Версия 2.0 была выпущена 9 июня 1996 года. В серии было 41 релиз. Главной особенностью 2.0 была поддержка SMP (то есть поддержка нескольких процессоров в одной системе) и поддержка нескольких типов процессоров.
- Версия 2.2 (выпущена 26 января 1999 г.) убрала глобальную спин-блокировку и обеспечила улучшенную поддержку SMP, а также добавила поддержку архитектур m68k и PowerPC, а также новых файловых систем (включая поддержку только для чтения для NTFS от Microsoft).
- Версия 2.4.0 , выпущенная 4 января 2001 года, содержала поддержку карт ISA Plug and Play, USB и PC. В него также включена поддержка процессора PA-RISC от Hewlett-Packard. Разработка для 2.4.x немного изменилась, так как на протяжении всей серии было доступно больше функций, включая поддержку Bluetooth, Logical Volume Manager (LVM) версии 1, поддержку RAID, файловые системы InterMezzo и ext3.
- Версия 2.6.0 была выпущена 18 декабря 2003 года. Разработка для 2.6.x изменилась в сторону включения новых функций на протяжении всей серии. Среди изменений, которые были сделаны в серии 2.6: интеграция µClinux в основные источники ядра, поддержка PAE, поддержка нескольких новых линий процессоров, интеграция ALSA в основные источники ядра, поддержка до 2 32 пользователей ( от 2 16 ), поддержка до 2 29 идентификаторов процессов (только для 64-битных, 32-битные арки по-прежнему ограничены 2 15), существенно увеличено количество типов устройств и количество устройств каждого типа, улучшена поддержка 64-битных систем, поддержка файловых систем, поддерживающих размеры файлов до 16 терабайт, приоритетное вытеснение в ядре, поддержка библиотеки потоков Native POSIX (NPTL), интеграция Linux в пользовательском режиме с основными источниками ядра, интеграция SELinux с основными источниками ядра, поддержка InfiniBand и многое другое. Также следует отметить добавление нескольких файловых систем в версиях 2.6.x: FUSE, JFS, XFS, ext4 и другие. Подробную информацию об истории серии ядер 2.6 можно найти в файлах ChangeLog в области выпуска исходного кода серии 2.6 на kernel.org.
- Версия 3.0 была выпущена 22 июля 2011 года. Торвальдс объявил, что большое изменение было: «НИЧЕГО. Абсолютно ничего». 30 мая 2011 года Торвальдс объявил: «... давайте удостоверимся, что мы действительно сделаем следующий релиз не просто новым блестящим номером, но и хорошим ядром». После ожидаемого 6-7-недельного процесса разработки, он будет выпущен около 20-летия Linux.
- В декабре 2012 года Торвальдс решил уменьшить сложность ядра, отказавшись от поддержки процессоров i386, сделав ядро серии 3.7 последним, все еще поддерживавшим оригинальный процессор. В той же серии унифицирована поддержка процессора ARM.
- Версия 3.11 , выпущенная 2 сентября 2013 года, добавляет множество новых функций, таких как новый флаг O_TMPFILE для open (2) для уменьшения временных уязвимостей файлов, экспериментальное динамическое управление питанием AMD Radeon, сетевой опрос с малой задержкой и zswap (сжатый кэш подкачки).
Я мог бы также добавить , что в течение многих лет теперь Фонд Linux был отчеты о развитии ядра. Вот основные моменты развития ядра на 2012-2013 годы:
- Почти 92 000 наборов изменений были объединены с 3738 отдельными разработчиками, представляющими 536 корпораций (о которых мы знаем).
- Огромный набор важных новых функций был объединен с основной линией. Они включают в себя полную работу без галочек, пространства имен пользователей, виртуализацию KVM и Xen для ARM, отслеживание нагрузки для каждого объекта в планировщике, проверку / перезапуск пространства пользователя, поддержку 64-битной архитектуры ARM, файловую систему F2FS, ориентированную на флэш-память, многие сетевые улучшения, нацеленные на при задержках и проблемах с буферизацией - две независимые подсистемы, обеспечивающие быстрое кэширование для блочных устройств хранения и многое другое.
- Давняя ссора по поводу специфичных для Android функций ядра полностью отошла на второй план. Очень обсуждаемая функция «wakelocks» была тихо заменена другим решением магистрали, которое используется в последних устройствах Android.
- Использование автоматизированных инструментов для поиска ошибок в ядрах разработки значительно увеличилось за этот период. Такие инструменты, как fuzz-тестер «trinity» и система сборки-загрузки «нулевого дня», обнаруживают большое количество ошибок в ядрах, выпущенных до выпуска, сокращая цикл разработки и позволяя сообществу выпускать более качественные релизы.
- Вклад мобильной и встраиваемой промышленности продолжает расти. Например, Linaro, Samsung и TI вместе внесли 4,4% изменений в предыдущей версии этого документа; за период до 3.10 они внесли почти 11% всех изменений.
- Проект «Ядро» впервые принял участие в Программе по работе с женщинами, что привело к 41 заявке на 7 доступных вакансий. В процессе подачи заявки ядру было отправлено 374 патча, и более 1/3 из этих патчей были приняты в версии ядра 3.10. Процесс intern проходит сейчас, но его результаты не будут отображаться до будущих выпусков ядра.
Кроме того, количественно определить, что происходит с ядром, не очень сложно, поскольку у нас есть показатели, выходящие за пределы отдельных коммитов . Например, мы знаем, что ядро 1.0.0 в 1994 году имело 176 250 строк кода; и мы знаем, что современное ядро, такое как 3.10, имеет 15 803 499 строк кода. Значительно больше Увеличена частота выпуска ядра (63 дня для 3.10), а также скорость изменения (9 коммитов в час или больше, как мы говорим). Процитируем Linux Foundation:
Способность выдерживать эту скорость изменений в течение многих лет является беспрецедентной в любом предыдущем публичном программном проекте.
Но все это приносит мало понимания, на мой взгляд. Поэтому я бы спросил:
- Может ли эта четверть века эволюция быть обобщенно квалифицированной, помимо линейного сложения всех перечисленных особенностей, составляющих это ядро с течением времени?
- И дает ли это какое-либо представление о том, что такое ядро Linux или куда оно идет? После 25 лет разработки можно сделать определенные выводы по этому поводу?
Ищите абстрактный ответ в терминах непрофессионала, который говорит сам за себя, не прибегая ко всему.