1.3.1 Ядро ос Linux
Як і в будь-якій іншій операційній системі, що забезпечує захист користувачів один від одного і захист системних даних від будь-якого користувача, в ОС Linux є захищене ядро, яке керує ресурсами комп'ютера і надає користувачам базовий набір послуг.
Слід зауважити, що зручність і ефективність сучасних варіантів ОС Linux не означає, що вся система, включаючи ядро, спроектована і структуризована найкращим чином.
Ядро більшості сучасних комерційних варіантів ОС являє собою не дуже чітко структурованний моноліт великого розміру. З цієї причини програмування на рівні ядра ОС Linux продовжує залишатися мистецтвом.
Загальна організація традиційного ядра ОС Linux, oдне з основних досягнень ОС Linux, полягає в тому, що система має властивість високої мобільності. Тобто вся операційна система, включаючи її ядро, порівняно просто переноситься на різні апаратні платформи. Всі частини системи, не рахуючи ядра, є повністю машино-незалежними.
Порівняно невелика частина ядра є машино-залежна і написана на суміші мови Сі і мови асемблера цільового процесора. При перенесенні системи на нову платформу потрібно переписування цієї частини ядра з використанням мови асемблера і урахуванням специфічних рис цільової апаратури.
Машино-залежні частини ядра добре ізольовані від основної машино-незалежної частини, і при хорошому розумінні призначення кожного машино-залежного компонента переписування машино-залежної частини є в основному технічним завданням.
Машино-залежна частина традиційного ядра ОС Linux включає наступні компоненти:
- розкрутка і ініціалізація системи на низькому рівні;
- первинна обробка внутрішніх і зовнішніх переривань;
- управління пам'яттю;
- перемикання контексту процесів між режимами користувача і ядра;
- пов'язані з особливостями цільової платформи частини драйверів пристроїв.
Основні функції
До основних функцій ядра ОС Linux прийнято відносити такі:
- ініціалізація системи - функція запуску та розкрутки. Ядро системи забезпечує засіб розкручування (bootstrap), яке забезпечує повного завантаження ядра в пам'ять комп'ютера і запускає ядро;
- управління процесами і нитками - функція створення, завершення і відстеження існуючих процесів і ниток. Оскільки ОС Linux є мультипроцесорною операційною системою, ядро забезпечує розподіл часу процесора між запущеними процесами та інших ресурсів комп'ютера для створення зовнішнього відчуття того, що процеси реально виконуються в паралель;
- управління пам'яттю - функція відображення практично необмеженої віртуальної пам'яті процесів у фізичну оперативну пам'ять комп'ютера, яка має обмежені розміри. Відповідний компонент ядра забезпечує використання одних і тих же областей оперативної пам'яті, що розділюються кількома процесами з використанням зовнішньої пам'яті;
- управління файлами - функція, що реалізує абстракцію файлової системи, ― ієрархії каталогів і файлів. Файлові системи ОС Linux підтримують кілька типів файлів. Деякі файли можуть містити дані у форматі ASCII, інші будуть відповідати за зовнішні пристрої. У файловій системі зберігаються об'єктні файли, виконувані файли і т.д. Файли зазвичай зберігаються на пристроях зовнішньої пам'яті; доступ до них забезпечується засобами ядра;
- комунікаційні засоби - функція, що забезпечує можливість обміну даними між процесами, що виконуються всередині одного комп'ютера, між процесами, що виконуються в різних вузлах локальної або глобальної мережі передачі даних, а також між процесами і драйверами зовнішніх пристроїв;
- програмний інтерфейс―функція, що забезпечує доступ до можливостей ядра з боку користувача процесів на основі механізму системних викликів , оформлених у вигляді бібліотеки функцій.