当前位置: 技术问答>linux和unix
linux下一个进程下面有多个线程的栈切换的问题,望高人指点下。
来源: 互联网 发布时间:2016-10-27
本文导语: 一、一个进程下面有多个线程,那么每个线程拥有自己的栈,问题: 1.这个栈是进程的栈分出来的,还是系统重新给每个线程分配了一块栈? 2.这几个线程共享进程的资源,是否包括共享进程的栈? 3.这个进程下的线...
一、一个进程下面有多个线程,那么每个线程拥有自己的栈,问题:
1.这个栈是进程的栈分出来的,还是系统重新给每个线程分配了一块栈?
2.这几个线程共享进程的资源,是否包括共享进程的栈?
3.这个进程下的线程切换是怎么样的,假如有thread1和thread2,现在要thread1切换到thread2,是直接可以切换到thread2呢(是的话,是怎么切换的?)还是先从thread1的栈切换到进程的栈,再有进程的栈切换到thread2的栈?
二、假如一个进程要切到另一个进程,但是这两个进程共享同一个地址空间,那么这两个进程的切换,只是从代码的一处跳到代码的另一处,应该怎么样理解?(《操作系统--精髓与设计原理》里说的)
1.这个栈是进程的栈分出来的,还是系统重新给每个线程分配了一块栈?
2.这几个线程共享进程的资源,是否包括共享进程的栈?
3.这个进程下的线程切换是怎么样的,假如有thread1和thread2,现在要thread1切换到thread2,是直接可以切换到thread2呢(是的话,是怎么切换的?)还是先从thread1的栈切换到进程的栈,再有进程的栈切换到thread2的栈?
二、假如一个进程要切到另一个进程,但是这两个进程共享同一个地址空间,那么这两个进程的切换,只是从代码的一处跳到代码的另一处,应该怎么样理解?(《操作系统--精髓与设计原理》里说的)
|
Windows里面的情况应该和linux差不多。
栈是线程的资源,系统给每个线程分配了一块栈。
一般情况下线程只能访问自己的栈。
每个线程有一个结构保存它的栈地址,当前指针,当前执行的cpu指令地址,优先级,等等,切换的时候按照这些内容设好cpu相应的寄存器,然后控制权交给该线程。
进程切换的操作也是类似的,把进程控制块恢复到寄存器,交控制权...
栈是线程的资源,系统给每个线程分配了一块栈。
一般情况下线程只能访问自己的栈。
每个线程有一个结构保存它的栈地址,当前指针,当前执行的cpu指令地址,优先级,等等,切换的时候按照这些内容设好cpu相应的寄存器,然后控制权交给该线程。
进程切换的操作也是类似的,把进程控制块恢复到寄存器,交控制权...