Chinaunix首页 | 论坛 | 博客
  • 博客访问: 429113
  • 博文数量: 247
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-10 10:39
文章分类

全部博文(247)

文章存档

2015年(3)

2014年(21)

2013年(53)

2012年(170)

分类:

2012-10-17 12:58:10

原文地址:linux 内存管理之简单分析 作者:wch100

逻辑地址:是汇编代码中的地址,把用户程序中使用的地址称为相对地址即逻辑地址。
X86体系
段式管理(16位)
逻辑地址要求:逻辑段的起始地址(段地址)必须是16的倍数,即最后4个二进制位必须全为0;逻辑段的最大容量是64K
其中逻辑地址 = 段基址 + 段内偏移量
物理地址PA = 段寄存器值*16 + 逻辑地址的偏移量
注意:段寄存器本来是16位而地址为20位后4位全是0所以默认将后4位去掉来存储在段寄存器中
分页管理
分页管理针对的是线性地址而言的。
线性地址被分成固定长度的组,成为分页----->虚拟的东西
分页单元把所有的物理内存也划分为固定长度的管理单元,它的长度与线性地址页是相同的。
物理页又叫页帧或叶框:
两级模式:线性地址
 
    31               22 21             12 11         0
1:cr3寄存器与线性地址的高10位形成一个页目录
2:页目录中的单元与线性地址的中间10位形成页表的基地址---->物理页的基地址
3:页表与线性地址的低12位形成一个页
注意:cr3寄存器是在创建进程时保存页目录,页表等值的
 
linux体系
linux有限度的使用分段机制,对页式管理则是完全使用,所有的段基址都是0,逻辑地址和线性地址保持一致,逻辑地址的偏移量字段与线性地址的值总是相同的。
阅读(156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~