Você está na página 1de 48











Multiprogramación
,1*(1,(5Ë$(1,1)250È7,&$
6LVWHPDVGH2SHUDFLyQ

81,9(56,'$'1$&,21$/(;3(5,0(17$/'(*8$<$1$

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• El SOP multiprogramación carga en


memoria principal varios programas y el
“distribuidor” asigna el procesador a los
procesos “preparados” que esperan por él.
• En general se aprovechan:
a) Los tiempos muertos del procesador.
b) Los tiempos de acceso a periféricos.
c) El espacio de memoria principal no ocupado
por procesos o por el SOP.

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• Ejemplo: Dos procesos P1 y P2; cada uno


se ejecuta 1 seg. y espera otro seg. Esto se
repite 60 veces:
ƒ Ejecución de procesos sin multiprogramación
(utilización 50%):

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

ƒ Ejecución de procesos con multiprogramación


(utilización 100%):

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• La ejecución se realiza de forma solapada


en el tiempo (concurrentemente) de modo
que parece que los procesos se ejecutan
simultáneamente (no confundir concurrencia
con paralelismo).
• En un intervalo de tiempo determinado se
ejecutan alternativamente (a trozos) varios
procesos ubicados en la memoria principal.

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• El número de procesos en memoria


principal preparados para su ejecución está
limitado por el tamaño de ésta.
• Para evitar esta limitación se puede bajar a
disco (memoria secundaria) un proceso de
los que está en memoria principal para dar
cabida a otro.
• El proceso que permanece en memoria
secundaria se carga nuevamente a memoria
principal cuando llegue su turno.
6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• Este mecanismo de intercambio memoria


principal / disco se denomina VZDSSLQJ.
• Si la relación capacidad de memoria
principal / número de procesos es baja,
aumenta el intervalo de tiempo entre dos
turnos, haciendo más lento el sistema (una
posible solución es aumentar
adecuadamente la memoria principal).

6LVWHPDV2SHUDWLYRV
,QWURGXFFLyQ

• Ejemplo:

6LVWHPDV2SHUDWLYRV
3URFHVR

• Es la imagen (copia) de un programa en


ejecución.
• Contiene:
a) Una copia del código ejecutable del programa
y de su área de datos.
b) La información acerca de su estado de
ejecución:
ƒ Los valores del contador del programa (SURJUDP
FRXQWHU), registros y variables.
ƒ Información necesaria para su administración por
parte del SOP (id, prioridad, etc.).

6LVWHPDV2SHUDWLYRV
3URFHVR

• Ubicación en memoria:

6LVWHPDV2SHUDWLYRV
3URFHVR

• Necesita recursos para poder ejecutarse:


memoria, dispositivos de E/S, CPU, etc.
• ¿Por qué usarlos?
ƒ 6LPSOLFLGDG:
o Cada actividad se aísla / envasa en un proceso.
o Cada proceso trata con el SOP de forma
independiente.
ƒ 9HORFLGDG:
o Si un proceso se bloquea (esperando un recurso)
se cambia a otro dando la ilusión de tener más de
una CPU.
o Ejecución simultánea de varias procesos.

6LVWHPDV2SHUDWLYRV
3URFHVR

ƒ 6HJXULGDG:
o Se reducen los efectos de un error.
o Los programas tienen la ilusión de que están sólos.
o Cada proceso se ejecuta en su propio espacio de
direcciones (no puede acceder directamente a
espacios de direcciones de otros procesos).
o Su ejecución y posibles errores está confinada a su
espacio ⇒ compartir información se complica ⇒
hay un costo implícito.
• Proceso = CPU virtual.

6LVWHPDV2SHUDWLYRV
3URFHVR

• Un proceso cambia de estado a medida


que se ejecuta:
ƒ 1XHYR: recién creado por el SOP.
ƒ (QHMHFXFLyQ: está en la CPU ejecutando
instrucciones.
ƒ %ORTXHDGR: esperando a que ocurra un
evento (ej: una operación de E/S).
ƒ 3UHSDUDGR: esperando a que le asignen un
procesador (CPU).
ƒ 7HUPLQDGR: no ejecutará más instrucciones y
el SOP le retirará los recursos que consume.

6LVWHPDV2SHUDWLYRV
3URFHVR

6LVWHPDV2SHUDWLYRV
3URFHVR

• Creación de procesos:
ƒ Un proceso se crea mediante una llamada al
sistema (ej: “CreateProcess”, “fork”, etc.).
ƒ El proceso creador (que hace la llamada) se
denomina “padre” y el proceso creado
(resultado de la llamada) se llama “hijo”.
ƒ Aspectos a considerar en la relación padre/hijo:
1. Compartición de recursos: todos, algunos, ninguno.
2. Espacio de memoria: clonado, nuevo.
3. Sincronización del padre: ¿esperar a que el hijo
termine?
4. Terminación.

6LVWHPDV2SHUDWLYRV
3URFHVR

ƒ Pasos a seguir por el SOP:


1. Asignarle un PCB.
2. Establecer su contexto de memoria (espacio de
direcciones).
3. Cargar imagen (ejecutable) en memoria.
4. Ajustar su contexto de CPU (registros).
5. Marcar la tarea como ejecutable:
a. Saltar al punto de entrada, o
b. Poner el proceso en la cola de procesos preparados.

6LVWHPDV2SHUDWLYRV
3URFHVR

• Terminación de procesos:
ƒ Un proceso termina cuando invoca al sistema
una llamada específica (ej: “exit”).
ƒ También si se genera una excepción y el SOP
decide abortarlo.
ƒ En UNIX, cuando un proceso termina, con él
muere su descendencia (genocidio).
ƒ Podría existir una llamada al sistema para
abortar otro proceso.

6LVWHPDV2SHUDWLYRV
3URFHVR

ƒ Pasos a seguir por el SOP:


1. Envío de datos del proceso creado al creador (ej:
código de finalización).
2. Desasignar los recursos que tiene.
ƒ Un proceso puede finalizar la ejecución de otro
si:
a. Ha sobrepasado los recursos asignados.
b. La tarea asignada al proceso ya no es necesaria.
c. Va a finalizar y el SOP no permite que los procesos
creados por él puedan continuar: terminación en
cascada.

6LVWHPDV2SHUDWLYRV
3URFHVR

• Comunicación de procesos:
ƒ Los procesos pueden tener distintas relaciones
de comunicación entre sí:
a) Independientes/competidores: los procesos
compiten por el uso de recursos escasos.
b) Cooperantes: los procesos colaboran entre sí para
llevar a cabo un objetivo común.

