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

Але що робить ядро ​​Linux? Як воно працює? Які його основні завдання? Це дуже велика тема і ми спробуємо розібрати її в цій статті.

Що робить ядро ​​Linux?

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

Природно, ядро ​​- це не єдине програмне забезпечення, яке забезпечує абстракцію, куди більш важливий рівень абстракції, який надається драйверами. Ядру необов'язково знати як працювати з тим чи іншим пристроєм, оскільки за це відповідають драйвера. Тому ядро ​​може працювати на різному обладнанні.

Візьмемо для прикладу читання і запис даних в оперативну пам'ять. Кожна материнська плата може мати різні контролери пам'яті, а ваш комп'ютер може працювати на процесорі ARM, Intel, AMD, SPARC, PowerPC або MIPS. Але це не буде мати значення для вашої програми Hello World, а так як ядро ​​надає уніфікований інтерфейс для всіх цих платформ.

Тепер, давайте розглянемо які саме функції надає ядро ​​або, іншими словами, які абстракції ми отримаємо:

  • RAM - Читання і запис даних в оперативну пам'ять;
  • Постійне зберігання - Читання і запис даних на постійні запам'ятовуючі пристрої;
  • Віртуальна файлова система;
  • Робота з фізичними мережами (Ethernet, Wireless, LTE, комутатори, Bluetooth);
  • Віртуальні мережі;
  • Спільне використання процесорного часу програмами;
  • Балансування навантаження процесора і пріоритети;

Підтримка зовнішніх пристроїв:

  • Знімні USB носії;
  • Веб-камери;
  • Миші і клавіатури;
  • Права доступу до файлів для користувачів і груп;
  • Дозвіл доступу до ресурсів системи;

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

Збереження даних

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

Схоже, справи йдуть з постійним зберіганням. Ядро приховує від програм відмінності між інтерфейсами SATA, PATA, SCSI, USB, M2 і іншими протоколами зберігання. Одна програма може працювати з будь-яким носієм і будь-який підтримуваної файлової системою без будь-яких змін в програмі. Це збільшує повторне використання коду і продуктивність праці розробників.

Доступ до мережі

Але на щастя, на даний момент найпопулярніші протоколи, це IPv4 і IPv6. Що стосується інших мережевих протоколів, таких як DECnet, IPX, AppleTalk, то вони підтримуються ядром, але навряд чи є сенс використовувати їх в сучасних програмах.

планування завдань

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

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

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

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

Навігація по публікаціям

Схожі статті