📜  处理器使用的操作系统中的堆栈实现

📅  最后修改于: 2022-05-13 01:56:11.819000             🧑  作者: Mango

处理器使用的操作系统中的堆栈实现

堆栈是对一组组件进行排序的关联,一次通常只访问其中一个(最后添加的)。访问点被命名为堆栈的最高点。堆栈内的组件数量或堆栈长度是可变的。项目可以单独位于堆栈的最高层或从堆栈的最高层删除。出于这个原因,堆栈还被称为下推列表或后进先出 (LIFO) 列表。

堆栈的实现需要有一组用于存储堆栈组件的位置。下图说明了一种典型的方法。



连续块的位置在主内存(或虚拟内存)中为堆栈保留。大多数情况下,该块的一部分是堆栈组件,其余部分可用于堆栈增长。正确操作所需的三个地址区域单元,这些区域单元通常保存在处理器寄存器中:

  • 堆栈指针:
    它包含堆栈的这个质数的地址。如果相关项被添加到(PUSH)堆栈或从(POP)堆栈中删除,则该指针递减或递增以包含堆栈的新素数的地址。
  • 堆栈基础:
    它包含保留块内一个非常便宜的位置的地址。一旦关联的项目在一侧以关联空堆栈,这可以是要使用的主要位置。如果在堆栈为空后尝试 POP 组件,则会报告错误。

  • 堆栈限制:
    它包含保留块的相反终点或顶部的地址。如果在堆栈已满后尝试推送组件,则会报告错误。

传统上,如今在大多数处理器上,堆栈的基址位于保留堆栈块的高地址结束处,并且限制位于低地址结束处。因此,堆栈将从较高的地址增长到较低的地址。