Ядро Linux

Порядок проходження байтів

(byte ordering) – Це порядок, згідно з яким байти розташовані в машинному слові Для різних процесорів може використовуватися один з двох типів нумерації байтів в машинному слові: найменш значимий (наймолодший) байт є або найпершим (найбільш лівим, left-most), або самим останнім (найбільш правим, right-most) в слові Порядок байтів називається зворотним (big-endian), якщо найбільш значимий (найстарший) байт […]

Інші об’єкти підсистеми VFS

Структури для VFS – це сама улюблена річ, і в цій підсистемі існують не тільки розглянуті структури, а й ще деякі Кожна зареєстрована файлова система представлена структурою file_system_type, Обєкти цього типу описують файлову систему і її властивості Більш того, кожна точка монтування предстаплена у вигляді структури vfsmount Ця структура містить інформацію про точку монтування, таку […]

Огляд операційних систем і ядер

Через неухильного зростання можливостей і не дуже якісного побудови деяких сучасних операційних систем, поняття операційної системи стало кілька невизначеним Багато користувачів вважають, що те, що вони бачать на екрані, – і є операційна система Зазвичай, і в цій книзі теж, підопераційною системою розуміється частина компютерної системи, яка відповідає за основні функції використання та адміністрування Це […]

Синхронізація та паралелізм

Ядро схильне станам конкуренції за ресурси (race condition) На відміну від однопоточному користувальницької програми, ряд властивостей ядра дозволяє здійснювати паралельні звернення до ресурсів загального доступу, і тому потрібно виконувати синхронізацію для запобігання станів конкуренції за ресурси Зокрема, можливі такі ситуації

Переміщення по зв’язаних списками

Тепер ми вже знаємо, як оголошувати, ініціалізувати і працювати зі звязаними списками в ядрі Це все добре, але не має жодного сенсу, якщо немає можливості працювати З даними, які зберігаються в списках Звязаний список – це просто контейнер, в якому зберігаються важливі дані Необхідно мати спосіб переміщення за списком і доступу до даних На щастя, […]

Знаходження виконуваних образів із змінами приводять до помилок

Зазвичай корисно знати, в якій версії вихідних кодів ядра зявився дефект Якщо відомо, що дефект зявився у версії 2418, але його не було у версії 2417, то відразу зявляється ясна картина змін, які призвели до появи помилки Виправлення помилки зводиться до зворотних змін, або іншим виправлень зміненого коду

Реалізація потоків в ядрі Linux

Нить – це популярна сьогодні програмна абстракція Вона забезпечує виконання декількох потоків в спільно використовуваному адресному просторі памяті Потоки також можуть спільно використовувати відкриті файли та інші ресурси Нить використовується дляпаралельного програмування (concurrent programming), Що на багатопроцесорних системах забезпечує істинний паралелізм

Реалізація системних викликів

Реалізація системного виклику в ОС Linux не повязана з поведінкою обробника системних викликів Додавання нового системного виклику в операційній системі Linux є порівняно простою справою Важка робота повязана з розробкою і реалізацією самого системного виклику Реєстрація його в ядрі проста Давайте розглянемо кроки, які необхідно вжити, щоб написати новий системний виклик в операційній системі Linux

Планувальники введення-виведення

Проста відправка запитів на пристрій введення-виведення в тому ж порядку, в якому ці запити направляє ядро, призводить до дуже поганий продуктивності Одна з найбільш повільних операцій, які взагалі можуть бути в компютері, – це пошук по жорсткому диску Операція пошуку – це позиціонування головки жорсткого диска на певний блок, яке може запять багато мілісекунд Мінімізація […]

Рівень подій ядра

(kernel event layer) – це підсистема, яка дозволяє передавати інформацію про різні події з ядра в простір користувача і реалізована, як ви вже, напевно, здогадуєтеся, на базі обєктів kobject Після випуску ядра версії 260 стало ясно, що необхідний механізм для відправлення повідомлень з ядра в простір користувача, зокрема для настільних робочих компютерів, що дозволить зробити […]