Ядро Linux

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Linux
Tux
Системні повідомлення ядра Linux версії 3.0, що завантажується на архітектурі x86
ТипЯдро операційної системи
АвторЛінус Торвальдс[1]
РозробникиЛінус Торвальдс (засновник) та велика спільнота
ПлатформаARM, Мікроконтролери AVR, Blackfin, DEC Alpha, ETRAX CRIS, Itanium, MIPS, PA-RISC, PowerPC, SPARC, SuperH, TILE64, Unicore, Xtensa, Motorola 68000, IBM System/390, x86, x86_64, z/Architecture
Мова програмуванняC[2]
ЛіцензіяGNU General Public License лише версії 2[3][4] плюс різні ліцензовані блоби[5]
Репозиторійgit.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Вебсайтwww.kernel.org
Ядро Лінукс працює на широкому колі апаратних платформ, на його основі створені як продукти із закритими початковими кодами, так і відкритими
Ця стаття про ядро операційної системи. Для отримання інформації про операційні системи, які використовують це ядро, і які також часто називають «Linux», читайте статтю Linux.

Ядро Linux — ядро UNIX-подібної операційної системи. Розповсюджується під ліцензією GNU General Public License (GPL), і розробляється людьми з усього світу, що дозволило йому стати одним із найвидатніших прикладів відкритого програмного забезпечення[6] та увійти до числа наймасштабніших проєктів з розробки програмного забезпечення: версія 4.5 мала 21 млн рядків коду, а за 2015 рік до роботи над ним долучилось близько чотирьох тисяч розробників та понад 440 різних організацій[7].

Роботу над Лінукс розпочав Лінус Торвальдс у 1991 році. Тим часом, проєкт GNU розробив багато компонентів, необхідних для повноцінної вільної операційної системи, але його власне ядро, GNU Hurd було неповним і незакінченим. Програми проєкту GNU та велика кількість людей, що долучилися до розвитку ядра, сприяли його популяризації та створенню повноцінних операційних систем на базі цього ядра, котрі називають дистрибутивами Лінукс.

Архітектура

[ред. | ред. код]

Ядро Linux підтримує багатозадачність, віртуальну пам'ять, динамічні бібліотеки, відкладене завантаження, продуктивну систему керування пам'яттю і багато мережних протоколів.

Linux — монолітне ядро з підтримкою завантажуваних модулів. Драйвери пристроїв і розширення ядра зазвичай запускаються на «кільці 0», з повним доступом до устаткування. На відміну від звичайних монолітних ядер, у ядрі Лінукс драйвери пристроїв легко збираються у вигляді модулів і завантажуються або вивантажуються під час роботи системи.

Те, що архітектура Linux не є мікроядерною, викликало дебати між Лінусом Торвальдсом і Ендрю Таненбаумом на конференції comp.os.minix[8]

Структура

[ред. | ред. код]

Операційну систему можна умовно розділити на два рівні.

На верхньому рівні розташований користувацький простір (простір виконування прикладних програм). Тут виконуються застосунки користувача. Під призначеним для користувача простором розташовується простір ядра. Тут функціонує ядро Linux.

Є також бібліотека GNU C (glibc). Вона надає інтерфейс системних викликів, який забезпечує зв'язок з ядром і дає механізм для переходу від програми, що працює в просторі користувача, до ядра. Це важливо, оскільки ядро і програма користувача розташовуються в різних захищених адресних просторах. При цьому, тоді як кожен процес в просторі користувача має свій власний віртуальний адресний простір, ядро займає один загальний адресний простір.

Ядро Linux можна, своєю чергою, розділити на три великі рівні. Вгорі розташовується інтерфейс системних викликів, який реалізує базові функції, наприклад, читання і запис. Нижче за інтерфейс системних викликів розташовується код ядра, точніше кажучи, незалежний код ядра. Цей код є загальним для всіх процесорних архітектур, підтримуваних Linux. Ще нижче розташовується архітектурно-залежний код, що утворює так званий BSP (Board Support Package — пакет підтримки апаратної платформи). Цей код залежить від процесора і платформи для конкретної архітектури.

Ядро по суті є диспетчером ресурсів. Незалежно від того, що є керованим ресурсом — процес, пам'ять чи апаратний пристрій, — ядро організовує й упорядковує доступ до ресурсу безлічі конкуруючих користувачів (як у просторі ядра, так і в просторі користувача).

Властивості ядра Linux

