分配连续物理内存的原因
来源:互联网 发布:克雷斯波 知乎 编辑:程序博客网 时间:2024/05/17 08:59
在分配内存时,系统会尽量给我们分配连续的物理内存,这样有什么好处呢?我知道的有如下2条:
在分页机制打开的情况下,系统访问内存的典型流程为:
补充:
以上讨论的系统访问物理内存流程是一种典型情况,在真实系统中,系统可能先访问系统cache(L1、L2)再访问TLB,这主要决定于系统cache(L1、L2)使用的地址是物理地址还是线性(虚拟)地址。若cache采用的是线性地址,则系统先访问cache再访问TLB;若cache采用的物理地址,则系统先访问TLB再访问cache。
1、DMA不使用页表机制,因此必须分配连续的物理内存。上面第1条很容易理解,我主要说明下第2条:
2、使用连续物理内存可以提高系统整体性能。
在分页机制打开的情况下,系统访问内存的典型流程为:
1、根据提供的线性地址访问系统TLB,看是否能够命中(hit)。如果系统分配连续的物理内存,则对应的线性地址一般也是连续的,这样在多数情况下,连续的线性地址可以通过相同的页目录项、页表来转换成物理地址,这就提高了访问TLB的命中率,同时,连续的物理地址也可以提高系统cache的命中率。
2、若访问TLB命中(hit),则可以直接得到线性地址对应的物理地址,执行步骤4;否则执行步骤3。
3、访问TLB未命中,则系统会读取内存中的页目录、页表,通过页目录、页表来把线性地址转换为对应的物理地址,同时利用淘汰算法把页目录、也表信息写入TLB以便以后快速进行地址转换。
4、系统用这个物理地址到系统cache(L1、 L2)中查找物理页。
5、如果在系统cache中找到物理页则直接读取或写入该物理页,如果没有则从物理内存中读取或写入同时利用淘汰算法将物理内存放入系统cache。
注意:以上的步骤可能会有一些并行性。
补充:
以上讨论的系统访问物理内存流程是一种典型情况,在真实系统中,系统可能先访问系统cache(L1、L2)再访问TLB,这主要决定于系统cache(L1、L2)使用的地址是物理地址还是线性(虚拟)地址。若cache采用的是线性地址,则系统先访问cache再访问TLB;若cache采用的物理地址,则系统先访问TLB再访问cache。
- 分配连续物理内存的原因
- 分配连续物理内存的原因
- 分配连续物理内存的原因
- 物理内存连续内存分配
- 在内核中分配连续的物理内存
- linux驱动中分配连续物理内存
- 物理内存的分配
- 操作系统的学习(2)——物理内存管理:连续内存分配
- 操作系统的学习(3)——物理内存管理:非连续内存分配
- Linux系统下,能保证物理空间上连续的内存分配函数是?
- cma --- linux驱动中分配连续物理内存
- 内存的连续分配与回收算法
- malloc分配的内存是否连续
- 内核分配大块连续内存的方法
- linux内核虚拟内存之高端物理内存与非连续内存分配
- 连续内存块分配
- 连续内存分配
- win32下的内存分配失败原因
- linux虚拟内存管理简要总结
- 网页中如何使超出页面大小的图片自动适合页面宽度?
- 改变端口后,怎么打开以前创建的项目?
- QTP资料整理清单
- VS2008简体中文版下载(及升级为正式版办法,见截图)
- 分配连续物理内存的原因
- 用MD5的JAVABEAN实现文件的加密
- PHP的PDO类教程
- xp下安装linux双系统
- jQuery插件收集
- Spring 调度任务
- 通过API实现C#对硬件的控制(一)
- 加载窗体显示一个进度条的实现
- 如何分辨翻新机 - 诺基亚5610论坛 - 诺基亚手机论坛 —糯米智能手机论坛|最专业的诺基亚手机交流论坛