Академический Документы
Профессиональный Документы
Культура Документы
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
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