关于内核空间地址映射问题
来源:互联网 发布:java log4j用法 编辑:程序博客网 时间:2024/05/22 14:30
在前面系列中讲过,内核空间对所有的进程都是共享的,其中存放的是内核的代码和数据。
也说过,内核空间占据了每个虚拟内存空间的最高1GB字节,那么它是怎样映射到物理地址中的呢?
掌握到了用户空间的地址是用分页机制来映射的,那么内核空间呢?
内核空间的1GB空间有着独特的方法,它映射到物理内存总是从最低地址0x000000000开始的。之所以这么规定,是为了在内核空间和物理内存之间建立简单的线性映射关系。那么3GB=(0xc0000000)可想就是内核虚拟地址和物理地址之间的偏移量,(举个例子:如果某个虚拟地址为0xc0001000,那么它所映射的物理地址是多少呢?就是
0xC0001000-3GB(0xC0000000)=0x00001000(物理地址)。
在linux中,这个偏移3GB叫做PAGE_OFFSET
#define _PAGE_OFFSET 0xc000000
#define PAGE_OFFSET ((unsigned long)_PAGE_OFFSET)
#define __pa(x) ((unsigned long )(x-PAGE_OFFSET)) 虚转物
#define __va(x) ((unsigned long ) (x+PAGE_OFFSET)) (这里的x为物理地址) 物转虚
这个线性关系只是适合在内核空间的虚拟地址(0xC0000000-0xFFFFFFFF)!!
0 0
- 关于内核空间地址映射问题
- 为何要把物理内存地址映射到内核空间?
- Linux 内核空间地址映射 高端内存 总结
- Linux内核中IO地址空间映射实例
- 进程地址空间映射
- IA32地址空间映射
- IA32地址空间映射
- linux内核地址映射
- linux 内存映射 remap_pfn_range操作(内核地址映射到用户空间)
- 地址空间、内核空间、IO地址空间
- 地址空间、内核空间、IO地址空间
- 内核态空间地址直接映射到用户态空间访问
- 内核态空间地址直接映射到用户态空间访问
- 内核态空间地址直接映射到用户态空间访问
- 关于windows中进程地址空间问题
- Linux内核地址空间
- linux内核地址空间
- Linux内核地址空间
- 为用户控件动态增加事件
- 【HDU】4901 The Romantic Hero 01背包
- OpenCV学习之例程详解(03):搜索文件夹下所有指定类型图片并逐张显示
- Cocos2d-x 3.1.1 之 MessageBox、LabelTTF、菜单、
- 自定义控件---------ViewPager的一个小案例
- 关于内核空间地址映射问题
- 九度OJ-题目1010:A + B
- POJ 1789 Truck History(Prim)
- linux驱动____LED子系统笔记
- C++笔试题目大全
- POJ 1287 Networking(最小生成树)
- HDU 4902 Nice boat
- C# 图片和byte[]的互相转换
- EBS条形码打印