处理器使用的操作系统中的堆栈实现
堆栈是对一组组件进行排序的关联,一次通常只访问其中一个(最后添加的)。访问点被命名为堆栈的最高点。堆栈内的组件数量或堆栈长度是可变的。项目可以单独位于堆栈的最高层或从堆栈的最高层删除。出于这个原因,堆栈还被称为下推列表或后进先出 (LIFO) 列表。
堆栈的实现需要有一组用于存储堆栈组件的位置。下图说明了一种典型的方法。
连续块的位置在主内存(或虚拟内存)中为堆栈保留。大多数情况下,该块的一部分是堆栈组件,其余部分可用于堆栈增长。正确操作所需的三个地址区域单元,这些区域单元通常保存在处理器寄存器中:
- 堆栈指针:
它包含堆栈的这个质数的地址。如果相关项被添加到(PUSH)堆栈或从(POP)堆栈中删除,则该指针递减或递增以包含堆栈的新素数的地址。 - 堆栈基础:
它包含保留块内一个非常便宜的位置的地址。一旦关联的项目在一侧以关联空堆栈,这可以是要使用的主要位置。如果在堆栈为空后尝试 POP 组件,则会报告错误。 - 堆栈限制:
它包含保留块的相反终点或顶部的地址。如果在堆栈已满后尝试推送组件,则会报告错误。
传统上,如今在大多数处理器上,堆栈的基址位于保留堆栈块的高地址结束处,并且限制位于低地址结束处。因此,堆栈将从较高的地址增长到较低的地址。