Data structures 数据结构堆栈和硬件堆栈之间有区别吗?

Data structures 数据结构堆栈和硬件堆栈之间有区别吗?,data-structures,callstack,Data Structures,Callstack,我和我的朋友讨论了数据结构堆栈和硬件堆栈(调用堆栈)之间的区别。我认为它们是完全一样的,因为它们都有“推”和“流行”,只能处理最新的元素。但我的朋友说他们根本不一样,但他们只有一个共同的名字“stack”。他这样认为是因为在调用堆栈中,我们可以访问不是最新的地址,这与堆栈(数据结构)的定义相矛盾。你能回答这个问题吗?第一个是数据结构,第二个是应用的数据结构 与现实世界中的大多数数据结构应用程序一样,它不是纯粹的数据结构,并且为方便或快速而添加了一些功能。以下是一些区别: 通常,您只能有一个硬件

我和我的朋友讨论了数据结构堆栈和硬件堆栈(调用堆栈)之间的区别。我认为它们是完全一样的,因为它们都有“推”和“流行”,只能处理最新的元素。但我的朋友说他们根本不一样,但他们只有一个共同的名字“stack”。他这样认为是因为在调用堆栈中,我们可以访问不是最新的地址,这与堆栈(数据结构)的定义相矛盾。你能回答这个问题吗?

第一个是数据结构,第二个是应用的数据结构


与现实世界中的大多数数据结构应用程序一样,它不是纯粹的数据结构,并且为方便或快速而添加了一些功能。

以下是一些区别:

  • 通常,您只能有一个硬件堆栈(每个线程)
  • 您可以根据需要拥有任意多个软件堆栈
  • 通常,硬件堆栈由CPU直接管理
  • 软件堆栈访问由代码显式管理
  • 硬件堆栈通常与调用堆栈(调用函数及其参数)直接相关
  • 软件堆栈独立于硬件调用堆栈(您可以在一个函数中推送项,并在另一个函数中弹出它们,而与硬件堆栈级别无关)
  • 硬件堆栈内存由操作系统或CPU管理(可能受到限制)
  • 软件堆栈内存由应用程序管理
基本上,这两个堆栈都有pushpop操作,因此工作起来就像一个堆栈

可能有纯硬件或软件堆栈,也可能有非纯硬件或软件堆栈。通常,硬件堆栈能够从顶部访问相对位置上的项以获取参数。在软件堆栈上,通常保护基本上是私有访问

在某些嵌入式设备上,堆栈可能仅用于返回地址,参数可能需要基于软件的堆栈。在某些设备上,最高级别可能非常低。

可能重复的