Вы находитесь на странице: 1из 48

Procesos


Conceptos

Planificación de Procesos

Operaciones sobre Procesos

Cooperación de Procesos

Comunicación entre Procesos

Comunicación en Sistemas Client-
Server
Conceptos

Un sistema operativo ejecuta una variedad de
programas:
 Sistemas Batch – jobs
 Sistemas de tiempo compartido – programas
del usuario o tareas

Proceso y tarea se usan generalmente con el
mismo significado.

Proceso – es un programa en ejecución. La
ejecución debe realizarse en forma secuencial.

Un proceso incluye:
 un contador de programa
 stack
 sección de datos
Modelo de
Multiprogramación


Multiprogramación de 4 procesos

Modelo conceptual de 4 procesos
secuenciales independientes

Un solo proceso activo en un instante
dado
Estados de un Proceso


A medida que un proceso se ejecuta, cambia
de estado
 nuevo: el proceso está siendo creado.
 ejecutando: el proceso se está ejecutando.
 esperando: el proceso está esperando la
ocurrencia de un evento.
 listo: el proceso está listo esperando ser
ejecutado.
 finalizado: el proceso ha terminado la
ejecución.
Diagrama de Estados
Bloque de Control de
Proceso (PCB)
Información asociada a cada
proceso.
 Estado del proceso
 Contador del programa
 Registros de CPU
 Información de planificación de CPU
 Información de manejo de memoria
 Información esta
 Información de estado de E/S
Bloque de Control de
Proceso (PCB)
Cambio de CPU de Proceso
a Proceso
Modelo de 2 Estados
Modelo de 2 Estados
Creación de Procesos
Razones para la creación de
un proceso
Razones para la terminación
de un proceso
MODELO DE PROCESO DE
CINCO ESTADOS
PROCESO DE CINCO
ESTADOS
PROCESO DE CINCO
ESTADOS
Razones para la suspensión
de un proceso
ESTRUCTURAS DE
CONTROL DEL SISTEMA
OPERATIVO
Estructura general de las
tablas de control del SO
Estructura general de las
tablas de control del SO

Elementos típicos
Procesos de usuario en
memoria virtual
Estructuras de listas de
procesos
CONTROL DE PROCESOS

MODOS DE EJECUCIÓN
-modo usuario
-modo sistema,
modo control o modo núcleo
Funciones típicas de un
núcleo de sistema operativo
CREACIÓN DE PROCESOS

1. Asignar un identificador de proceso único al proceso


2. Reservar espacio para proceso.
3. Inicialización del bloque de control de proceso.

4. Establecer los enlaces apropiados.


5. Creación o expansión de otras estructuras de datos.
Colas de Planificación de
Procesos
 Cola de tareas – conjunto de todos los
procesos de tareas del sistema.
 Cola de procesos listos – conjunto de
todos los procesos que residen en
memoria principal, listos y esperando
ejecución.
 Colas de dispositivos – conjunto de
procesos esperando por el dispositivo de
E/S.
 Migración de procesos entre las distintas
colas.
Colas de Procesos Listos y Dispositivos de
E/S
Planificadores

 Planificador a largo plazo (Long-


term scheduler/Job scheduler) –
selecciona que proceso debería ser
ingresado en la cola de listos.
 Planificador a corto plazo (Short-
term scheduler/CPU scheduler) –
selecciona que proceso debe ser
ejecutado a continuación y asigna
la CPU.
Agregado de un
Planificador a Mediano
Plazo
Planificadores (Cont.)
 El planificador a corto plazo es invocado muy
frecuentemente (milisegundos)  (debe ser
muy rápido).
 El planificador a largo plazo es invocado menos
frecuentemente (segundos, minutos) 
(pueden ser más lentos).
 El planificador a largo plazo determina el grado
de multiprogramación.
 Los procesos pueden describirse como:
 Procesos limitados por E/S – pasan más tiempo haciendo
E/S que realizando computaciones, muchos ráfagas cortas
de uso de CPU.
 Procesos limitados por CPU – pasan la mayor parte del
tiempo haciendo computaciones, pocas ráfagas largas de
uso de CPU.
Cambio de Contexto
 Cuando la CPU cambia de un proceso a
otro, el sistema debe guardar el estado
del proceso viejo y cargar el estado
guardado del nuevo proceso.
 El cambio de contexto desperdicia
tiempos; el sistema no hace ninguna
tarea útil durante este intercambio.
 El tiempo depende del soporte de
Hardware.
Creación de Procesos
 Un proceso padre crea procesos hijos, que
a su ves crean otros procesos, formando un
árbol de procesos.
 Formas de compartir recursos
 Padre e hijo comparten todos los recursos.
 El hijo comparte un subconjunto de los recursos
del padre.
 Padre e hijo no comparten recursos.
 Ejecución
 Padre e hijo ejecutan en forma concurrente.
 El padre espera que el hijo termine.