6LVWHPDV2SHUDWLYRV
3URFHVR

• Ejemplos de algunas rutinas del API de


UNIX y Win32 para manejar procesos.

6LVWHPDV2SHUDWLYRV
&RQWH[WR

• Por cada proceso, el SOP guarda toda la


información (contexto) que se debe man-
tener mientras éste no se está ejecutando:
a) Estado actual.
b) Registros de la CPU.
c) Información del planificador (id, prioridad, etc.).
d) Apuntadores a las zonas de memoria.
e) Información de contabilidad (tiempo
consumido, etc.).
f) Información de E/S (dispositivos que espera,
archivos abiertos, etc.).
g) Etc.
6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

• Cuando un proceso se está ejecutando, su


contexto está cargado en los registros de la
CPU.
• Cuando el SOP detiene la ejecución de un
proceso, salva su contexto en un PCB
(3URFHVV&RQWURO%ORFN).
• La acción de conmutar (VZLWFKLQJ) 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.
6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

ƒ Es una operación de “tiempo perdido” ⇒ debe


ser lo más rápido posible → suele tardar
menos de 1 ms.
ƒ En máquinas con dos modos de funcionamien-
to (usuario y núcleo), el contexto se puede
separar en cada uno de los modos:
1. Contexto de usuario.
2. Contexto en modo núcleo.
ƒ En estos casos, al pasar un proceso de modo
usuario a núcleo, el SOP salva el contexto de
usuario y utiliza el de modo núcleo. Al retornar,
se restaura el contexto de usuario.
6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

