linux – 连续的内存块如何减少内存访问时间?
发布时间:2020-12-13 23:20:49 所属栏目:Linux 来源:网络整理
导读:当我们使用kmalloc()时,这个函数返回连续的内存物理块(如果可用)和vmalloc(),我们得到非连续的内存块(如果可用). 进一步指出,与非连续的存储器块[Source Link]相比,连续存储器块的访问更快. 更具体地说,让我们考虑两种情况: 设1个物理帧= 4 KB,页面大小= 4
当我们使用kmalloc()时,这个函数返回连续的内存物理块(如果可用)和vmalloc(),我们得到非连续的内存块(如果可用).
进一步指出,与非连续的存储器块[Source Link]相比,连续存储器块的访问更快. 更具体地说,让我们考虑两种情况: 设1个物理帧= 4 KB,页面大小= 4 KB 情况1: 案例2: 我的问题是: a)与vmalloc()相比,kmalloc()如何花费更少的时间来完成请求? b)与非连续分配相比,连续分配如何导致内存的快速访问? 在每种情况下,CPU生成虚拟地址,给MMU(如果TLB未命中),执行页面遍历,识别帧编号,然后将虚拟地址转换为物理地址.地址是连续的还是非连续的,这有什么关系? 解决方法
对于kmalloc,整个物理RAM已经以1:1映射到offset1,即物理RAM地址N映射到虚拟地址N PAGE_OFFSET.这使得使用kmalloc的分配比使用vmalloc更简单,因为vmalloc必须找到空闲页面并设置页面表,以便将页面映射到连续的地址块.
访问kmalloc与vmalloc分配的内存时访问时间没有区别,除了您链接到的文档中提到的页面错误. 1除了物理内存多于适合内核的虚拟地址空间的系统外. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |