Шрифт:
Зоны
В связи с ограничениями аппаратного обеспечения, ядро не может рассматривать все страницы памяти как идентичные. Некоторые страницы, в связи со значениями их физических адресов памяти, не могут использоваться для некоторых типов задач. Из-за этого ограничения ядро делит физическую память на зоны. Ядро использует зоны, чтобы группировать страницы памяти с аналогичными свойствами. В частности, операционная система Linux должна учитывать следующие недостатки аппаратного обеспечения, связанные с адресацией памяти.
• Некоторые аппаратные устройства могут выполнять прямой доступ к памяти (ПДП, DMA, Direct Memory Access) только в определенную область адресов.
• На некоторых аппаратных платформах для физической адресации доступны большие объемы памяти, чем для виртуальной адресации. Следовательно, часть памяти не может постоянно отображаться в адресное пространство ядра.
В связи с этими ограничениями, в операционной системе Linux выделяют три зоны памяти.
•
•
•
Эти зоны определяются в заголовочном файле
То, как используется разделение памяти на зоны, зависит от аппаратной платформы. Например, для некоторых аппаратных платформ нет проблем с прямым доступом к памяти ни по какому адресу. Для таких платформ зона
Как противоположный пример можно привести платформу x86, для которой устройства ISA [61] не могут выполнять операции DMA в полном 32-разрядном пространстве адресов, так как устройства ISA могут обращаться только к первым 16 Мбайт физической памяти. Следовательно, зона
Аналогично используется и зона
61
Некоторые некачественные устройства PCI также могут выполнять прямой доступ к памяти только к 24-битовом адресном пространстве. Но эти устройства работают не правильно.
62
Это не имеет ничего общего с верхней памятью в операционной системе DOS.
Зона
Таблица 11.1. Зоны памяти для аппаратной платформы x86
Зона | Описание | Физическая память |
---|---|---|
ZONE_DMA | Страницы памяти, совместимые с ПДП | < 16 Мбайт |
ZONE_NORMAL | Нормально адресуемые страницы | 16 - 896 Мбайт |
ZONE_HIGHMEM | Динамически отображаемые страницы | > 896 Мбайт |
Операционная система разделяет страницы системной памяти на зоны, чтобы иметь пулы страниц для удовлетворения требований выделения памяти. Например, пул зоны
Хотя некоторые запросы на выделение памяти могут требовать страницы из определенной зоны, это требование не обязательно может быть жестким. Например, выделение памяти для ПДП требует страницы из зоны
Каждая зона представлена с помощью структуры