我了解到每个进程都有自己的内存区块,包括栈、堆、数据和代码文本(请参见此处)。
现在我正在阅读有关上下文切换的内容。我了解到,在上下文切换期间,CPU寄存器会被推入堆栈,然后整个堆栈将保存到进程控制块中。这基本上是它工作的原理吗?
为什么需要保存堆栈,如果每个进程都有自己的堆栈呢?
现在我正在阅读有关上下文切换的内容。我了解到,在上下文切换期间,CPU寄存器会被推入堆栈,然后整个堆栈将保存到进程控制块中。这基本上是它工作的原理吗?
为什么需要保存堆栈,如果每个进程都有自己的堆栈呢?
完整的堆栈在上下文切换中不会被保存。就我所知,进程上下文块只包含寄存器的值。
堆栈只是一块内存区域,没有什么特别之处。唯一让它成为一个堆栈的原因是堆栈指针寄存器引用了它。一个进程可以有多个堆栈,通常情况下也确实如此。进程通常为每个处理器模式分配一个堆栈,在多线程编程中,每个线程都有一个堆栈。
编辑 据我所知,x86没有CPU堆栈。CPU有指向堆栈第一个元素的堆栈指针。