[ред. | ред. код]

У ядрі Linux реалізована ціла низка важливих архітектурних елементів. І на найзагальнішому, і на детальніших рівнях ядро можна підрозділити на безліч різних підсистем. З іншого боку, Linux можна розглядати як монолітне ціле, оскільки всі базові сервіси зібрані в ядрі системи. Такий підхід відрізняється від архітектури з мікроядром, коли ядро надає тільки найзагальніші сервіси, такі як обмін інформацією, ввід/вивід, управління пам'яттю і процесами, а конкретніші сервіси реалізуються в модулях, що підключаються до рівня мікроядра.

З часом ядро Linux стало ефективнішим з погляду використання пам'яті і процесорних ресурсів і набуло виняткової стабільності. Важливий аспект Linux, враховуючи розмір і складність цієї системи — це її переносимість. Linux можна відкомпілювати для величезної кількості різних процесорів і платформ, що мають різні архітектурні обмеження і потреби. Наприклад, Linux може працювати на процесорі як з блоком керування пам'яттю (MMU), так і без нього. Підтримка процесорів без MMU реалізована у версії ядра uClinux.

Інтерфейс системних викликів

[ред. | ред. код]

Інтерфейс системних викликів (SCI) — це тонкий рівень, що надає засоби для виклику функцій ядра з простору користувача. Цей інтерфейс може бути архітектурно залежним, навіть в межах одного процесорного сімейства. SCI фактично є службою мультиплексування і демультиплексування виклику функцій. Реалізація SCI міститься в у підкаталозі kernel, а архітектурно-залежна частина — у підкаталозі arch.

Механізм обробки системних викликів (перехід від простору користувача до простору ядра) відрізняється для різних процесорних архітектур, і може навіть бути різним у межах однієї архітектури (наприклад, механізми шлюзів виклику, int 80h, SYSENTER і SYSCALL для x86).

Керування процесами

[ред. | ред. код]

Керування процесами сконцентроване на виконанні процесів. У ядрі ці процеси називаються нитками (англ. threads); вони відповідають окремим віртуалізованим об'єктам процесора (код ниті, дані, стек, процесорні регістри). У просторі користувача зазвичай використовується термін процес, хоча в реалізації Linux ці дві концепції (процеси і ниті) не розрізняють. Ядро надає прикладний програмний інтерфейс (API) через SCI для створення нового процесу (породження копії, запуску на виконання, виклику функцій Portable Operating System Interface POSIX), зупинки процесу (kill, exit), взаємодії і синхронізації між процесами (сигнали або механізми POSIX).

Ще одне завдання керування процесами — сумісне використання процесора активними нитями. У ядрі реалізований новаторський алгоритм планувальника, час роботи якого не залежить від числа нитей, що претендують на ресурси процесора. Назва цього планувальника — O(1) — підкреслює, що на диспетчеризацію одної ниті витрачається стільки ж часу, як і на множину нитей. Планувальник O(1) також підтримує симетричні багатопроцесорні конфігурації (SMP).

Керування пам'яттю

[ред. | ред. код]

Інший важливий ресурс, яким керує ядро, — це оперативна пам'ять. Для підвищення ефективності, враховуючи механізм роботи апаратних засобів з віртуальною пам'яттю, пам'ять організовується у вигляді так званих сторінок фіксованого розміру. У Linux є засоби для керування наявною пам'яттю, а також апаратними механізмами для встановлення відповідності між фізичною і віртуальною пам'яттю.

На базі сторінкової пам'яті у ядрі Linux збудовано різні механізми виділення і звільнення блоків пам'яті, такі як slab allocation[en], SLOB[en] і SLUB (software)[en]. Після виділення сторінок ядро розміщує структури усередині них, стежачи за тим, які сторінки повні, які частково заповнені і які порожні. Це дозволяє динамічно розширювати і скорочувати схему залежно від потреб розміщеної системи.[джерело?]

В умовах наявності великого числа користувачів у пам'яті можливі ситуації, коли вся наявна пам'ять буде вичерпана. Через це сторінки можна видаляти з пам'яті і переносити на диск. Цей процес обміну сторінок між оперативною пам'яттю і твердим диском називається підкачуванням, або свопінгом.

Віртуальна файлова система

[ред. | ред. код]

