Що таке ядро ​​linux

Ядро Linux містить понад 13 мільйонів рядків коду і є одним з найбільших проектів з відкритим вихідним кодом в світі. Так що таке ядро ​​Linux і для чого воно використовується?

Що таке ядро ​​Linux?

Ядро - це найнижчий рівень програмного забезпечення, яке взаємодіє з апаратними засобами комп`ютера. Воно відповідає за взаємодію всіх програм, які потребують просторі користувача аж до фізичного обладнання. Також дозволяє процесам, відомим як сервіси отримувати інформацію один від одного за допомогою системи IPC.

Відео: Навіщо в Windows 10 впроваджували Linux ?! Тепер все стало ясно!

Види і версії ядра

Що таке ядро ​​Linux ви вже знаєте, але які взагалі бувають види ядер? Є різні способи і архітектурні міркування при створенні ядер з нуля. Більшість ядер можуть бути одного з трьох типів: монолітне ядро, микроядро, і гібрид. Ядро Linux являє собою монолітне ядро, в той час як ядра Windows і OS X гібридні. Давайте зробимо огляд цих трьох видів ядер.

микроядро

Мікроядра реалізують підхід, в якому вони керують лише тим, чим повинні: процесором, пам`яттю і IPC. Практично все інше в комп`ютері розглядається як аксесуари і обробляється в режимі користувача. Мікроядра мають перевагу в переносимості, вони можуть використовуватися на іншому обладнанні, і навіть інший операційній системі, до тих пір, поки ОС намагається отримати доступ до апаратного забезпечення сумісним чином.

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

плюси

  • портативність
  • невеликий розмір
  • Низьке споживання пам`яті
  • Безпека

мінуси

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

Монолітне ядро

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




плюси:

  • Більш прямий доступ до апаратних засобів
  • Простіше обмін даними між процесами
  • Процеси реагують швидше

мінуси:

  • Великий розмір
  • Займає багато оперативної пам`яті
  • менш безпечно

гібридне ядро

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

плюси

  • Можливість вибору того що буде працювати в просторі ядра і користувача
  • Менше за розміром ніж монолітне ядро
  • більш гнучке



мінуси

  • Може працювати повільніше
  • Драйвери пристроїв випускаються виробниками

Де зберігаються файли ядра?

Де знаходиться ядро ​​Linux? Файли ядра Ubuntu або будь-якого іншого Linux-дистрибутива знаходяться в папці / boot і називаються vmlinuz-версія. Назва vmlinuz походить з епохи Unix. У шістдесятих роках ядра звикли називати просто Unix, в 90-х роках Linux ядра теж називалися - Linux.

Коли для полегшення багатозадачності була розроблена віртуальна пам`ять, перед ім`ям файлу з`явилися літери vm, щоб показати що ядро ​​підтримує цю технологію. Деякий час ядро ​​називалося vmlinux, але потім образ перестав поміщатися в пам`ять початкового завантаження, і був стиснутий. Після цього остання буква x була змінена на z, щоб показати що використовувалося стиснення zlib. Не завжди використовується саме це стиснення, іноді можна зустріти LZMA або BZIP2, тому деякі ядра називають просто zImage.

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

Відео: Можливості ядра Linux

У паку / boot можна знайти не тільки ядро ​​Linux, такі файли, як initrd.img і system.map. Initrd використовується в якості невеликого віртуального диска, який витягує і виконує фактичний файл ядра. Файл System.map використовується для управління пам`яттю, поки ще ядро ​​не завантажили, а конфігураційні файли можуть вказувати які модулі ядра включені в образ ядра при складанні.

Архітектура ядра Linux

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

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

Уявіть собі можливість встановити пакет оновлень Windows без необхідності постійних перезавантажень.

модулі ядра

Що, якби Windows вже мала всі потрібні драйвера за замовчуванням, а ви лише могли включити ті, які вам потрібні? Саме такий принцип реалізують модулі ядра Linux. Модулі ядра також відомі як завантажувані модулі (LKM), мають важливе значення для підтримки функціонування ядра з усіма апаратними засобами, що не витрачаючи всю оперативну пам`ять.

Модуль розширює функціональні можливості базового ядра для пристроїв, файлових систем, системних викликів. Завантажувані модулі мають розширення .ko і зазвичай зберігаються в каталозі / lib / modules /. Завдяки модульній природі ви можете дуже просто налаштувати ядро ​​шляхом установки і завантаження модулів. Автоматичне завантаження або вивантаження модулів можна налаштувати в конфігураційних файлах або вивантажувати і завантажувати на льоту, за допомогою спеціальних команд.

Сторонні, пропрієтарні модулі з закритим вихідним кодом доступні в деяких дистрибутивах, таких як Ubuntu, але вони не поставляються за замовчуванням, і їх потрібно встановлювати вручну. Наприклад, розробники відеодрайвера NVIDIA не пропонують вихідний код, але замість цього вони зібрали власні модулі в форматі .ko. Хоча ці модулі і здаються вільними, вони невільні. Тому вони і не включені в багато дистрибутиви за замовчуванням. Розробники вважають що не потрібно забруднювати ядро ​​невільним програмним забезпеченням.

Тепер ви ближче до відповіді на питання що таке ядро ​​Linux. Ядро не магія. Воно дуже необхідно для роботи будь-якого комп`ютера. Ядро Linux відрізняється від OS X і Windows, оскільки воно включає в себе всі драйвери і робить багато речей підтримуваних з коробки. Тепер ви знаєте трохи більше про те, як працює ваше програмне забезпечення і які файли для цього використовуються.

Поділися в соціальних мережах:

Схожі
Чому лінус торвальдс не любить debianЧому лінус торвальдс не любить debian
Розробка ядра linuxРозробка ядра linux
Драйвери пристроїв для linux, 3-е виданняДрайвери пристроїв для linux, 3-е видання
Установка драйверів в linuxУстановка драйверів в linux
Віртуальна флешка в linuxВіртуальна флешка в linux
Стів джобс свого часу пропонував роботу лінус торвальдсСтів джобс свого часу пропонував роботу лінус торвальдс
Чим відрізняється unix від linuxЧим відрізняється unix від linux
Продуктивність ubuntu 16.04 vs ubuntu 16.10Продуктивність ubuntu 16.04 vs ubuntu 16.10
Як видалити старі ядра ubuntuЯк видалити старі ядра ubuntu
Arm анонсувала мобільні ядра cortex-a73 і графічний прискорювач mali-g71Arm анонсувала мобільні ядра cortex-a73 і графічний прискорювач mali-g71
» » Що таке ядро ​​linux