У цьому розділі були розглянуті основи роботи пристроїв блокового введення-виведення, а також структури даних, що використовуються для роботи рівня введення-виведення блоками: структура bio. яка представляє виконувану операцію введення-виведення; структура buffer_head. яка представляє відображення блоків на сторінки пам'яті; структура request. яка являє собою окремий запит вводу-виводу. Після розгляду запитів вводу-виводу був описаний їх короткий, але важливий шлях, кульмінацією якого є проходження через планувальник вводу-виводу. Були розглянуті дилеми, що виникають при плануванні операцій введення-виведення, і чотири типи планувальника, які на даний момент існують в ядрі Linux, а також планувальник введення виведення з ядра 2.4 - ліфтової алгоритм Лінуса.
Області пам'яті можуть містити наступну потрібну інформацію.
• Відображення виконуваного коду з виконуваного файлу в область пам'яті процесу, яка називається сегментом коду (text section).
• Відображення ініціалізованих змінних з виконуваного файлу в область пам'яті процесу, яка називається сегментом даних (data section).
• Відображення сторінки пам'яті, заповненої нулями, в область пам'яті процесу, яка містить неініціалізовані глобальні змінні і називається сегментом bss [79] (bss section). Нульова сторінка пам'яті (zero page, сторінка пам'яті, заповнена нулями) - це сторінка пам'яті, яка повністю заповнена нульовими значеннями і використовується, наприклад, для зазначеної вище мети.
• Відображення сторінки пам'яті, заповненої нулями, в пам'ять процесу, яка використовується в якості стека процесу простору користувача (не потрібно плутати зі стеком процесу в просторі ядра, який є окремою структурою даних і управляється і використовується ядром).
• Всі файли, вміст яких відображено в пам'ять.
• Всі області спільно використовуваної пам'яті.
• Всі анонімні відображення в пам'ять, як, наприклад, пов'язані з функцією malloc () [80].
дескриптор пам'яті
struct vm_area_struct * mmap; / * Список областей пам'яті * /
struct rb_root mm_rb; / * Червоно-чорне дерево