Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射

现在假设有这么一段代码:

 

void main()

{

int a = 100;

cout<<&a<<endl;

}

 

如果编译执行,先打印地址,假设是0x12345678。那么,这个地址,是逻辑地址呢,还是线性地址,亦或是物理地址呢?

 

    首先我们需要引入一些别的东西。在英特尔的X86体系下,从他的发展可以看出他是从实模式向保护模式发展的,内存管理是从分段是管理往分页式管理的。既然是一个体系,后来的东西必须要能够兼容前面的东西。就像word2007一定能够兼容word2003一样。在i386之前的操作系统里,存在着段寄存器比如CS(代码段寄存器),DS(数据段寄存器),SS(堆栈段寄存器)。IP(偏移量)等。

 

      来说说实模式:

    实模式依然是段式管理,存在着段寄存器和IP寄存器。32位系统的地址总线是20条,但是段寄存器是从X86体系下继承过来的,那么段寄存器的大小是16位,规定每个内存段的起始地址必须是16的倍数,那么一个段的物理内存为2^16=64K。但是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值