Hola Marta:
Siempre que se hace un cambio de contexto lo que busca es preservar el estado (o contexto) de lo que está actualmente en ejecución. Para simplificar podemos asumir que siempre se hacen cambios de contexto entre hilos y la diferencia está en si esos hilos son o no del mismo proceso.
Si los hilos son del mismo proceso, entonces guardar el estado requiere muy poca cosa. Siempre depende de la arquitectura pero en una arquitectura x86 (la que estamos más acosumbrados a ver) alcanza con guardar los registros de la CPU (recordá que entre los registros de la CPU se tiene el registro de base y tope del stack y el registro de puntero a instrucción).
Cuando el cambio de contexto es entre hilos de diferentes procesos, entonces hay que hacer algunas cosas más. Por ejemplo: cambiar el espacio de direccionamiento de memoria, invalidar caches, etc.
Saludos,
Santiago.