Що робить ядро ​​linux

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

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

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

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

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

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

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

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

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

  • RAM - Читання і запис даних в оперативну пам`ять;
  • Постійне зберігання - Читання і запис даних на постійні запам`ятовуючі пристрої;
  • Віртуальна файлова система;

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

  • Робота з фізичними мережами (Ethernet, Wireless, LTE, комутатори, Bluetooth;
  • Віртуальні мережі;



Планування завдань:

  • Спільне використання процесорного часу програмами;
  • Балансування навантаження процесора і пріоритети;

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

  • Знімні USB носії;
  • Веб-камери;
  • Миші і клавіатури;

Безпека:

  • Права доступу до файлів для користувачів і груп;
  • Дозвіл доступу до ресурсів системи;

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

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




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

Ядро Linux забезпечує прозорий інтерфейс для читання і запису даних з оперативної пам`яті. Не має значення де запущена операційна система, на старому процесорі i386 або новому Andorid ARM смартфоні. Код не потрібно міняти для забезпечення сумісності. Ядро містить код для більшості апаратних платформ, тому воно може забезпечити єдиний інтерфейс для роботи з ними.

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

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

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

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

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

Повернемося до IPv4 і IPv6. У обох дуже різні формати запису IP адреси, але це скоріше добре, ніж погано. Тип протоколу можна визначити відразу за формою IP адреси. Ядро забезпечує підтримку протоколів передачі даних: TCP, UDP, SCTP і ICMP. Всі вони можуть бути дуже легко використані за допомогою системних викликів. Не має значення, чи ваш комп`ютер підключено до Ethernet або Wifi. Ця забезпечує гнучкість для кінцевих користувачів.

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

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

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

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

висновки

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

На завершення коротка історія Linux:

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

Схожі
Чому лінус торвальдс не любить debianЧому лінус торвальдс не любить debian
Lame - linux administration made easyLame - linux administration made easy
Розробка ядра linuxРозробка ядра linux
Драйвери пристроїв для linux, 3-е виданняДрайвери пристроїв для linux, 3-е видання
Віртуальна флешка в linuxВіртуальна флешка в linux
Чим відрізняється unix від linuxЧим відрізняється unix від linux
Продуктивність ubuntu 16.04 vs ubuntu 16.10Продуктивність ubuntu 16.04 vs ubuntu 16.10
Як оновити ядро ​​до 4.1 в ubuntuЯк оновити ядро ​​до 4.1 в ubuntu
Що таке ядро ​​linuxЩо таке ядро ​​linux
Оновлення драйверів ubuntuОновлення драйверів ubuntu
» » Що робить ядро ​​linux