当前位置: 首页 > article >正文

什么是物理地址,什么是虚拟地址?

摘要

什么是物理地址,什么是虚拟地址?

如果处理器没有MMU或未启用,CPU执行单元发出的内存地址直接传到芯片引脚上,被内存芯片接受,这称为物理地址(Physical Addraress)

0

如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU地址称为虚拟地址,而MMU将这地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射到物理地址。

通俗的理解:CPU拿到的地址都是MMU给的虚拟地址,通过MMU的翻译找到了内存的物理地址进而找到数据。为什么这样设计呢?这得从早期cpu读取内存数据的历史开始道来。

0

早期CPU读取内存数据的历史

85年前计算机,cpu读数据是直接从内存读数据。为什么这样设计呢?

在许多年以前,还是使用DOS或一些古老的操作系统时,内存很小,同时应用程序也很小,将程序存储在内存中基本满足需要。例如早期的魂斗罗800k~1MB,一般16MB的内存足够用了。

0

缺点:随着科技发展后,很多复杂的程序大小都远超内存大小了,内存本身也不是想增大就增大,为了解决这个问题,人民提出了虚拟存储器的方法-MMU

上述相当于处理器没有MMU,CPU执行单元发出的内存地址直接传到物理地址中。

0

为什么有物理地址和虚拟地址?-因为内存很宝贵

随着科技的发展,图形界面以及一些其他更复杂的应用出现,内存已经无法存储这些应用程序了。人们在想能否设计出一个程序+数据+堆栈的总大小可以超过内存空间的大小并正常运行的机制。例如如何让16MB的代码可以运行在4MB的机器呢?

人们想出了一个虚拟存储器的方法MMU(Memory Manager Unit)主要是用来管理虚拟存储器,物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作完成。比如一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择哪部分4MB的程序内容保存在内存与磁盘交互程序代码,这样16MB的代码就可以运行在4MB的机器中了。

MMU原理:利用程序具有局部性原则

MMU的设计利用了程序的一个特性。例如5000行的代码程序是全部运行吗?不是的往往只有百分之一或千分之一的代码运行.该特性:程序的局部代码在物理内存中运行。即程序具有局部性原则。所以某一段很小的时间段内,只有很少一部分代码会被CPU执行。例如VMware虚拟机就是程序具有局部性原则,让我们电脑可以跑双window,苹果或Linux系统。

0

本学习笔记来源于哔哩哔哩:4.什么是虚拟地址和物理地址_哔哩哔哩_bilibili


http://www.kler.cn/a/532199.html

相关文章:

  • mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数
  • PVE纵览-解锁 PVE 的潜力:配置显卡直通
  • vim-plug的自动安装与基本使用介绍
  • 2024-我的学习成长之路
  • 在K8S中,如何把某个worker节点设置为不可调度?
  • 【DeepSeek背后的技术】系列一:混合专家模型(MoE)
  • H. The Third Letter
  • 接入DeepSeek大模型
  • 蓝桥杯思维训练营(三)
  • 【Leetcode刷题记录】2090. 半径为 k 的子数组平均值--定长滑动窗口解法和前缀和解法
  • 基于RK3588+算能BM1684X的云电脑/云手机系统设计与实现
  • 【Go语言圣经】第七节:接口
  • 蓝桥杯接龙序列
  • 83-《南茼蒿》
  • python列表知道下标怎么取值
  • 输出解析器的使用
  • 介绍一下Mybatis的底层原理(包括一二级缓存)
  • 基于“蘑菇书”的强化学习知识点(四):贝尔曼方程
  • deepseek的对话风格
  • 单链表的“影分身术”:随机指针链表的深度拷贝实现
  • 知识蒸馏教程 Knowledge Distillation Tutorial
  • ES6基础内容
  • [特殊字符] ChatGPT-4与4o大比拼
  • 基于SpringBoot体育商品推荐设计与实现
  • Spring Boot常用注解深度解析:从入门到精通
  • 排序算法与查找算法