虚拟地址和物理地址

本文介绍了计算机内存管理中的虚拟内存和物理内存概念,阐述了32位系统下虚拟内存的限制及虚拟地址如何通过页表映射到物理地址。讨论了简单的分页机制的不足,如页表占用过多空间,并提出了解决方案——多级页表。同时,提到了地址结构由段号、段内页号和页内位移组成,以及软硬件结合的地址变换过程,强调了提高内存利用率的重要性。
摘要由CSDN通过智能技术生成

1、地址概念

  • 物理地址:物理内存就是真实的内存,CPU的地址线可以直接进行寻址的内存空间大小。比如在32位平台下,寻址的范围是2^32也就是4G,并且这是固定的。
  • 在实际的应用中,很多的应用程序都比较大,计算机实际所配置的内存空间无法满足。所以出现了虚拟内存技术。经过不断有目的的换入和换出,处理器似乎是拥有了一个大于实际物理内存的内存空间。于是,这个存储空间叫做虚拟内存空间,而把真正的内存叫做实际物理内存,或简称为物理内存。

对32位处理器,虚拟内存空间为4G,每个进程都认为自己拥有4G的空间;实际上,在虚拟内存对应的物理内存上,可能只对应的一点点的物理内存。

进程得到的这4G虚拟内存是一个连续的地址空间(这也只是进程认为),而实际上,它通常是被分隔成多个物理内存碎片,还有一部分存储在外部磁盘存储器上,在需要时进行数据交换

由于存在两个内存地址,因此一个应用程序从编写到被执行,需要进行两次映射。第一次是映射到虚拟内存空间,第二次时映射到物理内存空间。在计算机系统中,第两次映射的工作是由硬件和软件共同来完成的。承担这个任务的硬件部分叫做存储管理单元MMU,软件部分就是操作系统的内存管理模块了

2、虚拟地址和物理地址的关系

分页就是把整个虚拟和物理内存切成一段段固定大小的空间,连续且尺寸固定的内存空间叫页,Linux下每一页大小4KB。

虚拟内存和物理内存之间通过页表来映射;虚拟地址分为:页号和页内偏移。
在这里插入图片描述

  • 页号作为页表的索引,页表包含物理页每页所在物理内存的基地址,这个基地址与页内偏移的组合就形成了物理内存地址。
  • 简单分页缺点:空间上的缺陷:32位,单进程一个页4KB,虚拟内存4GB,一个页表项4字节,结果是4GB空间映射需要4*2^20 = 4MB存储页表。多进程100,需要400MB。

解决方法:采用多级页表或段页式存储;
在这里插入图片描述

地址结构就由段号、段内页号和页内位移三部分组成。

  • 第⼀次访问段表,得到页表起始地址;
  • 第⼆次访问页表,得到物理页号;
  • 第三次将物理页号与页内位移组合,得到物理地址。

可用软、硬件相结合的方法实现段页式地址变换,这样虽然增加了硬件成本和系统开销,但提高了内存的利用率。
(ps:参照小林大佬图片)

  • 19
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值