Creación de Procesos
(Cont.)
 Espacio de direcciones
 El hijo duplica el del padre.
 Se carga un programa en el proceso
hijo.
 Ejemplos UNIX
 fork llamada al sistema para crear un
proceso
 exec llamada al sistema usada
después del fork para reemplazar la
memoria del proceso con un nuevo
programa
Árbol de Procesos en un
Sistema UNIX
Terminación de Procesos
 El proceso ejecuta su última instrucción y
notifica al sistema operativo (exit).
 Los recursos del proceso son liberados por el
sistema operativo.
 El padre puede terminar la ejecución de un
hijo(abort).
 El hijo a excedido el uso de alguno de los
recursos asignados.
 La tarea asignada al hijo no se necesita más.
 El padre terminó.
 El sistema operativo no permite que los hijos
continúen si el padre terminó.
 Terminación en cascada.
Procesos Cooperativos
 Procesos independientes no pueden
afectar ni ser afectados por la ejecución
de otro proceso.
 Procesos cooperativos pueden afectar y
ser afectados por la ejecución de otro
proceso.
 Ventajas de la cooperación entre
procesos
 Compartir información
 Aceleración de los cálculos
 Modularidad
 Comodidad
Problema del Productor-
Consumidor
 Paradigma de procesos
cooperativos, el proceso productor
produce información que es
consumida por un proceso
consumidor.
 Buffer ilimitado no pone restricciones
de límite al tamaño del buffer.
 Buffer limitado asume que el buffer es
de un tamaño fijo. pg126Tan
Buffer-Limitado – Solución con
Memoria Compartida
 Información compartida
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item
buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
Buffer-Limitado – Proceso
Productor
item nextProduced;

while (1) {
while (((in + 1) % BUFFER_SIZE)
== out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Buffer-Limitado – Proceso
Consumidor

item nextConsumed;

while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
Comunicación entre
Procesos (IPC)
 Mecanismo que permite a los procesos
comunicarse y sincronizar sus acciones.
 Sistema de mensajes – los procesos se
comunican entre sí sin necesidad de variables
compartidas.
 IPC provee dos operaciones:
 send(message) – mensaje de tamaño fijo o variable
 receive(message)
 Si P y Q quieren comunicarse, deben:
 Establecer un enlace de comunicación entre ambos
 Intercambiar mensajes por medio de send/receive
 Implementación del canal de comunicación
 físico (por ej., memoria compartida, bus de hardware)
 lógico (por ej., propiedades lógicas)
Comunicación Directa
 Los procesos se deben nombrar
explicitamente:
 send (P, message) – enviar un mensaje al proceso P
 receive(Q, message) – recibir un mensaje del
proceso Q
 Propiedades del enlace de comunicación
 Los enlaces se establecen automáticamente.
 Un enlace está asociado a un único par de procesos.
 Entre un par de procesos existe un único enlace.
 El enlace puede ser unidireccional, pero
generalmente es bidireccional.
Comunicación Indirecta
 Los mensajes son dirigidos y recibidos de
buzones o puertos.
 Los procesos se pueden comunicar si comparten
un puerto.
 Cada puerto tiene un identificador único.
 Propiedades del canal de comunicación
 Un enlace se establece sólo si los procesos
comparten un puerto en común.
 Un enlace puede estar asociado con varios
procesos.
 Cada par de procesos puede compartir varios
enlaces de comunicación.
 Un enlace puede ser unidireccional o
bidireccional.
Comunicación Indirecta

 Operaciones
 Crear un nuevo puerto
 Enviar y recibir mensajes por medio de
un puerto
 Destruir un puerto
 Las primitivas definidas son:
send(A, message) – envía un mensaje a
un puerto A
recibir(A, message) – recibe un mensaje
de un puerto A
Comunicación Indirecta
 Puertos compartidos
 P1, P2, y P3 comparten el puerto A.
 P1, envía; P2 y P3 reciben.
 Quién obtiene el mensaje?
 Soluciones
 Permitir que un enlace esté asociado a no
más de 2 procesos.
 Permitir a un sólo proceso a la vez ejecutar
la operación receive.
 Dejar que el sistema elija quien recibe el
mensaje en arbitraria. Se le notifica al que
envía quien fue el receptor.
Sincronización

 El pasaje de mensajes puede ser


bloqueante o no bloqueante.
 Bloqueante se considera
sicrónico
 No bloqueante se considera
asincrónico
 Las primitivas send y receive
pueden ser bloqueantes o no
bloqueantes.
Buffering
 Una cola de mensajes es asociada al
enlace; implementada de 2 formas.
1. Capacidad cero – 0 mensajes
El que envía debe esperar al que recibe
(rendezvous).
2. Capacidad limitada – longitud finita de n
mensajes
El que envía debe esperar si el enlace
está lleno.
3. Capacidad ilimitada – longitud infinita
El que envía nunca espera.
Comunicación Cliente-
Servidor
 Sockets
 Remote Procedure Calls (RPC)
 Remote Method Invocation (Java)

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