分配连续物理内存的原因
来源:互联网 发布:淘宝卖旧丝袜的暗语 编辑:程序博客网 时间:2024/05/12 20:17
在分配内存时,系统会尽量给我们分配连续的物理内存,这样有什么好处呢?我知道的有如下2条:
1、DMA不使用页表机制,因此必须分配连续的物理内存。
2、使用连续物理内存可以提高系统整体性能。
上面第1条很容易理解,我主要说明下第2条:
在分页机制打开的情况下,系统访问内存的典型流程为:
1、根据提供的线性地址访问系统TLB,看是否能够命中(hit)。
2、若访问TLB命中(hit),则可以直接得到线性地址对应的物理地址,执行步骤4;否则执行步骤3。
3、访问TLB未命中,则系统会读取内存中的页目录、页表,通过页目录、页表来把线性地址转换为对应的物理地址,同时利用淘汰算法把页目录、也表信息写入TLB以便以后快速进行地址转换。
4、系统用这个物理地址到系统cache(L1、 L2)中查找物理页。
5、如果在系统cache中找到物理页则直接读取或写入该物理页,如果没有则从物理内存中读取或写入同时利用淘汰算法将物理内存放入系统cache。
注意:以上的步骤可能会有一些并行性。
如果系统分配连续的物理内存,则对应的线性地址一般也是连续的,这样在多数情况下,连续的线性地址可以通过相同的页目录项、页表来转换成物理地址,这就提高了访问TLB的命中率,同时,连续的物理地址也可以提高系统cache的命中率。
补充:
以上讨论的系统访问物理内存流程是一种典型情况,在真实系统中,系统可能先访问系统cache(L1、L2)再访问TLB,这主要决定于系统cache(L1、L2)使用的地址是物理地址还是线性(虚拟)地址。若cache采用的是线性地址,则系统先访问cache再访问TLB;若cache采用的物理地址,则系统先访问TLB再访问cache。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gxfan/archive/2008/10/22/3122501.aspx
- 分配连续物理内存的原因
- 分配连续物理内存的原因
- 分配连续物理内存的原因
- 物理内存连续内存分配
- 在内核中分配连续的物理内存
- linux驱动中分配连续物理内存
- 物理内存的分配
- 操作系统的学习(2)——物理内存管理:连续内存分配
- 操作系统的学习(3)——物理内存管理:非连续内存分配
- Linux系统下,能保证物理空间上连续的内存分配函数是?
- cma --- linux驱动中分配连续物理内存
- 内存的连续分配与回收算法
- malloc分配的内存是否连续
- 内核分配大块连续内存的方法
- linux内核虚拟内存之高端物理内存与非连续内存分配
- 连续内存块分配
- 连续内存分配
- win32下的内存分配失败原因
- Linux静态/动态链接库的创建和使用
- 20110616
- _LINUX_HASH_H头文件
- 敏捷开发-工程实践类的学习资料
- 一次ORA-3136的处理
- 分配连续物理内存的原因
- Arachne WWW Browser Dos
- effective java 学习笔记
- C/C++宏定义中井号(#)的含义
- 绘制几何图形——使用android.graphics类 onDraw
- mysql 查询某个字段有重复记录,并显示出具体的记录信息
- ubuntu下安装Java并设置环境变量
- 遇到ORA-3136的解决之道
- sql 多行转成一行