Sie sind auf Seite 1von 15

Cambio 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
Sistemas Operativos I a procedimiento normal? ...
1
José Antonio Gómez
Cambio de contexto
(ii)
P1 call
return P2

M. Usuario
M. Kernel


switch_context(P1,P2) (a) switch_context(P2,P1)

switch_context()
Sistemas Operativos I … en detalle, a continuación …
2
José Antonio Gómez
Ilustració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
Sistemas Operativos I Instrucción i-ésima a ejecutar
3
José Antonio Gómez
1º - P1 ejecuta n
Memoria Máquina en modo usuario

n int c Proceso 1 CPU

Proceso 2 n+1 PC
i SP
Llamada 1 Llamada 2
c

registros
j

Otros
switch_context(P1,P2) ...
t,v,x,y kj
l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
4
José Antonio Gómez
2º - Salva contexto
usuario y ejecuta fon
kernel Máquina en modo kernel
Memoria

n Proceso 1 CPU

Proceso 2 n+1 PC
i SP
Llamada 1 Llamada 2
c

registros
j

Otros
switch_context(P1,P2) ...
Salva
contexto t,v,x,y kj
Usuario
y l,n,o,p
ejecuta
código Contexto kernel
kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
5
José Antonio Gómez
3º - Parar proceso, invoca
a cambio_contexto
Memoria Máquina en modo kernel

n Proceso 1 CPU

Proceso 2 c+i+1 PC
m SP
Llamada 1 Llamada 2
c

registros
r

Otros
c+i switch_context(P1,P2) ...
Invoca a
switch_ t,v,x,y sj
context
n+1,i,j,k l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
6
José Antonio Gómez
4º - Cambio_contexto()
salva contexto kernel
Memoria Máquina en modo kernel

n Proceso 1 CPU

Proceso 2 c+i+1 PC
m SP
Llamada 1 Llamada 2
c

registros
r

Otros
c+i switch_context(P1,P2) ...
s_c salva
contexto t,v,x,y sj
kernel
n+1,i,j,k l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
7
José Antonio Gómez
¿Có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.

Sistemas Operativos I
8
José Antonio Gómez
5º - Repone contexto
kernel de P2
Memoria Máquina en modo kernel

n Proceso 1 CPU

Proceso 2 t PC
v SP
Llamada 1 Llamada 2
c
t

registros
x

Otros
switch_context(P1,P2) ...
c+i,m,r,s t,v,x,y yj

n+1,i,j,k l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
9
José Antonio Gómez
6º - El kernel termina
la fon que inicio de P2
Memoria Máquina en modo kernel

n Proceso 1 CPU

Proceso 2 t PC
v SP
Llamada 1 Llamada 2
c
t

registros
x

Otros
switch_context(P1,P2) ...
c+i,m,r,s yj

n+1,i,j,k l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
10
José Antonio Gómez
7º - Finalizada f , on

retorna a modo
usuario
Memoria Máquina en modo kernel
El kernel repone
el contexto de usuario
n Proceso 1 CPU

Proceso 2 l PC
n SP
Llamada 1 Llamada 2
c
t

registros
o

Otros
switch_context(P1,P2) ...
c+i,m,r,s pj

n+1,i,j,k l,n,o,p
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
11
José Antonio Gómez
8º - reanudamos
ejecución de P2
Máquina en modo usuario

Proceso 1 CPU

l Proceso 2 l PC
n SP
Llamada 1 Llamada 2
c
t

registros
o

Otros
switch_context(P1,P2) ...
c+i,m,r,s pj

n+1,i,j,k
Contexto kernel
PCB1 I
Sistemas Operativos PCB2 Contexto usuario
Resto información
12
José Antonio Gómez
Observaciones
Cuando conmutamos
al proceso P2, este Contexto
modo
tiene la estructura de kernel
PCB que aparece el el
Contexto
dibujo adjunto. Es modo
decir, hemos supuesto usuario
que se ha ejecutado
Información
con anterioridad. general del
¿Qué pasa si acabo de PCB
lanzar P2?
Sistemas Operativos I
13
José Antonio Gómez
Respuesta
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
Sistemas Operativos I en Problema 4 de Temas 1 y 2.
14
José Antonio Gómez
Mecá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).
Sistemas Operativos I
15
José Antonio Gómez

Das könnte Ihnen auch gefallen