美文网首页
计算机里几个地址和对齐的概念

计算机里几个地址和对齐的概念

作者: sarto | 来源:发表于2022-12-06 16:24 被阅读0次

内存地址

在 64 位机上,内存地址由一个 64 bit数表示,为什么说是地址呢,因为这个 64 bit 数代表内存上的一个字节,也就是 8 个 bit 位。内存地址在使用的时候,最小单位就是字节。一个地址代表一个字节,但实际上有 8 bit。

内存页

操作系统为了更好的进行内存的分配和回收,对内存地址按页进行编排,页是由内核决定的,在 x86 arm 等系统上, 页大小都是固定 4k,这个 4k 会带来什么问题呢,我们知道 64 机器上,表示一个数字最大可以用 64 位,但是实际上物理地址能寻址有效地址往往低于 64 位。因为引入 当 CPU 寻址时,对于一个 64 位数,其前 N 位用来寻找页号,然后后 12 位用于定位页内地址,即是一种 pg+offset 的模式。因为 12 位数能表示的最大数字是 4096,所以能表示页内有 4096 个字节。所以 4K 全称应该是 4KB。

地址对齐

比如 CPU 的访存指令,load r0, mem,意思是从 mem 这个地址加载多少个字节的数据到 r0 寄存器中,这个 mem 不能是任意数值,通常是一个 16 字节对齐的数据,也就是说 mem | 0x0f = mem。这个 mem 的后 4 位都是 0。如果地址不是对齐的,CPU 可能会发生非对其例外,这个例外可能硬件自身处理,也可能是内核处理,如果内核不处理,程序就会崩了。

相关文章

  • C++中的字节对齐

    (字节对齐的实现细节和编译器有关) 1. 基本概念 字节对齐:计算机存储系统中以Byte为单位存储数据,不同数据类...

  • iOS底层 - 内存字节的对齐规则

    要了解内存对齐的规则,首先我们要先知道什么是内存对齐。 内存字节对齐的概念: 计算机中内存空间是按照byte划分的...

  • Java虚拟机:Java内存区域及对象

    几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念。 1、计算机...

  • C++ 字节对齐的总结(原因和作用)

    一、概念 字节对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址...

  • 内存对齐

    内存对齐,或者说字节对齐,是代码编译后在内存的布局与使用方式。现代计算机一般是32比特或64比特地址对齐,如果要访...

  • C 迷你系列(三)内存对齐

    引言 现代计算机一般是 32 比特或 64 比特地址对齐,如果要访问的变量没有对齐,可能会触发总线错误[https...

  • iOS底层之内存对齐

    一、什么是内存对齐? 内存对齐是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的...

  • Java虚拟机2:Java内存区域

    1.几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念。 1、计...

  • iOS中的内存对齐

    一、什么是内存对齐 内存对齐是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一...

  • 二、iOS-内存对齐

    一、什么是内存对齐 内存对齐是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一...

网友评论

      本文标题:计算机里几个地址和对齐的概念

      本文链接:https://www.haomeiwen.com/subject/sibqqrtx.html