在x86中使用堆栈交换的目的和好处是什么?

在x86中使用堆栈交换的目的和好处是什么?,x86,paging,virtual-memory,X86,Paging,Virtual Memory,我目前正在学习x86虚拟内存和分页。但当我读到关于交换状态的文章时,我有一些问题。 另外,当允许存在多个程序时,跟踪堆栈指针还需要什么额外的支持?冒着过度简化和忽略线程的风险- 堆栈是由堆栈指针寄存器引用的内存块。堆栈内存没有什么特别之处。操作系统将设置一个堆栈。但是,用户可以分配一块内存,并让堆栈指针指向它 更改堆栈所要做的就是为堆栈指针寄存器指定一个新值 在OS线程支持之前的旧时代,用户模式线程库将设置多个堆栈并在它们之间切换 从硬件的角度来看,堆栈是堆栈指针指向的任何对象 -=-=-=-=

我目前正在学习x86虚拟内存和分页。但当我读到关于交换状态的文章时,我有一些问题。
另外,当允许存在多个程序时,跟踪堆栈指针还需要什么额外的支持?

冒着过度简化和忽略线程的风险-

堆栈是由堆栈指针寄存器引用的内存块。堆栈内存没有什么特别之处。操作系统将设置一个堆栈。但是,用户可以分配一块内存,并让堆栈指针指向它

更改堆栈所要做的就是为堆栈指针寄存器指定一个新值

在OS线程支持之前的旧时代,用户模式线程库将设置多个堆栈并在它们之间切换

从硬件的角度来看,堆栈是堆栈指针指向的任何对象

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

处理器具有保存和加载流程上下文的说明。这包括所有寄存器

处理器切换进程和堆栈所要做的就是保存当前进程上下文并加载一个新的进程上下文

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


在进行上述更改时,操作系统会使用一个单独的内核堆栈。

您正在比较苹果和橙子。操作系统有一个线程调度程序,它产生了多个进程可以同时执行的假象。即使处理器在同一时间只能执行几次,但4是典型的。它的任务之一是在线程挂起时存储整个处理器状态,并在重新激活时恢复它。堆栈指针只是该状态的一小部分。@JessieLyu,你能澄清一下你在问什么吗?