PDF de programación - Procesos y hebras

Imágen de pdf Procesos y hebras

Procesos y hebrasgráfica de visualizaciones

Publicado el 8 de Mayo del 2019
800 visualizaciones desde el 8 de Mayo del 2019
1,2 MB
101 paginas
Creado hace 15a (30/09/2008)
2

hebras

• La abstracción proceso
• Hebras y procesos ligeros
• Operaciones sobre procesos
• Planificación

El argumento de la
El argumento de la
simplicidad
simplicidad

El mejor modo de resolver un problema
complejo es dividirlo en subproblemas más
pequeños.
En un SO, y otros programas complejos,
existen actividades que ocurren a la vez: 10
solicitudes de disco, 2 mensajes de red, 7
pulsaciones de teclas, 20 aplicaciones, …
Para programar tal sistema:

(a) un programa que lo gestiona todo.
(b) aislar cada actividad en un proceso.

SOI

2

El bucle del SO
El bucle del SO

Podríamos construir el SO como:
for (;;) {

if (aplicación())
if (MensajeRed())
if (TeclaPulsada)()
if (BlokeDiscoListo())
...

Ejecutar();
ObtenMensaje();
ObtenTecla();
ObtenBloque();

}
! La producción del bucle está limitada por
la función más lenta ¡ Esto NO es
aceptable en un SO real (imagina: entorno
de ventanas que no atiende al ratón
mientras dibuja una ventana).

SOI

3

¿Por qué usar procesos ?
¿Por qué usar procesos ?

Simplicidad - en un sistema existen muchas
operaciones independientes (gcc, lpr, edit,..)
que podemos envasar cada una en un
proceso, acotando así sobre lo que tenemos
que razonar.
Velocidad - si un proceso se bloquea (espe-
rando por disco, teclado, red,…) cambiamos
a otro, como si tuviésemos más de una CPU.
Seguridad - limitamos los efectos de un
error.
Usamos intercambiablemente los términos proceso (process),
tarea (task), y trabajo (job).

SOI

4

Simplicidad
Simplicidad

Aislando cada actividad en un proceso:
tratamos con un proceso cada vez, y
los procesos sólo tratan con el SO.

Interrupciones

editor
shell

www
SO

gcc

ls|ps

Interrupciones

editor

gcc

Ls | ps

www

shell

SOI

5

Velocidad
Velocidad

Los SOs actuales permiten la ejecución
simultánea de varios procesos
(seudoparalelismo):

A

B

C

Vista conceptual

Ejecución

Seudoparalela
Secuencial

A
B
C

A
B
C

Sin usar CPU

SOI

Tiempo

Tiempo

6

Seguridad
Seguridad

Vamos a hacer creer a los programas que
están solos en la máquina.
Cada proceso se ejecuta en SU propio
espacio de direcciones –> no puede
acceder directamente a espacios de
direcciones de otros procesos (lo veremos
en los Temas 4-5 ).
Su ejecución esta confinada a su espacio y
también sus errores.
Coste: compartir información se complica

SOI

7

En la vida real …
En la vida real …

SOI

8

Proceso = CPU virtual
Proceso = CPU virtual

Proceso = “programa en ejecución” = un
flujo secuencial de ejecución en su propio
espacio de direcciones.
Un proceso es un recurso virtual - una
abstracción que desacopla la CPU física del
recurso de computo presentado al
programa - creamos la ilusión de tener
más de una CPU.

SOI

9

Idea de implementación
Idea de implementación

Multiplexamos la CPU en el tiempo, hacemos
creer a cada proceso que es único en la máq.

Programa

memoria

memoria

+

Programa

CPU

CPU

Máquina_1

Máquina_2

SOI

Proceso 1

Programa

Estado Máq_1
Estado Máq_2

Programa
Programa

Proceso 2

CPU

10

¿Qué hay en un proceso?
¿Qué hay en un proceso?

Para representar un proceso debemos
recoger toda la información que nos de el
estado de ejecución de un programa:

el código y datos del programa.
una pila de ejecución.
el PC indicando la próxima instrucción.
los valores actuales del conjunto de
registros de la CPU.
un conjunto de recursos del sistema
(memoria, archivos abiertos, etc.).

SOI

11

Estado de un proceso
Estado de un proceso

Varios procesos pueden ejecutar incluso el
mismo programa (p.ej. un editor) pero cada
uno uno tiene su propia representación.
Cada proceso está en un estado de ejecución
que caracteriza lo que hace y determina las
acciones que se pueden sobre él.

Preparado - en espera de la CPU.
Ejecutándose - ejecutando instrucciones.
Bloqueado - esperando por un suceso.

Conforme un programa se ejecuta, pasa de
un estado a otro.

SOI

12

Diagrama de estados
Diagrama de estados

Nuevo

Admitido

Interrupción

Finalizado

Preparado

Ejecutándose

Fin de E/S
o suceso

Planificación

Bloqueado(s)

Espera por
E/S o suceso

Estado
Transición

13

SOI

Bloque de Control de
Bloque de Control de
Proceso
Proceso

