Chinaunix首页 | 论坛 | 博客
  • 博客访问: 105266
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 184
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-20 11:19
个人简介

学习内核中~

文章分类

全部博文(17)

文章存档

2013年(17)

我的朋友

分类: LINUX

2013-06-18 14:51:26

在32位系统中,内核地址空间从0xC0000000开始,前896M叫做内核逻辑地址,后128M叫做内核虚拟地址。内核逻辑地址与物理内存进行线性映射,而内核虚拟地址则进行动态映射。那为什么需要这128M的内核虚拟地址?
假设你的机器有2G的内存,如果不存在内核虚拟地址,内核地址空间全部采用线性映射的方式映射到物理内存的头1G,要知道物理内存是有可能被各个用户进程使用的,这就可能导致当内核想分配内存的时候,会发现物理内存的头1G已经没有空闲内存了,而后1G却有空闲空间,但是此时内核是无法触及后1G的物理内存的,因此这时候就需要内核虚拟地址,通过动态映射来使用全部的物理内存。
至于64位系统就不存在这样的问题了,因为内核地址空间远大于实际的物理内存。
阅读(2239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~