Ядро Linux/Система

Матеріал з Вікіпідручника
Перейти до навігації Перейти до пошуку

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

Завантаження і зупинка[ред.]

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

  1. Ініціалізація обладнання (включаючи їх програмну прошивку)
  2. Виконання завантажувача (boot loader) (якщо такий присутній)
  3. Завантаження образу ядра і запуск ядра
  4. Ініціалізація простору користувача

Ранні стадії процесу запуску Linux у значній мірі залежать від архітектури комп'ютера. Однією із поширених архітектур, на якій як правило використовують Linux є архітектура IBM PC сумісного обладнання; на таких системах, важливу роль відіграє BIOS, який може не мати подібних аналогів на інших системах. В наступному прикладі буде обговорюватися саме архітектура IBM PC сумісного обладнання:

  1. BIOS виконує задачі запуску, які є специфічними для даної апаратної платформи.
  2. Як тільки обладнання було перераховане і те обладнання, яке необхідне для завантаження було ініціалізоване правильно, BIOS завантажує і виконує код завантажуванча із сконфігурованого пристрою для завантаження. Код завантажувача містить код для виконання фази 1 завантажувача Linux; фаза 1 виконує завантаження фази 2, в якій міститься основна частина коду завантажувача. Деякі завантажувачі для досягнення цього можуть мати проміжну фазу (відому як фаза 1.5), оскільки вони розроблені так, що мають можливість інтерпретувати структури файлової системи, аби знайти місце розташування завантажувача фази 2.
  3. Завантажувач (boot loader) завантажує образ ядра, готує параметри завантаження для того, щоб ядро згодом могло їх прочитати, і передає управління операційній системі виконуючи перехід (jumping) у відповідну позицію в пам'яті.

Коли ядро завершує свій процес запуску, воно повинно забезпечити користувацькому простору середовище із витискальною багатозадачністю. Ядро також повинне ініціалізувати пристрої, які необхідні для монтування кореневої файлової системи (на читання), що вказується у завантажувачі за допомогою параметру root=. Коренева файлова система місить образ першого процесу який буде запускатися ядром, цей процес називається процесом init, PID (ідентифікатор процесу) якого дорівнюватиме 1. За замовчуванням ядро шукатиме його у /sbin/init, або за шляхом вказаним у параметрі завантаження init=.

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

Комунікація у користувацькому просторі[ред.]

Системні виклики це основний механізм, завдяки якому користувацькі програми можуть взаємодіяти із ядром Linux.

Syscalls, /proc, /dev, /sys

procfs[ред.]

proc filesystem (procfs) це спеціальна файлова система, яка містить інформацію про процеси і іншу інформацію про систему у ієрархічній структурі, надаючи тим самим зручніший і стандартизований спосіб динамічно доступатися до даних процесу, що зберігаються ядром ніж традиційні методи або прямий доступ до пам'яті ядра. Як правило, він посилається на установлену мітку, що називається /proc яка встановлюється під час завантаження. Файлова система proc виконує роль інтерфейсу для внутрішніх структур даних в ядрі. Її можна використовувати, для отримання інформацію про систему і для зміни певних параметрів ядра під час виконання.

/proc містить директорії для кожного виконуваного процесу —включаючи потоки ядра— у директоріях із назвою /proc/PID, де PID це номер процесу. Кожна з директорій містить інформацію про один процес, включаючи команду, яка початково запустила цей процес (/proc/PID/cmdline), імена і змінні його параметрів середовища англ. environment variables (/proc/PID/environ), символьне посилання на його робочий каталог (/proc/PID/cwd), наступне символьне посилання на початковий виконуваний файл —якщо він досі існує— (/proc/PID/exe), декілька директорій із символічними посиланням на кожен відкритий файловий дескриптор (/proc/PID/fd) і інформацію про статус —позицію, флаги, ...— для кожного з них (/proc/PID/fdinfo), інформацію про відображені на пам'ять файли і блоки пам'яті, такі як купа і стек (/proc/PID/maps), бінарний образ, що представляє віртуальну пам'ять процесу (/proc/PID/mem), символьне посилання на root path як його бачить процес (/proc/PID/root), директорію що містить жорсткі посилання на будь-який дочірній процес або потік (/proc/PID/task), базову інформацію про процес, включаючи його стан роботи і використання пам'яті (/proc/PID/status) і багато іншого.

sysfs[ред.]

sysfs це псевдо файлова система, яка експортує до користувацького простору інформацію про різноманітні підсистеми ядра, апаратні пристрої, і пов'язані з ними драйвери пристроїв в моделі пристроїв ядра за допомогою віртуальних файлів. Крім того, що вони надають інформацію про різні пристрої і підсистеми ядра, ці експортовані віртуальні файли використовуються для їх конфігурації. Sysfs розроблена для того, щоб експортувати інформацію, яка присутня у дереві пристроїв, для того, щоб не створювати безладу в procfs.

Sysfs має адресу монтування /sys.

Модулі[ред.]

lsmod
cat /proc/modules