ƒ Ejemplo: relación tiempo en ejecución / tiempo


ocioso en el cambio de contexto de dos
procesos (P0 y P1).

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

ƒ Ejemplo: suponer la existencia de los procesos


P1 (ejecutando la instrucción n que es una
llamada al sistema) y P2 (se ejecutó
anteriormente y ahora está esperando su turno
nuevamente).
Código del SOP
Estructura de datos
Flujo de control
Salvar estructuras de datos
Instrucción i-ésima a ejecutar

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

1) P1 ejecuta n

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

2) Salva contexto usuario y ejecuta modo kernel

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

3) Parar proceso, invoca la rutina de cambio de


contexto (switch_context)

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

4) “switch_context()” salva contexto kernel

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

5) Reponer contexto kernel de P2

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

6) El kernel termina la función que inició de P2

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

7) Retorno a modo usuario

6LVWHPDV2SHUDWLYRV
&DPELRGHFRQWH[WR

8) Se reanuda ejecución de P2

6LVWHPDV2SHUDWLYRV
7LSRVGH0XOWLSURJUDPDFLyQ

• La multiprogramación puede ser:


a) Clásica:
ƒ El planificador da el turno a un programa
determinado; cuando éste tiene que realizar una
operación de E/S le da el control del procesador a
otro programa.
ƒ Cuando un programa finaliza una operación de E/S,
el periférico se lo comunica a la CPU (interrupción)
para cederle el control la próxima ocasión que le
toque su turno.
ƒ Aquellos procesos con mucho cálculo y poca E/S
pueden monopolizar la CPU.

6LVWHPDV2SHUDWLYRV
7LSRVGH0XOWLSURJUDPDFLyQ

b) Tratamiento paralelo:
ƒ A cada uno de los procesos en memoria se le
asigna un intervalo de tiempo fijo o período 7
llamado TXDQWXP (décima de segundos).
ƒ Al finalizar el TXDQWXP asignado a un proceso, el
control de la CPU pasa al siguiente proceso.
ƒ La cuenta del tiempo se realiza mediante un circuito
contador activado por el reloj de la CPU; al
transcurrir el período 7 se genera una interrupción
de la CPU.

6LVWHPDV2SHUDWLYRV
7LSRVGH0XOWLSURJUDPDFLyQ

c) Tiempo compartido:
ƒ Se asigna el control de la CPU a un nuevo proceso
interrumpiendo al anterior siempre que este último
agote su TXDQWXP de tiempo o que entre en la
ejecución de una instrucción de E/S.
ƒ Es una combinación de las dos modalidades
anteriores.
ƒ La CPU trabaja el 100% en determinados intervalos
según el tipo de carga..

6LVWHPDV2SHUDWLYRV
7LSRVGH0XOWLSURJUDPDFLyQ

• La multiprogramación se puede realizar de


dos maneras:
a) No apropiativa:
ƒ Multiprogramación clásica.
ƒ Es la que se utilizó inicialmente (MS-DOS y
MacOS).
ƒ Un proceso se ejecuta hasta que: 1) termina; 2)
inicia una operación de E/S; 3) se bloquea por otro
servicio solicitado al SOP; 4) el propio proceso
cede el procesador mediante una llamada al SOP.

6LVWHPDV2SHUDWLYRV
7LSRVGH0XOWLSURJUDPDFLyQ

a) Apropiativa o preferente:
ƒ MS-Windows, UNIX, Linux.
ƒ El SOP puede interrumpir en cualquier momento el
proceso activo para ceder CPU a otro proceso
preparado.
ƒ El algoritmo de planificación decide qué proceso se
detiene y cuál de los procesos preparados pasa a
activo.

6LVWHPDV2SHUDWLYRV
+LORV

