módulo 3 - cs.uns.edu.arldm/data/so/apuntes/03-procesos.pdfincluyendo planificación, creación y...
TRANSCRIPT
1
Módulo 3
Departamento de Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Procesos
Sistemas Operativos – ProcesosJRA © 2008
Procesos
Concepto de Proceso
Planificación de Proceso
Operaciones sobre Procesos
Comunicaciones Interprocesos (IPC)
Ejemplos de Sistemas de IPC
Comunicación en un Sistema Cliente-
Servidor
2
Sistemas Operativos – ProcesosJRA © 2008
Objetivos
Introducir la noción de proceso – un programa
en ejecución, el cual conforma la base de toda
computación
Describir varias características de procesos,
incluyendo planificación, creación y
terminación, y comunicación
Describir la comunicación en sistemas cliente-
servidor
Sistemas Operativos – ProcesosJRA © 2008
Concepto de Proceso
Un SO ejecuta una variedad de programas:
Sistema Batch – jobs
Sistemas de Tiempo Compartido – programas de usuario o tareas
Los términos job, tarea y proceso se usan con similar sentido.
Proceso – un programa en ejecución; la ejecución de los procesos debe progresar en forma secuencial.
Un proceso incluye:
contador de programa
stack
sección de datos
3
Sistemas Operativos – ProcesosJRA © 2008
Procesos en Memoria
datos
texto
Sistemas Operativos – ProcesosJRA © 2008
Estado de los Procesos
En tanto que un proceso ejecuta, cambia de estado
nuevo: el proceso es creado.
corriendo: las instrucciones están siendo ejecutadas.
espera: el proceso está esperando que ocurra algún evento.
listo: el proceso está esperando ser asignado a la CPU.
terminado: el proceso ha finalizado su ejecución.
4
Sistemas Operativos – ProcesosJRA © 2008
Diagrama de Estados de un Proceso
terminado
listos
espera
corriendo
nuevo
exit
evento e/s
despacho
interrup
evento
completado
Sistemas Operativos – ProcesosJRA © 2008
Diagrama de Estados de un Proceso
terminado
listos
espera
corriendo
nuevo
exit
evento e/s
despacho
interrup
evento
comp
Diagrama con cinco estados
Susp-espSusp-listoevento comp
react
react
suspsusp
5
Sistemas Operativos – ProcesosJRA © 2008
Bloque de Control de Procesos (PCB)
Es una estructura de dato que contiene información asociada con cada proceso.
Estado de Proceso
Contador de Programa
Registros de CPU
Información de planificación de CPU
Información de administración de memoria
Información contable
Información de estado E/S
PCB: Process Control Block
Sistemas Operativos – ProcesosJRA © 2008
Bloque de Control de Proceso (PCB)
estado
proceso
proxprevio
id proceso
contador programa
registros de CPU
estructura memoria
tabla de arch abiertos
etc
6
Sistemas Operativos – ProcesosJRA © 2008
Conmutación de CPU de Proceso a Proceso
carga estado de PCB-0
salva estado en PCB-0
carga estado de PCB-1
salva estado en PCB-1
.
.
.
.
.
.
ocioso
ocioso
ocioso
ejecución
ejecución
ejecución
P-0 P-1interrupción o llamada al sistema
interrupción o llamada al sistema
SO
Sistemas Operativos – ProcesosJRA © 2008
Colas de Planificación de Procesos
Cola de Job (o tareas) – conjunto de todos los procesos en el sistema.
Cola de listos – conjunto de todos los procesos residentes en memoria principal, listos y esperando para ejecutar.
Colas de dispositivos – conjunto de procesos esperando por una E/S en un dispositivo de E/S.
Migración de procesos entre las colas.
7
Sistemas Operativos – ProcesosJRA © 2008
Colas de listos y de Dispositivos de E/S
inicio
final
inicio
final
inicio
final
inicio
final
reg
reg reg
reg
reg
regcola delistos
cinta magunidad 0
discounidad 0
terminalunidad 0
PCB-7
PCB-6
PCB-4
PCB-5PCB-14PCB-0
Sistemas Operativos – ProcesosJRA © 2008
Representación de Planificación de Procesos
cola de listo cpu
cola I/O i/o req I/O
Expira taja-
da de tiempo
fork hijo
requiererecursocola recurso
cola espera
ejecutahijo
join
8
Sistemas Operativos – ProcesosJRA © 2008
Planificadores de Procesos
Planificador de largo término ( o planificador
de jobs ) – selecciona que procesos deberían
ser puestos en la cola de listos.
Planificador de corto término (o planificador de
CPU ) – selecciona que procesos deberían ser
proximamente ejecutados y colocados en la
CPU.
Sistemas Operativos – ProcesosJRA © 2008
Planificación de mediano término
procesos parcialmente
ejecutados al swapping
cola de listos CPU
E/S cola de
espera E/S
fuera de
swappingentrada en
swapping
fin
9
Sistemas Operativos – ProcesosJRA © 2008
Planificadores de Procesos (Cont.)
El planificador de corto término es invocado muy frecuentemente (milisegundos) (debe ser rápido).
El planificador de largo término es invocado poco frecuentemente (segundos, minutos) (puede ser muy lento).
El planificador de largo término controla el grado de multiprogramación.
Los procesos pueden ser descriptos como:
Procesos limitados por E/S – pasa mas tiempo haciendo E/S que computaciones, ráfagas (burst) de CPU muy cortas.
Procesos limitados por CPU – pasa mas tiempo haciendo computaciones que E/S, ráfagas (burst) de CPU muy largas.
Sistemas Operativos – ProcesosJRA © 2008
Cambio de contexto
Cuando la CPU conmuta a otro proceso, el sistema
debe salvar el estado del viejo proceso y cargar el
estado para el nuevo proceso vía un cambio de
contexto.
El contexto de un proceso está representad o en el
PCB
El tiempo que lleva el cambio de contexto es
sobrecarga; el sistema no hace trabajo útil mientras
está conmutando.
El tiempo depende del soporte de hardware .
10
Sistemas Operativos – ProcesosJRA © 2008
Creación de Procesos
Procesos padres crean procesos hijos, lo cuales, a su vez crean otros procesos, formando un árbol de procesos.
Recursos compartidos
Padres e hijos comparten todos los recursos.
Hijo comparte un subconjunto de los recursos del padre.
Padre e hijo no comparten ningún recurso.
Ejecución
Padres e hijos ejecutan concurrentemente.
Padres esperan hasta que los hijos terminan.
Sistemas Operativos – ProcesosJRA © 2008
Creación de Procesos (Cont.)
Espacio de direcciones
El hijo duplica el del padre.
El hijo tiene un programa cargado en él.
Ejemplos de UNIX
La llamada a sistema fork crea un nuevo proceso
La llamada a sistema execve es usada después del
fork para reemplazar el espacio de memoria del
proceso con un nuevo programa.
11
Sistemas Operativos – ProcesosJRA © 2008
Creación de Procesos
padre
hijo
Se reactiva
Sistemas Operativos – ProcesosJRA © 2008
Árbol de Procesos en UNIX
12
Sistemas Operativos – ProcesosJRA © 2008
Terminación de Procesos
El proceso ejecuta la última sentencia y espera que el SO haga algo (exit).
Los datos de salida del hijo se pasan al padre (via wait).
Los recursos de los procesos son liberados por el SO.
El padre puede terminar la ejecución del proceso hijo (abort).
El hijo ha excedido los recursos alocados.
La tarea asignada al hijo no es mas requerida.
El padre está terminando.
El SO no permite a los hijos continuar si su padre termina.
Terminación en cascada.
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Interprocesos (IPC)
Los procesos en un sistema pueden ser independientes o
cooperativo
Los procesos cooperativos pueden afectar o ser afectados por
otros procesos, cuando incluyen datos compartidos
Razones para procesos cooperativos
Información compartida
Speedup de computación
Modularidad
Conveniencia
Los procesos cooperativos necesitan comunicación
interprocesos (IPC)
Dos modelos de IPC
Memoria compartida
Pasaje de Mensajes
13
Sistemas Operativos – ProcesosJRA © 2008
Modelos de Comunicación
Pasaje de mensajes Memoria compartida
proceso A
proceso Bproceso B
proceso A
memoria compartida
kernel kernel
Sistemas Operativos – ProcesosJRA © 2008
Procesos Cooperativos
Un proceso independiente no puede afectar ni ser
afectado por la ejecución de otro proceso.
Un proceso cooperativo puede afectar o ser afectado
por la ejecución de otro proceso.
Ventajas de los procesos cooperativos
Información compartida
Aceleración de la computación
Modularidad
Conveniencia
14
Sistemas Operativos – ProcesosJRA © 2008
Problema del Productor-Consumidor
Paradigma procesos cooperativos, el proceso
productor produce información que es
consumida por un proceso consumidor .
buffer ilimitado - no tiene límites prácticos en
el tamaño del buffer.
buffer limitado supone que hay un tamaño fijo
de buffer.
Sistemas Operativos – ProcesosJRA © 2008
Comunicación entre Procesos (IPC)
Mecanismo de los procesos para comunicarse y sincronizar sus acciones.
Sistema de mensajes – los procesos se comunican uno con otro sin necesidad de variables compartidas.
Las facilidades de IPC provee dos operaciones:
send(mensaje) – mensaje de tamaño fijo o variable
receive(mensaje)
Si P and Q desean comunicarse, necesitan:
Establecer un vínculo de comunicación entre ellos
Intercambiar mensajes via send/receive
Implementación de un vínculo de comunicación
lógico (p.e., propiedades lógicas)
físicol (p.e., memoria compartida, canal hardware)
15
Sistemas Operativos – ProcesosJRA © 2008
Preguntas sobre la Implementación
¿Cómo se establecen los vínculos?
¿Puede un vínculo ser asociado con mas de dos
procesos?
¿Cuántos vínculos puede haber entre cada par de
procesos que se comunican?
¿Cuál es la capacidad de un vínculo?
¿El vinculo puede aceptar tamaño de mensajes fijo o
variable?
¿Es vínculo unidireccional o bi-direccional?
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Directa
Los procesos deben nombrar al otro explicitamente:
send (P, mensaje) – envía un mensaje al proceso P
receive(Q, mensaje) – recibe un mensaje del proceso Q
Propiedades del vínculo de comunicación
Los vínculos son establecidos automaticamente.
Un vínculo está asociado con exactamente un par de procesos que se comunican.
Entre cada par existe exactamente un vínculo.
El vínculo puede ser unidireccional, pero es usualmente bi-direccional.
16
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Indirecta
Los mensajes son dirigidos y recibidos desde mailboxes(también referidas como ports).
Cada mailbox tiene una única identificación.
Los procesos pueden comunicarse solo si comparten un mailbox.
Propiedades de un vínculo de comunicación
El vínculo se establece solo si los procesos comparten un mailbox común.
Un vínculo puede ser asociado con muchos procesos.
Cada par de procesos puede compartir varios vínculos de comunicación.
Los vínculos pueden ser unidireccionales o bi-direcciona-les.
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Indirecta (cont.)
Operaciones
crear un nuevo mailbox
enviar y recibir mensajes por medio del mailbox
destruir un mailbox
Primitives are defined as:
send(A, message) – send a message to mailbox A
receive(A, message) – receive a message from
mailbox A
17
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Indirecta (cont.)
Mailbox compartida
P1, P2, y P3 comparten el mailbox A.
P1, envía; P2 y P3 reciben.
¿Quién toma el mensaje?
Solución
Permitir que un vínculo está asociado a lo sumo con dos procesos.
Permitir que un solo proceso a la vez ejecute la operación receive.
Permitir que el sistema seleccione arbitrariamente el receptor. El enviador es notificado quien fue el receptor del mensaje.
Sistemas Operativos – ProcesosJRA © 2008
Sincronización
El pasaje de mensajes puede ser bloqueante o no
bloqueante.
Bloqueante es considerado sincrónico
Send bloqueante mantiene al enviador bloqueado hasta
que el mensaje es recibido
Receive bloqueante hmantiene al receptor bloqueado
hasta que el mensaje esté disponible
No bloqueante es considerado asincrónico
Send no bloqueante: el emisor envía el mensaje y
continúa
Receive no bloqueante : el receptor recibe un mensaje
válido u o nulo
18
Sistemas Operativos – ProcesosJRA © 2008
Buffering
La cola de mensajes asociada al vínculo se puede
implementar de tres maneras.
1.Capacidad – 0 mensajes
El enviador debe esperar por el receptor (rendez-
vous).
2.Capacidad limitada – longitud finita de n mensajes
El enviador debe esperar si el vínculo está lleno.
3.Capacidad ilimitada – longitud infinita
El enviador nunca espera.
Sistemas Operativos – ProcesosJRA © 2008
Comunicación Cliente-Servidor
Sockets
Llamadas a Procedimientos Remotors
(RPC:Remote Procedure Calls)
Invocación a Métodos Remotos (RMI:Remote
Method Invocation (Java))
19
Sistemas Operativos – ProcesosJRA © 2008
Sockets
Un socket es definido como un punto final de
comunicación.
Concatenación de dirección IP y pórtico
El socket 161.25.19.8:1625 se refiere al pórtico 1625 en
el host 161.25.19.8
La comunicación se lleva a cabo entre un par de
sockets.
Sistemas Operativos – ProcesosJRA © 2008
Comunicación por Sockets
20
Sistemas Operativos – ProcesosJRA © 2008
Llamadas a Procedimientos Remotos
(RPC: Remote Procedure Calls)
Las RPCs produce una llamada a procedimiento entre
procesos sobre un sistema de redes.
Stubs – proxy del lado del cliente y del lado del
procedimiento del servidor.
El stub del lado del cliente localiza el servidor y hace
marshall de los parámetros.
El stub del lado del servidor recibe este mensaje,
desempaca los parámetros y ejecuta el procedimiento
en el servidor.
Sistemas Operativos – ProcesosJRA © 2008
Invocación de Métodos Remotos (RMI)
RMI es un mecanismo de Java similar a los RPCs.
RMI permite a un programa Java, sobre una máquina,
invocar un método sobre un objeto remoto.
21
Módulo 3
Departamento de Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Fin