Ще один важливий аспект ядра Linux — віртуальна файлова система (VFS), яка надає загальну абстракцію інтерфейсу до файлових систем. VFS надає рівень комутації між SCI і файловими системами, підтримуваними ядром. На верхньому рівні VFS розташовується єдина API-абстракція таких функцій, як відкриття, закриття, читання і запис файлів. На нижньому рівні VFS розташовані абстракції файлових систем, які визначають, як реалізуються функції верхнього рівня. Вони є модулями, що підключаються, для конкретних файлових систем (яких існує більше 50).

Нижче за рівень файлової системи міститься кеш буферів, що надає загальний набір функцій до рівня файлової системи (незалежний від конкретної файлової системи). Цей рівень кешування оптимізує доступ до фізичних пристроїв за рахунок короткострокового зберігання даних (або попереджувального читання, що забезпечує готовність даних до того моменту, коли вони знадобляться). Нижче за кеш буферів містяться драйвери пристроїв, що реалізовують інтерфейси для конкретних фізичних пристроїв.

Мережевий стек

[ред. | ред. код]

Мережевий стек за своєю конструкцією має багаторівневу архітектуру, що повторює структуру самих протоколів. Протокол Internet Protocol (IP) — це базовий протокол мережевого рівня, розташований нижче за транспортний протокол (Transmission Control Protocol, TCP). Вище TCP розташований рівень сокетів, що викликається через SCI.

Рівень сокетів є стандартним API до мережевої підсистеми. Він надає користувацький інтерфейс до різних мережевих протоколів. Рівень сокетів реалізує стандартизований спосіб управління з'єднаннями і передачі даних між кінцевими точками, від доступу до «чистих» кадрів даних і блоків даних протоколу IP (PDU) і до протоколів TCP і User Datagram Protocol (UDP).

Графічний стек

[ред. | ред. код]
На конференції XDC2014 Алекс Дойчер з AMD анонсував уніфіковану архітектуру графічного драйвера ядра.[9] Пропрієтарний графічний драйвер, libGL-fglrx-glx, використовує ту ж саму інфраструктуру DRM для Mesa 3D. Через те, що ABI ядра нестабільний, AMD повинна була постійно адаптувати блоб, використовуваний драйвером Catalyst.

Драйвери пристроїв

[ред. | ред. код]

Переважна більшість початкового коду ядра Linux припадає на драйвери пристроїв, що забезпечують можливість роботи з конкретними апаратними пристроями. У дереві початкових кодів Linux є підкаталог драйверів, в якому, своєю чергою, є підкаталоги для різних типів підтримуваних пристроїв, таких як Bluetooth, I2C, послідовні порти тощо.

Архітектурно-залежний код

[ред. | ред. код]

Хоча основна частина Linux незалежна від архітектури, на якій працює операційна система, в деяких елементах для забезпечення нормальної роботи і підвищення ефективності необхідно враховувати архітектуру.

Відмінності від Unix

[ред. | ред. код]
  • Ядро Linux підтримує динамічне завантаження модулів ядра. Хоча ядро Linux і є монолітним, воно додатково підтримує динамічне завантаження і вивантаження виконуваного коду ядра за потреби
  • Ядро Linux підтримує симетричну багатопроцесорну обробку (SMP). Хоча більшість комерційних варіантів операційної системи Unix зараз підтримують SMP, більшість традиційних реалізацій ОС Unix такої підтримки не мають.
  • Ядро Linux підтримує витискальну багатозадачність, у тому числі для потоків виконання ядра. Серед комерційних реалізацій ОС Unix преемптивне ядро мають тільки операційні системи Solaris і IRIX.[джерело?]
  • У ядрі Linux використовується цікавий підхід для підтримки багатонитковості (multithreading): нитки нічим не відрізняються від звичайних процесів. З погляду ядра всі процеси однакові, просто деякі з них мають спільні ресурси.
  • У ядрі Linux відсутні деякі функції ОС Unix, які вважаються погано реалізованими, як, наприклад, підтримка інтерфейсу STREAMS, або відповідають «недолугим» стандартам.
  • Ядро Linux є повністю відкритим у повному розумінні цього слова. Набір функцій, реалізованих в ядрі Linux, — це результат вільної і відкритої моделі розробки операційної системи Linux. Якщо якась функція ядра вважається несуттєвою або неякісною, то розробники ядра не зобов'язані її реалізувати. В протилежність цьому, внесення змін при розробці ядра Linux займає «елітарну» позицію: зміни повинні вирішувати певну практичну задачу, повинні бути логічними і мати зрозумілу чітку реалізацію. Отже, функції деяких сучасних варіантів ОС Unix, такі як пам'ять ядра зі сторінковою реалізацією, не були реалізовані.[джерело?]

