两个线程之间的上下文切换到底保存和恢复了哪些内容?
- 在同一进程中
- 在两个进程之间
两个线程之间的上下文切换到底保存和恢复了哪些内容?
每个架构都定义了自己的thread_struct,用于标识在切换时保存的寄存器和其他值。/*此任务的特定于CPU的状态*/
- struct thread_struct thread;
包含有关缓存TLS描述符、调试寄存器、故障信息、浮点数、虚拟86模式或IO权限的信息。
当上下文切换在同一进程的线程之间进行时,保存当前线程的所有非易失性通用寄存器,并恢复新线程的寄存器;如果当前线程执行被中断,则只需要保存易失性寄存器。线程使用的任何协处理器(例如浮点处理器)的寄存器也应该被保存和恢复。 如果切换在2个进程的线程之间进行,则除了正常上下文切换所需的内容外,还需要进行与内存和IO管理相关的更改;例如,进程所需的内存保护是通过页面表和页面目录表实现的,每个进程都有一个唯一的页面目录表地址,在进程更改时必须更改。
我不确定,但如果我没记错的话,工作内存集也被切换了。