Title: Cambio de contexto (i)
1Cambio de contexto (i)
- Cuando hacemos un cambio de contexto, debemos
- Salvar el contexto previo.
- Restaurar el contexto nuevo.
- P. ej. switch_context(P1,P2) podrÃa ser una
rutina en lo más profundo del SO que salva el
contexto de P1 en su PCB, y restaura el nuevo
contexto del PCB de P2. - En qué se diferencia ésta función de una llamada
a procedimiento normal? ...
2Cambio de contexto (ii)
call return
P1
P2
M. Usuario M. Kernel
3º
1º
switch_context(P2,P1)
switch_context(P1,P2)
(a)
2º
4º
switch_context()
en detalle, a continuación
3Ilustración del cambio de contexto supuestos
- Suponemos dos procesos
- P1 esta ejecutando la instrucción n que es una
llamada al sistema. - P2 se ejecutó anteriormente y ahora esta en el
estado preparado esperando su turno. - Convenio
- Código del SO
- Estructura de datos
- Flujo de control
- Salvar estructuras de datos
- Instrucción i-ésima a ejecutar
41º - P1 ejecuta n
Máquina en modo usuario
Memoria
CPU
n
Proceso 1
int c
PC
n1
Proceso 2
SP
i
Llamada 2
Llamada 1
c
j
Otros registros
. . .
switch_context(P1,P2)
j
k
t,v,x,y
l,n,o,p
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
52º - Salva contexto usuario y ejecuta fon kernel
Máquina en modo kernel
Memoria
CPU
n
Proceso 1
PC
n1
Proceso 2
SP
i
Llamada 2
Llamada 1
c
j
Otros registros
. . .
switch_context(P1,P2)
Salva contexto Usuario y ejecuta código kernel
j
k
t,v,x,y
l,n,o,p
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
63º - Parar proceso, invoca a cambio_contexto
Máquina en modo kernel
Memoria
CPU
n
Proceso 1
PC
ci1
Proceso 2
SP
m
Llamada 2
Llamada 1
c
r
ci
Otros registros
. . .
switch_context(P1,P2)
Invoca a switch_ context
j
s
t,v,x,y
n1,i,j,k
l,n,o,p
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
74º - Cambio_contexto() salva contexto kernel
Máquina en modo kernel
Memoria
CPU
n
Proceso 1
PC
ci1
Proceso 2
SP
m
Llamada 2
Llamada 1
c
r
ci
Otros registros
. . .
switch_context(P1,P2)
s_c salva contexto kernel
j
s
t,v,x,y
n1,i,j,k
l,n,o,p
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
8Cómo estamos?
- Llegados a este punto P1 esta detenido,
congelado y nos disponemos a reanudar,
descongelar, a P2 (que previamente habÃamos
parado en algún instante anterior). - Es decir, estamos en el punto marcado como (a) en
la transparencia 18.
95º - Repone contexto kernel de P2
Máquina en modo kernel
Memoria
CPU
n
Proceso 1
PC
t
Proceso 2
SP
v
Llamada 2
Llamada 1
c
t
x
Otros registros
. . .
switch_context(P1,P2)
j
y
ci,m,r,s
t,v,x,y
l,n,o,p
n1,i,j,k
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
106º - El kernel termina la fon que inicio de P2
Máquina en modo kernel
Memoria
CPU
n
Proceso 1
PC
t
Proceso 2
SP
v
Llamada 2
Llamada 1
c
t
x
Otros registros
. . .
switch_context(P1,P2)
j
y
ci,m,r,s
l,n,o,p
n1,i,j,k
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
117º - Finalizada fon, retorna a modo usuario
Máquina en modo kernel
Memoria
El kernel repone el contexto de usuario
CPU
n
Proceso 1
PC
l
Proceso 2
SP
n
Llamada 2
Llamada 1
c
t
o
Otros registros
. . .
switch_context(P1,P2)
j
p
ci,m,r,s
l,n,o,p
n1,i,j,k
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
128º - reanudamos ejecución de P2
Máquina en modo usuario
CPU
Proceso 1
l
PC
l
Proceso 2
SP
n
Llamada 2
Llamada 1
c
t
o
Otros registros
. . .
switch_context(P1,P2)
j
p
ci,m,r,s
n1,i,j,k
Contexto kernel Contexto usuario Resto información
PCB2
PCB1
13Observaciones
- Cuando conmutamos al proceso P2, este tiene la
estructura de PCB que aparece el el dibujo
adjunto. Es decir, hemos supuesto que se ha
ejecutado con anterioridad. - Qué pasa si acabo de lanzar P2?
Contexto modo kernel
Contexto modo usuario
Información general del PCB
14Respuesta
- La llamada al sistema CrearProceso() esta
diseñada para crear un proceso cuyo PCB tiene la
estructura anterior. - Qué valores tiene el contexto de este PCB?
- El SO ajusta los valores del contexto de usuario
para que el proceso recién creado se ejecute
desde su primera instrucción. - Se crea un contexto kernel para que parezca que
el proceso retorna de una llamada al sistema. - Nueva pregunta por qué hacer esto as� ...
Respuesta en Problema 4 de Temas 1 y 2.
15Mecánica del cambio de contexto
- El cambio de contexto es muy dependiente de la
máquina salvar registros generales y de punto
flotante, estado del coprocesador, ... - El coste del cambio de contexto proviene
- Coste directo de salvar registros de propósito
general y los especiales. - Coste indirecto de limpieza de cachés (los datos
de las cachés del proceso actual son inválidos
para el entrante).