• En un proceso confluyen dos ideas:


ƒ Flujo de control: secuencia de instrucciones a
ejecutar, determinadas por el PC, la pila y los
registros.
ƒ Espacio de direcciones: direcciones de
memoria a las que puede acceder el proceso y
recursos asignados (archivos, memoria, etc.).
• ¿Cómo permitir más de un flujo de control
dentro del mismo espacio de direcciones?

6LVWHPDV2SHUDWLYRV
+LORV

• Un hilo / hebra (WKUHDG) o proceso ligero es


una unidad básica de ejecución con su
propio:
ƒ Contador de programas.
ƒ Registros de CPU.
ƒ Pila (VWDFN).
• Los hilos de una misma aplicación
comparten:
ƒ Código y datos.
ƒ Recursos del SOP (archivos, E/S, etc.).

6LVWHPDV2SHUDWLYRV
+LORV

• Dos niveles de procesos:


ƒ Pesados: contienen uno o varios hilos que
comparten la misma memoria y recursos.
ƒ Ligeros o hilos.
• Los hilos pueden ser implementados tanto
por el SOP como por el programa usuario.
• Para los hilos programados por el usuario:
ƒ El SOP no aplica protección entre ellos ya que
no conoce su existencia.
ƒ Si un hilo se bloquea, la tarea completa
también se bloquea.
6LVWHPDV2SHUDWLYRV
+LORV

• El objetivo es facilitar la escritura de


aplicaciones concurrentes cooperativas:
ƒ Dado que todos los hilos comparten los
recursos, un proceso pesado puede contener
decenas de hilos sin mucho costo adicional
(sólo los pequeños BCP de sus hilos).
ƒ La comunicación entre los hilos del proceso es
más sencilla (usando la memoria que
comparten).
ƒ El cambio de contexto entre hilos de un mismo
proceso pesado es menos costoso.

6LVWHPDV2SHUDWLYRV
+LORV

• Ejemplo: Solaris 2.x es una versión multihilo


de UNIX; los hilos son identificados como
LWP (Lightweight Process).

6LVWHPDV2SHUDWLYRV
+LORV

• ¿Por qué no usar procesos con memoria


compartida?
ƒ Los procesos son más costosos: creación,
destrucción, cambio de contexto, etc.
ƒ Los procesos consumen mucha más memoria.
ƒ No es posible crear tantos procesos como
hilos.
• Código reentrante: aquél que funciona
correctamente si dos o más hilos lo
ejecutan simultáneamente (WKUHDGVDIH).

6LVWHPDV2SHUDWLYRV
+LORV

• Ejemplos de algunas rutinas del API de


UNIX y Win32 para manejar hilos.

6LVWHPDV2SHUDWLYRV
3URFHVRV&RQFXUUHQWHV

• Un SOP de multiprogramación soporta


múltiples procesos concurrentes; permite
además que residan simultáneamente en la
memoria principal las instrucciones y datos
procedentes de dos o más procesos
disjuntos.
• La multiprogramación implica multiproceso
pero el multiproceso no implica
multiprogramación.

6LVWHPDV2SHUDWLYRV
3URFHVRV&RQFXUUHQWHV

• Concurrencia (en términos de un SOP) es


la existencia simultánea de varios procesos
en ejecución.
• Existencia simultánea (concurrencia) no
implica ejecución simultánea (paralelismo).
• El paralelismo es un caso particular de
concurrencia.
• La concurrencia implica que los procesos
sean cooperativos entre sí ⇒ se requiere
manejar sincronización y comunicación.
6LVWHPDV2SHUDWLYRV
3URFHVRV&RQFXUUHQWHV

• Comunicación ⇒ intercambio de
información entre los procesos.
• Sincronización ⇒ detener un proceso hasta
que se produzca un determinado evento o
se den ciertas condiciones.
• Ambos procesos requieren estrategias y
técnicas de solución.

6LVWHPDV2SHUDWLYRV

Você também pode gostar