所谓寄存器上下文(Register Context)就是寄存器取值所基于的语境。因为一个CPU只有一套寄存器,所以当它轮番执行系统中的多个任务(线程)时,它的寄存器中存放的是当前正在执行线程的寄存器值。对于没有执行的线程,它的寄存器值被保存在内存中,当CPU要执行这个任务时,这些寄存器值被从内存加载到物理寄存器中。
在调试时,当我们观察一个线程的寄存器时,这个线程通常是处于挂起状态的,所以我们看到的寄存器都是保存在内存中的寄存器值,而不是此时物理寄存器的值。当我们修改寄存器时,也是修改保存在内存中的寄存器值。
系统在以下几种情况下会将一个线程的寄存器保存到内存中,称为上下文记录(Context Record)。
当系统做线程切换时,系统会将要挂起线程的寄存器取值保存起来,这个记录被称为线程上下文。
当发生中断或者异常时,系统会将当时的寄存器取值保存起来,这个记录常被称为异常上下文。
源自[软件调试]第三十章 [张银奎]著