Почему непрерывное выделение памяти требуется в Linux? - PullRequest
1 голос
/ 02 июня 2019

Большинству устройств требуется непрерывная память.Например, GPU, VPU.

CMA и распределение статической памяти являются примерами непрерывной памяти.

Почему требуется непрерывная память?

1 Ответ

2 голосов
/ 02 июля 2019

Непрерывное выделение памяти (CMA) необходимо для устройств ввода-вывода, которые могут работать только с непрерывными диапазонами физической памяти. В системах с блоком управления памятью ввода / вывода (IOMMU) это не будет проблемой, поскольку IOMMU может отображать буфер, который является непрерывным в адресном пространстве устройства, в несмежные области физической памяти. Кроме того, некоторые устройства могут рассеивать / собирать DMA (то есть могут считывать / записывать из / в несколько несмежных буферов). В идеале все устройства ввода-вывода должны быть спроектированы так, чтобы они работали за IOMMU или были способны к рассеянию / сбору DMA. К сожалению, это не так, и есть устройства, которые требуют физически смежные буферы. Для драйвера устройства есть два способа выделить непрерывный буфер:

  • Драйвер устройства может выделить часть физической памяти во время загрузки. Это надежно, потому что большая часть физической памяти будет доступна во время загрузки. Однако, если устройство ввода-вывода не используется, выделенная физическая память просто теряется.
  • Кусок физической памяти может быть выделен по требованию, но может быть трудно найти непрерывный свободный диапазон требуемого размера. Однако преимущество заключается в том, что память выделяется только при необходимости.

CMA решает эту точную проблему, предоставляя преимущества обоих этих подходов без их недостатков. Основная идея состоит в том, чтобы сделать возможным перенести выделенные физические страницы, чтобы создать достаточно места для непрерывного буфера. Более подробную информацию о том, как работает CMA, можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...