博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读LDD3,内存映射与DMA--PAGE_SHIFT,页帧号。
阅读量:5140 次
发布时间:2019-06-13

本文共 663 字,大约阅读时间需要 2 分钟。

一,linux系统处理的地址类型

1,用户虚拟地址:

这是用户空间程序见到的常规地址。每个进程都有自己的虚拟地址空间

2,物理地址

物理地址用于处理器和系统内存之间

3,总线地址

总线地址在外围总线和内存这间使用

4,内核逻辑地址

内核逻辑地址组成了内核的常规地址空间。它一对一的映射部分或全部系统内存。

在大多数架构中,内核逻辑地址与物理地址的不同,仅是它们之间存在一个固定的偏移。

kmalloc 分配的就是逻辑地址,__get_free_pages?

5,内核虚拟地址。

它与内核逻辑地址的不同这处在于,内核虚拟地址不是一一对应到物理地址。

内核虚拟地址空间是连续,但其映射的物理地址可以是离散的。内核逻辑地址是连续的,其它映射的物理地址也是连续的。

vmalloc,kmap返回的是内核虚拟地址。

内核逻辑地址都 是内核虚拟地址,但不是所有内核虚拟地址都是内核逻辑地址。

二,页

物理地址被分成离散单元,每个单元称为一页。页的大小,由宏PAGE_SIZE来表示

三,PAGE_SHIFT,页帧号

内核地址,无论是虚拟的还物理的,其都由两部分组成。往往是高N位是页号,低M位是页内的偏移量。

当我们将地址中的低M位偏移量抛弃不用,高N位的页号,移到右端,得到这个结果称页帧号。

移动位以在页帧数和地址之间转换是一个常用操作。宏PAGE_SHIFT, 告诉我们要右移多少位得到页帧号。

转载于:https://www.cnblogs.com/chingliu/archive/2011/09/09/2223795.html

你可能感兴趣的文章
如何免费上传4G以上大文件至百度云网盘
查看>>
webstorm激活
查看>>
PHP 二叉树 二叉排序树实现
查看>>
GridView 动态列上方添加相应的Combox等控件
查看>>
申请开发者账号
查看>>
oracle启动
查看>>
c++模板学习
查看>>
【转】MySQL Event
查看>>
[转]html5监听任何App自带返回键javascript事件
查看>>
mongodb数据备份与还原
查看>>
mysql 按 in 顺序排序
查看>>
web的知识点总结
查看>>
codeforces 193 D Two Segments
查看>>
CentOS 7镜像下载
查看>>
iostat监控io
查看>>
Java练习题
查看>>
Servlet过滤器详解
查看>>
iOS常用小控件集合
查看>>
前端开发过程中需要优化的问题
查看>>
UVa 825 Walking on the Safe Side(DP)
查看>>