徐曙辉
2023-03-02
来自湖南
1. 操作系统调用栈,浏览器前进后退功能 3. 内存中的堆栈和数据结构堆栈不是一个概念,内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构。 操作系统给每个线程分配了一块独立的内存空间,这块内存被组织成“栈”这种结构, 用来存储函数调用时的临时变量。每进入一个函数,就会将临时变量作为一个栈帧入栈,当被调用函数执行完成,返回之后,将这个函数对应的栈帧出栈,符合先进后出的特性。 从调用函数进入被调用函数,对于数据来说,变化的是作用域。所以只要能保证每进入一个新的函数,都要是一个新的作用域。而要实现这个,用栈就非常方便。在进入被调用函数的时候,分配一段栈空间给这个函数的变量,在函数结束的时候,将栈顶复位,正好回到调用函数的作用域内。 用Go实现的数组栈和链表栈 https://github.com/xushuhui/algorithm-and-data-structure/tree/master/datastructure/stack
作者回复: 👏👏😂😂
2
Bruder_Jin
2023-03-17
来自中国台湾
1、操作系统中的调用栈:在操作系统中,每个进程都有一个独立的调用栈,用于存储函数调用的返回地址和参数。当程序执行一个函数时,它的参数和返回地址被压入该进程的调用栈中。当函数返回时,这些参数和返回地址被弹出栈。 2、网络协议中的数据包处理:在网络协议中,数据包处理通常采用栈的方式进行,以确保数据包能够正确地路由。数据包处理时,每个网络层都会将自己的头部信息入栈,并在发送时逆序弹出栈,以保证数据包的正确传输。 3、数据库系统中的事务处理:在数据库系统中,事务处理可以采用栈来实现。每次进行事务操作时,会将操作入栈,以便回滚时能够按照相反的顺序执行操作。(事务的实现可能会有所不同。除了使用栈来管理事务操作序列外,还可以使用其他数据结构,如链表、数组等来实现事务。此外,不同的数据库系统还可能会采用不同的事务模型和隔离级别,以满足不同的应用需求。) 4、操作系统中的中断处理:在操作系统中,中断处理也可以采用栈来实现。当系统发生中断时,将当前程序的状态入栈,然后转到中断处理程序。当中断处理程序执行完毕后,将保存的程序状态弹出栈,恢复原来的程序执行。 6、撤销操作:在编辑器中,撤销操作通常也可以使用栈来实现,将每次编辑的操作记录在栈中,撤销时将最近的操作出栈并撤销。
展开
作者回复: 👏👏👏👏
1