Вы находитесь на странице: 1из 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) podra ser
una rutina en lo ms 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 funcin de una
llamada a procedimiento normal? ...
Sistemas
Operativos
I 67
Jos Antonio Gmez
Cambio de contexto (ii)

P1 call
return P2

M. Usuario
M. Kernel
3
1
switch_context(P1,P2) (a) switch_context(P2,P1)
2
4

switch_context()
Sistemas en detalle, a continuacin
Operativos
I 68
Jos Antonio Gmez
Ilustracin del cambio de
contexto: supuestos
Suponemos dos procesos:
P1 esta ejecutando la instruccin n que
es una llamada al sistema.
P2 se ejecut anteriormente y ahora
esta en el estado preparado esperando
su turno.
Convenio:
Cdigo del SO
Estructura de datos
Flujo de control
Salvar estructuras de datos
Sistemas Instruccin i-sima a ejecutar
Operativos
I 69
Jos Antonio Gmez
1 - P1 ejecuta n
Memoria Mquina 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
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 70
Jos Antonio Gmez
2 - Salva contexto usuario
y ejecuta fon kernel
Memoria Mquina en modo kernel

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
cdigo Contexto kernel
kernel
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 71
Jos Antonio Gmez
3 - Parar proceso, invoca a
cambio_contexto
Memoria Mquina 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
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 72
Jos Antonio Gmez
4 - Cambio_contexto()
salva contexto kernel
Memoria Mquina 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
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 73
Jos Antonio Gmez
Cmo estamos?
Llegados a este punto P1 esta detenido,
congelado y nos disponemos a reanudar,
descongelar, a P2 (que previamente
habamos parado en algn instante
anterior).
Es decir, estamos en el punto marcado
como (a) en la transparencia 18.

Sistemas
Operativos
I 74
Jos Antonio Gmez
5 - Repone contexto
kernel de P2
Memoria Mquina en modo kernel

n Proceso 1 CPU

Proceso 2 t PC
v SP
Llamada 1 Llamada 2
c

registros
t 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
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 75
Jos Antonio Gmez
6 - El kernel termina la
fon que inicio de P2
Memoria Mquina en modo kernel

n Proceso 1 CPU

Proceso 2 t PC
v SP
Llamada 1 Llamada 2
c

registros
t x

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

n+1,i,j,k l,n,o,p
Contexto kernel
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 76
Jos Antonio Gmez
7 - Finalizada fon, retorna
a modo usuario
Memoria Mquina 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

registros
t o

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

n+1,i,j,k l,n,o,p
Contexto kernel
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 77
Jos Antonio Gmez
8 - reanudamos
ejecucin de P2
Mquina en modo usuario

Proceso 1 CPU

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

registros
t o

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

n+1,i,j,k
Contexto kernel
Sistemas
PCB1 PCB2 Contexto usuario
Operativos Resto informacin
I 78
Jos Antonio Gmez
Observaciones
Cuando conmutamos al
proceso P2, este tiene Contexto
la estructura de PCB modo
que aparece el el
kernel

dibujo adjunto. Es Contexto


decir, hemos supuesto modo
usuario
que se ha ejecutado
con anterioridad. Informacin
general del
Qu pasa si acabo de PCB
lanzar P2?
Sistemas
Operativos
I 79
Jos Antonio Gmez
Respuesta
La llamada al sistema CrearProceso() esta
diseada 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 recin creado
se ejecute desde su primera instruccin.
Se crea un contexto kernel para que
parezca que el proceso retorna de una
llamada al sistema.
Nueva pregunta por qu hacer esto as? ...
Sistemas Respuesta en Problema 4 de Temas 1 y 2.
Operativos
I 80
Jos Antonio Gmez
Mecnica del cambio
de contexto
El cambio de contexto es muy dependiente
de la mquina: salvar registros generales y
de punto flotante, estado del coprocesador,
...
El coste del cambio de contexto proviene:
Coste directo de salvar registros de
propsito general y los especiales.
Coste indirecto de limpieza de cachs
(los datos de las cachs del proceso
actual son invlidos para el entrante).
Sistemas
Operativos
I 81
Jos Antonio Gmez

Вам также может понравиться