Bloque de Control del Proceso (PCB) –
estructura de datos que representa al pro-
ceso; contiene su información asociada:
Identificador del proceso en el sistema.
Estado del proceso.
Copia de los registros de la CPU.
Información de planificación.
Información para la gestión de memoria.
Información del estado de las E/S.
Información de contabilidad. ...

SOI

14

PCB’s y estado hardware
PCB’s y estado hardware

Cuando un proceso esta ejecutándose, los
valores de su PC, puntero a pila, registros,
etc., es decir, su contexto, está cargado en
los registros de la CPU.
Cuando el SO detiene la ejecución de un
proceso, salva su contexto en su PCB.
La acción de conmutar la CPU de un
proceso a otro se denomina cambio de
contexto. Los sistemas de tiempo compartido realizan
de 10 a 100 cambios de contexto por segundo.
Un cambio de contexto suele tardar menos de 1 ms. Este
trabajo es puramente sobrecarga.

SOI

15

Contexto y modo dual
Contexto y modo dual

En máquinas con dos modos de
funcionamiento, separamos el contexto en
dos, uno por modo:
Contexto de usuario – contexto utilizado
cuando se ejecuta en modo usuario.
Contexto en modo kernel – cuando el
proceso se ejecuta en modo kernel.
Al pasar un proceso de modo usuario a
kernel, el SO salva el contexto de usuario y
utiliza el de modo kernel. Al retornar,
restauramos el contexto de usuario.

SOI

16

Cambio de contexto (i)
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? ...

SOI

17

Cambio de contexto (ii)
Cambio de contexto (ii)

P1

M. Usuario
M. Kernel

switch_context(P1,P2)



(a)


call
return

P2





switch_context(P2,P1)

SOI

switch_context()

… en detalle a continuación

18

Ilustración del cambio de
Ilustración del cambio de
contexto: supuestos
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:

i

SOI

Código del SO
Estructura de datos
Flujo de control
Salvar estructuras de datos
Instrucción i-ésima a ejecutar

19

1º1º - P - P11 ejecuta
ejecuta nn

Memoria

Máquina en modo usuario

n

int c

Proceso 1

Llamada 1

c

Proceso 2

Llamada 2

switch_context(P1,P2)

PCB1

SOI

t,v,x,y
l,n,o,p

PCB2

CPU

n+1

i

j

k
j

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

20

2º2º - Salva contexto usuario
- Salva contexto usuario
y ejecuta fonon kernel
kernel
y ejecuta f

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

t,v,x,y
l,n,o,p

PCB2

PCB1

n

c

y

Salva
contexto
Usuario
ejecuta
código
kernel
SOI

Máquina en modo kernel

CPU

n+1

i

j

k
j

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

21

3º3º - Parar proceso, invoca a
- Parar proceso, invoca a
cambio_contexto
cambio_contexto

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

n+1,i,j,k

PCB1

t,v,x,y
l,n,o,p

PCB2

n

c
c+i

Invoca a
switch_
context

SOI

Máquina en modo kernel

CPU

c+i+1

m

r

s
j

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

22

Cambio_contexto()
4º4º - - Cambio_contexto()
salva contexto kernel
salva contexto kernel

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

n

c
c+i

s_c salva
contexto
kernel

SOI

n+1,i,j,k

PCB1

t,v,x,y
l,n,o,p

PCB2

Máquina en modo kernel

CPU

c+i+1

m

r

s
j

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

23

¿Cómo estamos?
¿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.

SOI

24

5º5º - Repone contexto
- Repone contexto
kernel de P22
kernel de P

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

c+i,m,r,s
n+1,i,j,k
PCB1

t,v,x,y
l,n,o,p

PCB2

n

c

SOI

Máquina en modo kernel

CPU

t
v

x

y
j

t

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

25

6º6º - El kernel termina la
- El kernel termina la
ffonon que inicio de P
que inicio de P22

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

c+i,m,r,s
n+1,i,j,k
PCB1

l,n,o,p

PCB2

n

c

SOI

Máquina en modo kernel

CPU

t
v

x

y
j

t

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

26

- Finalizada fonon, retorna
, retorna

7º7º - Finalizada f
a modo usuario
a modo usuario

Memoria

Proceso 1

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

c+i,m,r,s
n+1,i,j,k
PCB1

l,n,o,p

PCB2

n

c

SOI

Máquina en modo kernel

El kernel repone

el contexto de usuario

CPU

l
n

o

p
j

t

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

Contexto kernel
Contexto usuario
Resto información

27

8º8º - reanudamos
- reanudamos
ejecución de P22
ejecución de P

Máquina en modo usuario

Proceso 1

CPU

Proceso 2

Llamada 1

Llamada 2

switch_context(P1,P2)

l
n

o

p
j

t

. . .

PC
SP

s
o
r
t

O

s
o
r
t
s
g
e
r

i

l

c

SOI

c+i,m,r,s
n+1,i,j,k
PCB1

PCB2

Contexto kernel
Contexto usuario
Resto información

28

Observaciones
Observaciones

Cuando conmutamos al
proceso P2, este tiene la
estructura de PCB
  • Links de descarga
http://lwp-l.com/pdf15868

Comentarios de: Procesos y hebras (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad