调用堆栈和任务队列有什么区别?


回答 1:

调用堆栈是一个内部的按进程数据结构,在执行的任何时候都记录函数调用链和局部变量的链。 它驻留在进程自己的虚拟内存中,并且是一个堆栈,因为每个函数调用都会在上面放东西,而每个函数返回都会从上面取走东西。 它也经常用于评估函数中的表达式。 在大多数现代体系结构中,它从虚拟内存的末尾向后扩展到静态或堆数据。

任务队列(或多个队列,可能有多个)是一种内核数据结构(即,该进程不可访问,并且不是其虚拟内存的一部分),它将等待使用cpu的进程的记录链接在一起。 对于多cpu系统,每个cpu可能有一个单独的队列,和/或根据调度程序的设计,每个优先级都有一个单独的队列。 这是一个队列,因为记录通常放在一端,然后从另一端取走,但是如果调度程序决定这样做,有时可以将其重新排序。


回答 2:

一个是堆栈。 另一个事件队列让我更熟悉。堆栈是后进先出的。 像纸叠一样。队列是后进先出; 像一个阵容。

当程序调用子程序时,该子程序将调用子程序,您将拥有一个堆栈,并且事件以相反的顺序完成。

当一系列中断添加到事件队列时,将按照接收到的顺序对其进行服务。