Was ist der Unterschied zwischen kmem_cache_alloc
und kmalloc()
in Kernel-Speicherzuweisung? welcher wird wann benutzt?Unterschied zwischen kmalloc und kmem_cache_alloc
Antwort
Kmalloc - weist zusammenhängende Bereiche dem physischen Speicher zu. Aber denken Sie daran, das Zuweisen und Freigeben von Speicher ist eine Menge Arbeit.
Kmem_cache_alloc - Hier werden einige Kopien der vordefinierten Größenobjekte gespeichert. Angenommen, Sie haben eine Struktur, von der Sie wissen, dass sie sehr häufig benötigt wird. Anstatt sie aus dem Hauptspeicher (kmalloc) zuzuweisen, wenn Sie sie benötigen, behalten Sie bereits mehrere Kopien davon & zugewiesen, wenn Sie möchten der Block bereits zugewiesen (spart viel Zeit). Ebenso, wenn Sie es freigeben, geben Sie es nicht zurück, es ist tatsächlich nicht frei, es geht zurück zum zugeteilten Pool, so dass, wenn ein Prozess erneut danach fragt, Sie diese Adresse des bereits zugeteilten zurückgeben können Struktur.
kmalloc: Es verwendet die generischen Slab-Caches, die für jeden Kernel-Code verfügbar sind. Ihr Modul teilt also den Plattencache mit anderen Komponenten im Kernel.
kmem_cache_alloc: Es wird von kmem_cache_create erstellte Objekte aus einer eigenen Platte Cache zuweisen. Wenn Sie speziell ein besseres Platten-Cache-Management speziell für Ihr Modul wünschen, verwenden Sie auch für einen bestimmten Objekttyp kmem_cache_create gefolgt von kmem_cache_alloc. USB/SCSI-Treiber verwenden dies. kmem_cache_create nimmt die Größe Ihres Objekts an, das Sie erstellen möchten, einen Namen, der in/proc/slabinfo erscheint, und Flags, um das Verhalten Ihres Plattencaches zu bestimmen.
Ref: https://www.mail-archive.com/[email protected]/msg13191.html & LDD
- 1. KMALLOC Größenzuordnung
- 2. Unterschied zwischen Vorzeichen & und *?
- 3. VBA: Unterschied zwischen & und +
- 4. Unterschied zwischen "**/* /" und "** /"?
- 5. Unterschied zwischen $ # und $ {# @}
- 6. Unterschied zwischen = und: =
- 7. Unterschied zwischen '#', '%' und '$'
- 8. MySQL: Unterschied zwischen ', `,' und '
- 9. C++ Unterschied zwischen '//' und '///'
- 10. Unterschied zwischen String.Empty und ""
- 11. Unterschied zwischen `% in%` und `==`
- 12. Unterschied zwischen numpy.logical_and und &
- 13. Unterschied zwischen. und #
- 14. Unterschied zwischen // und http: //
- 15. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 16. Unterschied zwischen Wörterbuch und Hashtable
- 17. Unterschied zwischen FetchMode und FetchType
- 18. Unterschied zwischen Application_Start und Application_OnStart
- 19. Unterschied zwischen Uint8Array und Uint8ClampedArray
- 20. Unterschied zwischen BOOST_CHECK_CLOSE und BOOST_CHECK_CLOSE_FRACTION?
- 21. Unterschied zwischen Suche und Index
- 22. Unterschied zwischen AJAX und Senden
- 23. Unterschied zwischen Spekulation und Vorhersage
- 24. Unterschied zwischen inproc und outproc
- 25. Unterschied zwischen Clojure und Clojurescript?
- 26. Unterschied zwischen NSArray und NSMutableArray
- 27. Unterschied zwischen libcurl und libsoup
- 28. Unterschied zwischen DirectoryCatalog und AssemblyCatalog
- 29. Unterschied zwischen * y ++ und ++ * y?
- 30. Unterschied zwischen SwingWorker und SwingUtilities.invokeLater
kmem_cache Funktionen in [Gerätetreiber Linux] (http://www.makelinux.net/ldd3/?u=chp-8-sect-2) –