Попри наявні відмінності, Linux є операційною системою зі строгим спадкоємством традицій ОС Unix.

Ліцензія

[ред. | ред. код]

Linux розповсюджується на умовах ліцензії GNU General Public License (виключно версії 2[4][10]), тобто вільно. Цю ліцензію вибрав Лінус Торвальдс практично відразу після того, як стало зрозуміло, що його хобі почало набувати поширення по всьому світу. Власником торгової марки Linux™ є Лінус, а допомагає стежити за дотриманням його прав і умов організація Linux Mark Institute.

Історія

[ред. | ред. код]
квітень 1991 21 річний Лінус Торвальдс розпочинає роботу над планувальником задач операційної системи для роботи на комп'ютерах з процесорами i386.
25 серпня 1991 Лінус повідомляє про свою працю у comp.os.minix. Працюють bash(1.08) та gcc(1.40)[11]
17 вересня 1991 Linux 0.01. 10,239 рядків коду.
Жовтень 1991 Linux 0.02[12]
Грудень 1991 Linux 0.11. Перша версія, у якій можна скомпілювати її саму.
19 січня 1992 Перше повідомлення в alt.os.linux[13]
31 березня 1992 створення групи новин comp.os.linux[14]
Квітень 1992 Linux 0.96, вперше запускається X Window System.
Весь 1993, і початок 1994 15 версій 0.99.*
14 березня 1994 Linux 1.0.0. Стабільна версія 176,250 рядків коду.
Березень 1995 Linux 1.2.0. З'явилась підтримка Alpha, SPARC і MIPS 310,950 рядків коду.
9 травня 1996 Пінгвін Tux вибраний логотипом Лінукс
9 червня 1996 Linux 2.0.0. Багатопроцесорність, SMP 777,956 рядків коду.
25 січня 1999 Linux 2.2.0.[15] 1,800,847 рядків коду.
4 січня 2001 Linux 2.4.0[16] 3,377,902 рядків коду.
18 грудня 2003 Linux 2.6.0[17] 5,929,913 рядків коду.

Відмітка в 10 млн рядків була пройдена у кінці 2008 року, при випуску ядра 2.6.27.

Ядро 3.3, що вийшло у березні 2012, подолало черговий рубіж — розмір сирцевого коду ядра перевищив відмітку в 15 млн рядків. При цьому 5.6 млн рядків доводиться на драйвери, 1.8 млн на специфічний для апаратної архітектури код, 700 тисяч на файлові системи, 533 тисяч на звукову підсистему, 493 тисяч на мережевий стек. 97.22 % кода ядра написано мовою Сі, 2.47 % на асемблері, 0.15 % на Perl і 0.04 % на Shell.[18]

Зміна політики нумерації версій ядра Linux

[ред. | ред. код]

30 травня 2011 Лінус Торвальдс випустив ядро ​​версії 3.0-rc1. Разом з ним змінено політику нумерації версій ядра. Скасовано використання парних / непарних номерів для позначення стабільності ядра, а третє число означає стабілізацію ядра. Версія 3.0 не містить значних змін, крім нової політики нумерації ядра. Таким чином, стабільні версії ядра 3.0 іменуються 3.0.X, а наступний після цього реліз має номер 3.1.

Нові версії виходять приблизно що два місяці. Після випуску версії 3.19 Лінус Торвальдс випустив ядро версії 4.0 12 квітня 2015 року. Версія 5.0 вийшла 2019-го року.

Хто створює ядро Linux

[ред. | ред. код]

Linux — складна система, що може включати тисячі різних пакунків, від найпоширеніших, таких, як утиліти GNU, X.org, графічні середовища GNOME і KDE, до специфічних для якогось одного з дистрибутивів. Команди розробників кожного проєкту відрізняються чисельністю, підходом до роботи, використовуваними інструментами і методами планування робіт. При цьому ядро Linux займає особливе місце серед всіх інших застосувань. Від нього залежить можливість роботи системи Linux на різних апаратних платформах і ступінь підтримки різних пристроїв. Тому характеристики процесу його розробки можуть, якоюсь мірою, служити індикатором для всієї системи Linux.

