Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17804
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-09 21:20
文章分类
文章存档

2014年(4)

我的朋友

分类: LINUX

2014-04-13 22:39:24

    对于支持MMU的平台,linux使用虚拟内存进行内存管理操作!在linux下内存主要分为:系统调用systemcall,内存映射mmap,内存交换swap,核心内存管理core,平台特定结构MMU,物理内存。针对这些模块之间交互主要靠一下一些机制:地址映射,请求页操作,内存分配和释放,缓存和刷新,页面交换,内存共享。
    linux虚拟空间支持4G,其中0~3G为每个进程独立的用户空间,3G~4G为每个进程共享的内核空间。不管用户空间,还是内核空间,都为虚拟地址,由编译连接时决定!当物理内存小雨896MB时,内核虚拟空间与物理空间存在线性关系,直接+-PAGE_OFFSET即可;另外,内核虚拟空间映射到物理地址总是从最低地址开始。系统启动时,内核映像被加载在0x00100000(不同平台不一样)的地方,对应的虚拟地址为0xc0100000,前面保留的空间留作它用。
    进程的页目录PGD处于内核空间,进程切换时,寄存器CR3会写入新的进程PGD,需要注意的是CR3使用的是物理地址。

阅读(1168) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~