Книга: Разработка ядра Linux
Сравнение старой и новой реализаций
Сравнение старой и новой реализаций
Между заголовками буферов и новой структурой bio
существуют важные отличия. Структура bio
представляет операцию ввода-вывода, которая может включать одну или больше страниц в физической памяти. С другой стороны, заголовок буфера связан с одним дисковым блоком, который занимает не более одной страницы памяти. Поэтому использование заголовков буферов приводит к ненужному делению запроса ввода-вывода на части, размером в один блок, только для того, чтобы их потом снова объединить. Работа со структурами bio выполняется быстрее, эта структура может описывать несмежные блоки и не требует без необходимости разбивать операции ввода-вывода на части.
Переход от структуры struct buffer_head
к структурам struct bio
позволяет получить также и другие преимущества.
• Структура bio
может легко представлять верхнюю память (см. главу 11), так как структура struct bio
работает только со страницами физической памяти, а не с указателями.
• Структура bio
может представлять как обычные страничные операции ввода- вывода, так и операции непосредственного (direct) ввода-вывода (т.е. те, которые не проходят через страничный кэш; страничный кэш обсуждается в главе 15).
• Структура bio
позволяет легко выполнять операции блочного ввода-вывода типа распределения-аккумуляции (scatter-gather), в которых данные находятся в нескольких страницах физической памяти.
• Структура bio
значительно проще заголовка буфера, потому что она содержит только минимум информации, необходимой для представления операции блочного ввода-вывода, а не информацию, которая связана с самим буфером.
Тем не менее заголовки буферов все еще необходимы для функций, которые выполняют отображение дисковых блоков на страницы физической памяти. Структура bio
не содержит никакой информации о состоянии буфера, это просто массив векторов, которые описывают один или более сегментов данных одной операции блочного ввода-вывода, плюс соответствующая дополнительная информация. Структура buffer_head
необходима для хранения информации о буферах. Применение двух отдельных структур позволяет сделать размер обеих этих структур минимальным.
- 6.3. Добавление фоновой музыки
- Отличительные особенности новой версии
- 8.1.4. Сравнение массивов
- 4.2 Сравнение SAN и NAS
- Сравнение C# и C++
- 1.1. Схема и основные этапы разработки новой продукции
- 1.2.1. Выбор вида туризма и ценовой категории будущего турпродукта
- После переустановки Windows нет доступа к папке Мои документы или нельзя удалить оставшуюся от старой системы папку Docu...
- 2.3. МЕТОДЫ СИНТЕЗА ВАРИАНТОВ РЕАЛИЗАЦИЙ ПРОГРАММ
- Создание новой базы данных
- Практическая работа 59. Создание новой учетной записи и изучение действующих разграничений доступа к файлам
- 3.2. Сравнение операционных систем