Linux Foundation провело дослідження[19], що охоплює трирічний період розробки ядра (від версії 2.6.11 до версії 2.6.24) і фокусується на таких характеристиках, як частота релізів і змін, розмір початкових текстів ядра, і найголовніше, дозволяє отримати уявлення про тих, хто зрештою розробляє ядро Linux.

Статистика показує, що, в середньому, кожен новий реліз ядра виходить раз на 2,5 — 3 місяці (60 — 110 днів). В першу чергу це пов'язано з вибраною в 2005 р. моделлю розробки, направленою на зведення до мінімуму тривалості проміжків між розробкою нових функцій, появою підтримки нових пристроїв і включенням їх в ядро; а також що зводить до мінімуму потребу творців дистрибутивів в модифікаціях ядра.

При цьому число латок (патчів), що вносяться до ядра, має тенденцію до зростання. Зводячи воєдино ці дві характеристики, можна відзначити, що, в середньому, до ядра вноситься 2,83 патча за годину, при цьому, в рядках коду щодня в ядро додається понад 3 тис. рядків, більше 1,4 тис. рядків модифікується. Число розробників, що взяли участь у випуску версії 2.6.24, більш ніж вдвічі перевищило цей показник для версії 2.6.11 і склало 1057 осіб.

При цьому, проте, всього 10 провідних розробників спільно внесли майже 15 % змін, а 30 провідних розробників — 30 %. Це, проте, не означає, що поширене в деяких кругах уявлення про Linux як про систему, що розробляється аматорами, правильне. Не зважаючи, що далеко не у всіх компаній, що займаються вільним ПЗ, є необхідність вносити зміни до ядра, числа компаній, що беруть участь в його розробці, росте. Чотири найбільші компанії-розробники ядра — Red Hat, Novell, IBM і Intel — внесли більше 32 % зроблених за час дослідження змін, а сумарний відсоток змін в ядро, внесених розробниками, що працюють на компанії, склав більше 70 %.

При цьому серед компаній, що беруть участь в розробці ядра, виділяється декілька груп по основній меті участі в розробці. Це група компаній, що включає IBM, Intel, HP, SGI, MIPS та інших, яка орієнтується в основному на підтримку роботи Linux на власному устаткуванні. Дистриб'ютори, такі, як Red Hat,, Novell, MontaVista мають на меті додавання в ядро можливостей, на які існує попит серед користувачів, і які підсилюють конкурентоспроможність дистрибутивів як кінцевих продуктів. Такі компанії, як Sony, Nokia, Samsung працюють над ядром для поліпшення роботи систем на базі ядра Linux у власних пристроях.

Компанії, які найактивніше здійснюють доопрацювання ядра Linux
Назва компанії Кількість змін % від загального числа змін
Приватні користувачі 11,594 13.9%
Назва не визначена 10,803 12.9%
Red Hat 9,351 11.2%
Novell 7,385 8.9%
IBM 6,952 8.3%
Intel 3,388 4.1%
Linux Foundation 2,160 2.6%
Consultant 2,055 2.5%
SGI 1,649 2.0%
MIPS Technologies 1,341 1.6%
Oracle 1,122 1.3%
MontaVista 1,010 1.2%
Google 965 1.1%
Linutronix 817 1.0%
HP 765 0.9%
NetApp 764 0.9%
SWsoft 762 0.9%
Renesas Technology 759 0.9%
Freescale 730 0.9%
Astaro 715 0.9%
Academia 656 0.8%
Cisco 442 0.5%
Simtec 437 0.5%
Linux Networx 434 0.5%
QLogic 398 0.5%
Fujitsu 389 0.5%
Broadcom 385 0.5%
Analog Devices 358 0.4%
Mandriva 329 0.4%
Mellanox 294 0.4%
Snapgear 285 0.3%

Таким чином, з дослідження Linux Foundation можна зробити висновок, що ядро Linux є безпрецедентним прикладом успішної співпраці різних за розміром і вироблюваною продукцією компаній і індивідуальних розробників. Кількість цих розробників і розподіл їхнього внеску в розробку може служити, в деякому розумінні, гарантією стабільності і незалежності розробки.

Також доступні новіші версії статистики для ядер 2.6.30 та 2.6.33[20][21](англ.).

Критика

[ред. | ред. код]

Під час круглого столу на конференції LinuxCon 2009 року в США Лінус Торвальдс назвав ядро операційної системи Linux, створене ним 18 років тому, «роздутим і величезним» («bloated and huge»)[22]. З появою в ядрі кожної нової функції ситуація тільки погіршується, і в цей час співтовариство не має в своєму розпорядженні плану з виправлення ситуації. Але сама ситуація неминуча внаслідок необхідності додавання нових функцій і підтримки великої кількості пристроїв.

