堆栈在哪里实现
Where is the stack implemented?
C++允许程序员使用堆栈分配的内存或堆上的动态内存。我非常清楚堆栈是如何操作的(我在C++中创建了堆栈作为练习),但仍然对"堆栈"是如何定义的以及在哪里定义感到好奇。
"堆栈"是语言的特性、操作系统的特性还是硬件的特性?我有一个模糊的想法,从操作系统的角度来看,每个堆栈都与许多活动线程进程中的每一个相关。这向我表明,它是在软件级别实现的,而不是CPU或主板的硬连接功能。
我想,在C++的情况下,编译器可能已经在每个二进制文件中插入了一个堆栈的实现。或者操作系统将自己的堆栈实现应用到每个运行的进程中?这是如何定义的?
我在这里发现了一个类似的问题,但我没有看到答案,我希望能更直接地重新陈述这个问题。
"堆栈"是语言的一个功能、操作系统的一个特征还是硬件的一个特性?"
实际上,这是硬件的一个特性。大多数CPU都提供堆栈指针寄存器的功能,用于call
指令。应该为其保留哪部分内存实际上取决于OS(裸机)实现。
堆栈是由操作系统管理的硬件的一个功能。某些指令(例如过程调用)会影响堆栈。将为上下文开关和处理器模式开关提供硬件支持。
操作系统管理堆栈本身。操作系统分配堆栈。每个进程和每个处理器模式通常有一个单独的堆栈。
烟囱通常向下生长。将值添加到阻塞的硬件指令通常会递减堆栈点寄存器。虚拟存储器系统通常将用户堆栈放置在用户地址空间的最高部分。
相关文章:
- Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?
- 我有一个启用了代理存根支持的 ATL 项目,在哪里可以找到 xdlldata.h 文件中所有方法的实现
- 他们实现的开源C编译器(gcc,clang)的实际标准在哪里
- 在哪里可以找到C 中新运营商的确切实现
- 在哪里以及如何定义成员变量?在头文件还是实现文件中?
- 在哪里查找 GCC 实现定义行为的实现?
- 在哪里实现哈希函数
- 堆栈在哪里实现
- 在哪里可以找到sprintf的现有实现
- 我应该在哪里实现我的类方法
- 在哪里/如何声明和实现必须由成员方法使用的帮助函数
- 我如何实现bubblesort以及在哪里实现
- c++ Windows窗体应用程序——在哪里实现OnInitDialog()
- 在哪里实现堆栈类(在非递归二进制搜索函数中使用)
- 在哪里可以找到散列/加密算法的开源实现(头文件)
- C/ c++中定义的操作符在哪里,它们在这些语言中是如何实现的
- 阻塞队列实现:争用条件在哪里?
- 我应该在哪里重新实现QAbstractItemModel::supportedDragActions()
- 在哪里编写类的实现
- 在哪里可以找到++操作符的实现