Linux-Speicherverwaltung (10): Ausführliche Erklärung des reservierten Speichers

Quellcode basierend auf: Linux5.4

0. Vorwort

Während der Kernel ausgeführt wird, wird der physische Speicher im Kernel zunehmend fragmentiert. Der von einigen bestimmten Geräten verwendete DMA erfordert jedoch eine große Menge zusammenhängenden physischen Speichers, was dazu führen kann, dass das Gerät blockiert wird, wenn es tatsächlich verwendet wird. Dies ist offensichtlich der Fall Es ist inakzeptabel, dass der physische Speicher, der den Anforderungen entspricht, nicht genutzt werden kann.

Die einfachste Möglichkeit besteht darin, einen Teil des physischen Speichers für ein bestimmtes Gerät zu reservieren. Dieser Teil des Speichers wird nicht vom System verwaltet und ist an das bestimmte Gerät gebunden. Dieser Teil des Speichers wird verwaltet, wenn das Gerät verwendet werden muss Dies ist im Kernel vorgesehen. Der reservierte Speichermechanismus ist ein relativ traditioneller Speicherreservierungsmechanismus im Kernel.

In tatsächlichen Anwendungen ist die Speicherreservierung für ein bestimmtes Gerät relativ einfach zu implementieren und durchzuführen, weist jedoch einen offensichtlichen Nachteil auf: Gerade weil dieser Teil des Speichers nicht vom System verwaltet werden kann, verursacht er eine gewisse Verschwendung, wenn das Gerät dies nicht tut Dieser Teil des Speichers kann nicht verwendet werden. Die ideale Situation sollte sein: Wenn der reservierte Speicher nicht verwendet wird, kann er auch vom System verwendet werden, und wenn das Gerät verwendet werden muss, wird dies der Fall sein an sein gebundenes Gerät zurückgegeben. Dieser Mechanismus zum Reservieren von Speicher ist in Bezug auf die Implementierung relativ komplex, verbessert jedoch die Speichernutzung erheblich. Dies ist der CMA- Mechanismus im Kernel.

Dieser Artikel konzentriert sich auf die Analyse des reservierten Speichers im Kernel, nicht nur der in dts konfigurierten Knoten, sondern auch anderer reservierter Speicher im Kernel.

1. Konfiguration des reservierten Speichers

In früheren Kerneln mussten reservierte Speicheroperationen über die Befehlszeile an den Kernel übergeben werden, während sie sich im Kernel-Unterstützungsgerätebaum befanden

Ich denke du magst

Origin blog.csdn.net/jingerppp/article/details/132321017
Empfohlen
Rangfolge