Чому Linux так добре масштабується на різних апаратних платформах?


22

Чому Linux працює добре на таких різних машинах - настільних комп’ютерах, ноутбуках, серверах, вбудованих пристроях, мобільних телефонах тощо? Це головним чином через те, що система відкрита, тому будь-яку її частину можна модифікувати для роботи в різних середовищах? Або є інші властивості ядра Linux та / або системи, які полегшують роботу цієї ОС на такому широкому спектрі платформ?


7
Я думаю, ви вже маєте частину відповіді - відкритість полегшує різним групам людей чи бізнесу пристосувати їх до своїх потреб. Оскільки ядро ​​було піддано критиці за монолітність, я не впевнений, що його початковий дизайн було навмисно оптимізовано для масштабованості. Я б здогадався, що більша кількість людей працювала над ядром Linux, ніж над іншими операційними системами, - і, можливо, це змусило сервісних сервісів подбати про поділ коду на частини з чіткими інтерфейсами? З іншого боку, деякі варіанти BSD мають портативність як явну мету.
RedGrittyBrick

@Red: Його критикували за те, що вона була монолітною, а не мікроядерною, але це не має нічого спільного з її дизайном. Це пов'язано з тим, скільки ядра працює в просторі користувачів і скільки працює в ядрі. Ядро Windows NT (наприклад) дуже модульне, але технічно воно все ще монолітне, оскільки більшість сервісів (тобто файлова система) працює в режимі ядра, а не в режимі користувача.
Біллі ONeal

@Billy: Windows NT технічно є гібридним ядром. Я вважаю, що Microsoft все ще підтримує підсистеми, використовуючи передачу повідомлень, і зберігає можливість переміщення фрагментів у користувацький простір за бажанням. Вони зробили це з графічною системою в Vista: тепер вона знаходиться в просторі користувачів, після того, як з ядра NT 4.0 був простір ядра з NT 4.0
Zan Lynx

2
@Zan: У мене було враження, що статус "гібридного ядра" оспорюється . Тому я сказав "монолітний". NT, безумовно, має багато монолітних особливостей, навіть якщо він розділений на бібліотечні фрагменти.
Біллі ONeal

@Billy: Мені здається, що якщо ваше ядро ​​можна перетворити на мікроядро, просто змінивши декілька параметрів і перебудувавшись, то це щось інше, ніж монолітне, навіть якщо найбільш часто використовувані бінарні збірки поміщають все в адресний простір ядра.
Зан Лінкс

Відповіді:


31

Хоча відкритість, безумовно, є частиною цього, я думаю, що ключовим фактором є постійне наполягання Лінуса Торвальда на тому, що вся робота, від великої до малої, має місце в основному ядрі Linux, якщо це добре зроблено. Якби він у якийсь момент вирішив намалювати лінію і сказати «гаразд, для цього вигадливого суперкомп'ютерного обладнання нам потрібна вилка», то могли б розробитись повністю окремі версії високого класу та малі системи. Натомість люди замість цього зробили більш важку роботу, щоб змусити її грати відносно добре.

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

З інтерв'ю кілька років тому :

З: Linux - це універсальна система. Він постачає ПК, величезні сервери, мобільні телефони та десять інших апаратів. З вашого пільгового становища, який сектор буде тим, де Linux виявить найвищий потенціал?

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


18
І невелика система та величезні системні визначення постійно змінюються, тому добре ухилення уникнути. Смартфони багатоядерні тепер можуть отримати користь від усієї роботи над суперкомп'ютером, зробленої роками тому.
Zan Lynx

4

Linux масштабує багато різних типів обладнання, оскільки:

  • це дуже настроюється
  • джерело є у вільному доступі і може бути побудований для будь-якого процесора, у якого є компілятор C
  • процесори у вбудованих пристроях та мобільних телефонах мають принаймні той самий рівень або більше потужності порівняно з оригінальними машинами 386, на початку яких розроблялася Linux, і продовжують набирати потужність
  • він працює чудово, не маючи нічого, крім мережі, певної форми диска чи дискового пристрою та послідовного порту

Ну, комусь потрібно буде написати мінімальний обсяг завантажувального коду та час виконання C для цільової платформи. О, і вона повинна підтримувати віртуальну пам'ять. Але інакше правда :)
Біллі ONeal

1
@Billy Існують порти до систем nommu: uClinux, uClinux / ARM та MontaVista Linux.
Tobu

@Tobu: Хм .. я не розумію, як це може бути. Вся "філософія Unix" для декількох процесів має припущення, що щось подібне forkможливо, і forkце не може бути зроблено досить ефективно на не віртуальній системі пам'яті. Хоча зазначені порти, ймовірно, використовують частини ядра Linux і можуть запускати деяке програмне забезпечення Linux, здебільшого, схоже, API, які піддаються цим портам, відрізняються від типових ядер Linux. (Приклад: відображення пам’яті - що, очевидно, вимагає віртуальної пам’яті)
Billy ONeal

linuxjournal.com/article/7814 : каже, що uCLinux не підтримує fork (), але варіант блокування під назвою vfork (), додатки під uCLinux повинні бути переписані для використання vfork або потоків.
LawrenceC

4

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

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

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

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

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


1

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

Якщо переглядати питання, який таким чином все-таки корисний для вас, я б сказав, що ринкові сили мотивують Microsoft додавати функції та функціональні можливості, орієнтовані на найновіше і найздібніше обладнання, оскільки вони продають більше копій операційної системи в першу чергу, коли кінцеві користувачі купують нові системи . Отже, в будь-який момент часу я вважаю, що останній випуск Windows працює погано на старих, менш спроможних апаратах.

Пробачте, якщо це спрощує ваше запитання.


Здається, ви говорите про ОС, а хлопець - про ядро. Ну, якщо ви точно не знаєте, якщо ядро ​​Windows роздуте.
thepang

@Tshepang: Справедливо кажучи, задаються питання про "ядро та / або систему Linux". Чи розділяють ядро ​​Windows 7 та Windows Phone 7? Мало, що я читав, припускає, що їх ядра можуть мати менше спільного коду, ніж ядра Ubuntu Server та Android.
RedGrittyBrick

Дякую, але питання стосувалося насправді Linux, а не будь-якої іншої ОС. Є багато інших там: en.wikipedia.org/wiki/List_of_operating_systems
Джастін Етьє

Ядро NT насправді дуже ефективне, але саме велика кількість шарів, що його оточують, складають
LawrenceC,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.