Згідно з внутрішнім дослідженням Intel, продуктивність Linux падає на два відсотки з кожним новим релізом — загальне зниження продуктивності за останні десять релізів досягло 12 відсотків.

Перша версія ядра Linux включала в себе приблизно 10 тисяч рядків коду, для версії 3.3 розмір ядра перевалив уже за 15 мільйонів рядків.

В інтерв'ю німецькому виданню Zeit[23][24] Лінус Торвальдс висловив свої побоювання через стрімке ускладнення ядра Linux. Ситуацію, коли якусь підсистему ОС здатні розуміти лише кілька людей зі всього співтовариства, Лінус вважає неприпустимою: «Іноді просто для того, щоб зрозуміти, через що проявляється якась помилка — ми витрачаємо кілька днів, щоб знайти потрібного фахівця». Крім того, Лінус каже, що він тепер не знає тих тисяч розробників, що працюють над ядром, оскільки особисто контактує не більше, ніж з 50 провідними розробниками різних підсистем. При цьому він зізнається, що по-справжньому він довіряє лише кільком із них. Така система роботи склалася стихійно, і Лінус називає її «мережею взаємодії, побудованою на довірі» (Лінус довіряє кільком основним ментейнерам, які, своєю чергою, довіряють розробникам, котрі розвивають їхні підсистеми).

Примітки

[ред. | ред. код]
  1. https://web.archive.org/web/20150315012537/http://www.linuxfoundation.org/about
  2. The Linux Kernel Open Source Project on Open Hub: Languages Page
  3. InfoWorld. Linux creator Torvalds still no fan of GPLv3. Архів оригіналу за 23 червня 2013. Процитовано 11 жовтня 2008.
  4. а б The Linux kernel is provided under: (англ.).
  5. Stallman, Richard (11 жовтня 2006). Linux, GNU, and freedom. Free Software Foundation. Архів оригіналу за 23 червня 2013. Процитовано 21 лютого 2007.
  6. September 25, 2006 e-mail by Linus Torvalds: Linux is open source, not free software. Архів оригіналу за 23 червня 2013. Процитовано 19 грудня 2006.
  7. Swapnil Bhartiya (12 травня 2016). Linux is the largest software development project on the planet: Greg Kroah-Hartman. CIO. Архів оригіналу за 28 травня 2016. Процитовано 30 травня 2016.
  8. Linus vs Tannenbaum (англ.). 1992. Архів оригіналу за 3 жовтня 2012. Процитовано 14 травня 2019.
  9. Deucher, Alex (7 жовтня 2014). AMD's New Unified Open Source Driver. X.Org Foundation. Процитовано 21 січня 2015.
  10. GNU GENERAL PUBLIC LICENSE, Version 2 (англ.). Free Software Foundation. June 1991.
  11. http://groups.google.com/groups?selm=1991Aug25.205708.9541%40klaava.Helsinki.FI&output=gplain
  12. http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI&output=gplain
  13. http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=1992Jan19.085628.18752%40cseg01.uark.edu
  14. http://groups.google.com/groups?selm=1992Mar31.131811.19832%40rock.concert.net&output=gplain
  15. Архівована копія. Архів оригіналу за 18 листопада 2005. Процитовано 17 травня 2005.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  16. http://linuxtoday.com/news_story.php3?ltsn=2001-01-05-007-04-NW-LF-KN
  17. Архівована копія. Архів оригіналу за 16 липня 2003. Процитовано 17 травня 2005.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  18. Релиз ядра Linux 3.3. Обзор новшеств
  19. Linux Kernel Development (звіт, квітень 2008). Архів оригіналу за 5 квітня 2008. Процитовано 26 листопада 2008.
  20. http://lwn.net/Articles/334721/
  21. http://lwn.net/Articles/373405/
  22. Linus calls Linux 'bloated and huge' — The Register, 22.09.2009
  23. «Linux ist zu komplex geworden». Linus Torvalds, der Erfinder des freien Betriebssystems, fürchtet, dass irgendwann kein Entwickler mehr Linux versteht. Es müsse simpler werden, sagt er im Interview.
  24. Линус Торвальдс выразил опасения в связи со стремительным усложнением ядра Linux

Література

[ред. | ред. код]

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]