虚拟地址

虚拟地址

虚拟地址是程序运行在保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址。

那为什么需要虚拟地址呢

我们要说到寻址方式
寻址:根据指令内容确定操作数地址的过程,称为寻址

在16位的cup或者8086cpu的时候,他寻址方式的模式为:实模式
而在32位或者64位,寻址方式的模式为:保护模式

实模式

我们先来看一下实模式下程序的运行
例:

在这里插入图片描述
如图,在实模式中,A程序和B程序从磁盘直接加载进内存中运行,我们所看到或者得到的就是物理地址,我们都知道内存是连续的,现在假设A程序是恶意程序,他现在可以通过自己运行时所获取的物理地址加上偏移就可以进入B程序中,可以篡改B程序的指令或者数据,导致B程序崩溃或者出错

保护模式

我们继续来看一下保护模式下程序的运行
例:

在这里插入图片描述
在保护模式中,在程序从磁盘加载进内存的中间加了一个中间层,即就是虚拟地址,在程序编译,链接的时候先映射进虚拟地址,在运行的时候会在映射进物理地址

这样的模式好处在于,在虚拟地址中,如图B程序的虚拟地址,不管通过如何偏移,他都在虚拟地址中,最后映射进物理地址也在B程序内,不会影响到其他的程序,起到了进程隔离,保护了其他的进程

所以如今的寻址方式的模式大都是以保护模式为主,也就是虚拟地址空间,因为其更能保证进程的安全和跟合理的安排程序运行

虚拟地址空间

在32位操作系统中虚拟地址空间大小为4G
而在虚拟地址里用户空间和内核空间的比例划分为
Windows是2:2划分的
Linux是3:1划分的

linux虚拟地址空间图如下

在这里插入图片描述

  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值