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

内存地址

在 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 可能会发生非对其例外,这个例外可能硬件自身处理,也可能是内核处理,如果内核不处理,程序就会崩了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 地址映射 两种模式*两种模型 实模式和保护模式 实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了...
    菜狗逆向阅读 779评论 0 0
  • 摘 要 为了对计算机系统有着更深入的了解以及研究系统间的协作关系。本大作业针对hello程序运行的一系列过程对c...
    icey_J阅读 548评论 0 0
  • 53.MESI协议:如何让多核CPU的高速缓存保持一致 CPU Cache解决的是内存访问速度和CPU速度差距过大...
    幻海流心阅读 961评论 0 0
  • 计算机的硬件组成 现代计算机的基本组成部分其实主要由三部分组成:CPU,内存,主板。 你撰写的程序,打开的任何PC...
    HikariCP阅读 3,085评论 1 4
  • 1/2 考前复习 考试说明 1、单选题,10分 2、填空题,30分 3、简答题,24分 4、综合题,36分 复习P...
    Du1in9阅读 5,576评论 8 34