Cambio de contexto (i) - PowerPoint PPT Presentation

About This Presentation
Title:

Cambio de contexto (i)

Description:

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 ... – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 16
Provided by: josea188
Category:
Tags: cambio | contexto

less

Transcript and Presenter's Notes

Title: Cambio de contexto (i)


1
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
    a procedimiento normal? ...

2
Cambio de contexto (ii)
call return
P1
P2
M. Usuario M. Kernel


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


switch_context()
en detalle, a continuación
3
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
  • Instrucción i-ésima a ejecutar

4
1º - 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
5
2º - 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
6
3º - 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
7
4º - 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
8
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.

9
5º - 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
10
6º - 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
11
7º - 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
12
8º - 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
13
Observaciones
  • 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
14
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 en Problema 4 de Temas 1 y 2.

15
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).
Write a Comment
User Comments (0)
About PowerShow.com