Есть ли разница между стеком структуры данных и аппаратным стеком? - PullRequest
0 голосов
/ 05 марта 2019

Я спорил с моим другом о разнице между стеком структуры данных и аппаратным стеком (стек вызовов).Я думал, что они совершенно одинаковые, потому что у них обоих есть «push» и «pop», которые могут работать только с последним элементом.Но мой друг сказал, что они совсем не одинаковы, но у них одно и то же имя - «стек».И он так считает, потому что в стеке вызовов мы можем получить доступ к адресам, которые не являются последними, что противоречит определению стека (структуры данных).Вы можете дать ответ на этот вопрос?

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

Вот некоторые различия:

  • Обычно у вас может быть только один аппаратный стек (на поток).
  • Вы можете иметь столько стеков программного обеспечения, сколько пожелаете.
  • Обычно аппаратный стек управляется непосредственно ЦПУ.
  • Доступ к программному стеку управляется явно из кода.
  • Аппаратный стек обычно напрямую связан со стеком вызовов (функции вызывающего абонента, их аргументы).
  • Программный стек не зависит от аппаратного стека вызовов (вы можете вставить элемент в функцию и вставить его в другую.независимо от уровня аппаратного стека).
  • Память аппаратного стека управляется ОС или ЦП (может быть ограничена).
  • Память программного стека управляется приложением.

Ну, в основном оба стека имеют операции push и pop и, таким образом, работают как стек.

Было бы возможно иметь чистое или не чистое аппаратное или программное обеспечениестек.Обычно аппаратный стек может получить доступ к элементам в относительной позиции сверху для аргументов.В программном стеке обычно защита представляет собой частный доступ.

На некоторых встроенных устройствах стек может служить только для адресов возврата, и для аргументов может потребоваться программный стек.На некоторых устройствах максимальный уровень может быть очень низким.

0 голосов
/ 21 марта 2019

Первый - это структура данных, а второй - применяемая структура данных.

Как и большинство приложений структур данных в реальном мире, оно не чисто и имеет функции, добавленные для удобства или скорости.

...