Gestión de memoria de Linux (10): explicación detallada de la memoria reservada

Código fuente basado en: Linux5.4

0. Prefacio

A medida que se ejecuta el kernel, la memoria física del kernel se fragmenta cada vez más, sin embargo, el DMA utilizado por algunos dispositivos específicos requiere una gran cantidad de memoria física contigua, lo que puede causar que el dispositivo se bloquee cuando realmente se usa. Es inaceptable no poder utilizar la memoria física que cumple con los requisitos.

La forma más sencilla es reservar una parte de la memoria física para un dispositivo específico. Esta parte de la memoria no es administrada por el sistema y está vinculada al dispositivo específico. Esta parte de la memoria se administra cuando el dispositivo necesita ser utilizado. Esto es lo que se proporciona en el kernel. El mecanismo de memoria reservada es un mecanismo de reserva de memoria relativamente tradicional en el kernel.

En aplicaciones reales, reservar memoria para un dispositivo específico es relativamente sencillo de implementar y operar, pero tiene una deficiencia obvia: precisamente porque esta parte de la memoria no puede ser administrada por el sistema, causa una cierta cantidad de desperdicio cuando el dispositivo no está en uso., esta parte de la memoria no se puede usar, y la situación ideal debería ser: cuando la memoria reservada no esté en uso, el sistema también puede usarla, y cuando sea necesario usar el dispositivo, será devuelto a su dispositivo vinculado. Este mecanismo de reserva de memoria es relativamente complejo en términos de implementación, pero mejora enormemente la utilización de la memoria. Este es el mecanismo CMA en el kernel.

Este artículo se centrará en el análisis de la memoria reservada en el kernel, no solo los nodos configurados en dts, sino también otras memorias reservadas en el kernel.

1. Configuración de la memoria reservada

En kernels anteriores, las operaciones de memoria reservada debían pasarse al kernel a través de la línea de comando, mientras que en el árbol de dispositivos de soporte del kernel

Supongo que te gusta

Origin blog.csdn.net/jingerppp/article/details/132321017
Recomendado
Clasificación