内存可以怎么用?
kmalloc:内核最常用,用于频繁使用的小内存申请
alloc_pages:以页框为单位申请,物理内存连续
vmalloc:虚拟地址连续的内存块,物理地址不连线
dma_alloc_coherent:常用于dma操作buffer,不带cache
ioremap:把已知未映射的物理地址映射到虚拟地址,比如设备寄存器地址
使用ION分配:大于4M的buffer,buffer共享实现零拷贝
ARM处理器内核的MMU包括TLB和页表遍历单元(Table Wak Unit)两个部件。TLB是一个高速缓存,用于缓存页表转换的结果,从而减少页表查询的时间。一个完整的页表翻译和查找过程叫作页表查询,页表查询的过程由硬件自动完成,但是页表的维护需要软件来完成。 页表查询是一个较耗时的过程,理想状态下,TLB里应存有页表的相关信息。当TLB未命中时,MMU才会查询页表,从而得到翻译后的物理地址。而页表通常存储在主存储器中。得到物理地址之后,首先需要查询该物理地址的内容是否在高速缓存中有新的副本。如果没有,则说明高速缓存未命中,需要访问主存储器。
