地址总线、物理地址、虚拟地址讲解
什么是地址总线?
地址总线(Address Bus ;又称位址总线)属于一种电脑总线(一部份),是由CPU或有DMA能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。
换而言之,就是cpu能够访问内存的范围。
我们平时所说的计算机是32位,64位,指的是计算机的CPU中寄存器的最大存储长度,如果寄存器中最大存储32bit的数据,就称之为32位系统。在计算机中,数据一般都是在硬盘,内存和寄存器之间进行来回存取。CPU通过3种总线把各组成部分联系在一起:地址总线,数据总线和控制总线。地址总线的宽度决定了CPU的寻址能力,也就是CPU能达到的最大地址范围。内存是通过地址来管理的,CPU想从内存中的某个地址空间上存取一个数据,CPU就需要在地址总线上输出这个存储单元的地址。假如地址总线的宽度是8位,能表示的最大地址空间就是256字节,能找到内存中最大的存储单元是255这个格子(从0开始)。即使内存条的实际空间是2G字节,CPU也没法使用后面的内存地址空间。如果地址总线的宽度是32位,那么能表示的最大地址就是2的32次方,也就是4G字节的空间。
举例说明︰装了32位的win7系统,明明内存条86,可是系统只识别了3.8G ,装了64位,才能识别到8g。
32位能表示/访问4,294,967,296 bit
换算一下就是:
bit | 4,294,967,296 |
---|---|
kbit | 4,194,304 |
mbit | 4,096 |
gbit | 4 |
我们可以使用指令来查看树莓派的内存有多大,cat /proc/meminfo
如图所示,32位的树莓派,949M约1G内存大小。
什么是物理地址?
在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。
什么是虚拟地址?
虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,是基于算法的地址(软件层面的假地址)。
三者的作用
虚拟地址 (virtual address): CPU启动保护模式后,程序运行在虚拟地址空间中。注意,并不是所有的“程序”都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。
如果CPU寄存器中的分页标志位被设置,那么执行内存操作的机器指令时,CPU(准确来说,是MMU,即Memory Management Unit,内存管理单元)会自动根据页目录和页表中的信息,把虚拟地址转换成物理地址,完成该指令。
我们的32位树莓派物理内存约1G,CPU可以识别的范围是约4G,假设你的程序在磁盘超过1个G,物理地址不够用,大概率运行不起来或者崩掉,此时就需要虚拟地址来帮助我们扩大虚拟的容量(准确说是映射),将我们的物理地址通过分页机制(页表mmu)映射到虚拟地址,我们写的代码都是操控的虚拟地址,上层应用程序都是运行在虚拟地址中的。
参考:https://blog.csdn.net/qq_55299368/article/details/118875855
地址总线、物理地址、虚拟地址讲解相关推荐
- 【操作系统复习】物理地址虚拟地址
[操作系统复习] 物理地址虚拟地址 物理地址和虚拟地址的区别 物理地址 逻辑地址 线性地址 为什么要分成物理地址和虚拟地址 物理内存及虚拟内存定义 为什么要有虚拟内存 虚拟内存的实现(可以在页式或段式 ...
- 逻辑地址、线性地址和物理地址的关系
逻辑地址.线性地址和物理地址的关系 首先不得不提的历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 ...
- 【转载】WINCE物理和虚拟地址的问题
转载自:http://www.cnblogs.com/andyhere/archive/2008/10/23/1318105.html WINCE物理和虚拟地址的问题 在MAP.A中地址映射表转换物理 ...
- 从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)
目录 操作系统的定位 进程的概念 如何描述进程? 如何组织进程? 为什么要引入进程? 进程的特征 1.pid 2.内存指针 3.文件描述符 4.进程调度的相关属性 (1)进程的状态 (2)优先级 (3 ...
- 汇编 cmp_汇编复习
第一章 计算机组成 五部分:(运算器.控制器).存储器.输入/输出设备 ↑↑ CPU ↑↑ ↑内存↑ 三条总线:控制总线.地址总线.数据总线 不同进制及BCD码的转换 特殊ascll '0'~'9'- ...
- MIT-OS实验-lab1
Lab 1 Part 1:PC Bootstrap 1.预备知识: BIOS: 第一代PC处理器是16位字长的Intel 8088处理器,这类处理器只能访问1MB的地址空间,即0x00000000-0 ...
- 【面试】计算机操作系统
进程和线程的区别 进程是资源分配的基本单位.所有与该进程有关的资源,如外部设备.缓冲区队列等,都被记录在PCB中,以表示该进程拥有这些资源.同一进程的所有线程共享该进程的所有资源. 线程是分配处理机的 ...
- 《云计算与虚拟化分析》_2章:虚拟化技术
<2章:虚拟化技术> 本章内容:讲解了如何将割裂的底层硬件或服务整合成逻辑上可以统一调度分配的资源 # 重写于,写于2021.06.22 # 本文为学习笔记,用的ppt是陈羽中教授版,侵删 ...
- linux的原理和运用,Linux操作系统原理与应用_内存寻址
原标题:Linux操作系统原理与应用_内存寻址 第五讲今天上线啦. 在本次课程中,陈老师详细的讲解了有关于内存寻址的演变的相关知识. 第一部分中,介绍了关于内存寻址的相关背景知识.内存寻址-操作系统设 ...
最新文章
- mysql缺少函数_零散的MySQL基础总是记不住?看这一篇就够了!
- 【Gradle】管理库工程release及debug
- asp开发工具_VSCode搭建完美的asp.net core开发环境,看完这篇就够了
- 高内聚,低耦合——8大核心中间件,微服务基础技术栈技术图谱
- java socket 实现增删改查 + 在线答题小案例
- 苏炳添成为小米代言人
- 求不小于N且二进制串包含K个1的最小的数字
- KEIL中加入GD设备文件
- Verilog 语法合集
- 基础——内部RC振荡电路、外部晶振、RCC、RTC
- 基于STM32c8t6的5路pwm占空比测量实验总结
- 如何快速获得Q币(python简单实现)
- GPT+UEFI双硬盘双系统安装
- PHP学习之字符串操作
- 什么是北向接口和南向接口?
- 如何将单线程爬虫改成多线程
- JZOJ5426. 【NOIP2017提高A组集训10.25】摘Galo
- Linux命令行下修改文件或文件夹名
- GitHub的使用(入门)
- Windows Installer无法启动或不见了的解决方法