Documentos de Académico
Documentos de Profesional
Documentos de Cultura
http://ramos.elo.utfsm.cl/~elo321/02-2010/elo321.php
El Profesor.
Procesos
Conceptos
Scheduling
Operación sobre Procesos
Procesos Cooperativos
Comunicación entre Procesos
Comunicación en sistemas cliente-
servidor
ELO321 Procesos 2
Conceptos (1)
Un sistema operativo ejecuta una
serie de programas:
Sistema batch – jobs
Sistema de tiempo compartido –
programas de usuario o tareas (tasks)
Proceso – un programa en
ejecución; progreso secuencial
ELO321 Procesos 3
Conceptos (2)
Un proceso incluye:
program counter (pc)
stack (sp)
sección de datos (dp)
ELO321 Procesos 4
Un Proceso en Memoria
0xfff..
stack
heap
data
text
0
ELO321 Procesos 5
Estado de un Proceso
cambios de estado en su ejecución:
new: durante su creación
running: instrucciones siendo ejecutadas
waiting: en espera de algún evento
ready: esperando por CPU
terminated: proceso ha finalizado
ELO321 Procesos 6
Diagrama de Estados
fin terminated
running
espera por I/O
scheduler
interrupción
new
I/O terminado
ELO321 Procesos 7
Bloque de Control de Proceso
Información asociada a un proceso
(PCB: process control block)
estado
registros de CPU
pid
pc
registros
reg. límites
lista de archivos
abiertos
ELO321 Procesos 9
Itineración de la CPU
P0 sistema operativo P1
interrupción / waiting
llamado al sistema guardar estado en PCB0
-------
carga estado desde PCB1
waiting
interrupción /
guardar estado en PCB1 llamado al sistema
-------
carga estado desde PCB0 waiting
ELO321 Procesos 10
Filas Asociadas al Scheduling
Job queue – contiene todos los
procesos del sistema
Ready queue – conjunto de
procesos en memoria principal en
espera por tiempo de CPU
Device queue – conjunto de
procesos en espera por I/O
procesos migran entre filas
ELO321 Procesos 11
Dispositivos y Fila Ready
fila ready PCB20 PCB5
head
tail registros registros
…… ……
disco unidad 1
head
tail
disco unidad 0
head
tail
PCB4
terminal 0
head
tail
ELO321 Procesos 12
Representación del Scheduling
fila ready CPU
tèrmino de la
ranura de tiempo
ejecución creación de un
p. hijo proceso hijo
ELO321 Procesos 13
Schedulers
ELO321 Procesos 14
Inserción de un Medium-Term
scheduler
medium-
term
parcialmente
parcialmente ej.
ej.
Swapet out
Swapet out
long-term
short-
term
nuevo ready
ready queue
queue CPU terminado
CPU
I/O filas
filas de
de espera
espera
I/O
de
de I/O
I/O
ELO321 Procesos 15
Modelo de Multiprogramación
Utilización de CPU
1
0,9
% Utilización de CPU
0,8
0,7 I/O 50%
0,6 I/O 60%
0,5
0,4 I/O 70%
0,3 I/O 80%
0,2
0,1
0
1 2 3 4 5 6 7 8 9 10 11 12 13
Nivel de Multiprogramación
ELO321 Procesos 16
Schedulers (1)
Short-term scheduler es invocado muy
frecuentemente (ms) ⇒ (debe ser
eficiente)
Long-term scheduler es invocado muy
infrecuentemente (s, min) ⇒ (puede
ser lento)
El long-term scheduler controla el grado
de multiprogramación
ELO321 Procesos 17
Schedulers (2)
Los procesos pueden ser clasificados
como:
I/O-bound – la mayor parte del tiempo
se encuentran en I/O; ocurren muchas
ráfagas cortas de uso de CPU.
CPU-bound – la mayor parte del tiempo
se encuentran requiriendo CPU; pocas pero
muy largas ráfagas de CPU.
ELO321 Procesos 18
Cambio de Contexto
Cuando la CPU cambia de proceso, se
debe respaldar el estado del proceso
anterior y cargar el estado del proceso
nuevo.
El cambio de contexto es – overhead –
el sistema no realiza trabajo útil durante
el cambio de contexto.
Eficiencia depende del soporte de
hardware.
ELO321 Procesos 19
Árbol de Procesos en una
Máquina bajo Solaris
ELO321 Procesos 24
Procesos Cooperativos
Independientes el proceso no puede
afectar ni ser afectado por la ejecución de
otros procesos
Cooperativos el proceso puede afectar o ser
afectado por la ejecución de otro proceso
Ventajas de la cooperación de procesos
compartir información
incremento en la velocidad de cómputo
modularidad
conveniencia
ELO321 Procesos 27
Problema del Productor -
Consumidor
Paradigma de procesos cooperativos:
procesos productores producen
información que es consumida por un
proceso consumidor
buffer – ilimitado no hay límite para la
capacidad del buffer
buffer – limitado asume una capacidad
finita del buffer
ELO321 Procesos 28
Buffer-finito: 1ª Solución vía
memoria compartida
datos compartidos
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item_t;
item_t buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
ELO321 Procesos 29
Buffer-finito: Método insert()
insert(item_t item)
{
while (((in + 1) % BUFFER_SIZE) == out)
; // espera – no hay espacio
buffer[in] = item;
in = (in + 1) % BUFFER_SIZE;
}
ELO321 Procesos 30
Buffer-finito: Método remove()
remove(item_t *item)
{
while (in == out)
; // espera – no hay elementos
*item = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
ELO321 Procesos 31
Buffer-finito: 2ª Solución vía
memoria compartida
datos compartidos
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item_t;
item_t buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int nitems = 0;
ELO321 Procesos 32
Buffer-finito: Método insert()
v. 2
insert(item_t item)
{
while (nitems == BUFFER_SIZE)
; // espera – no hay espacio
buffer[in] = item;
in = (in + 1) % BUFFER_SIZE;
nitems++;
}
ELO321 Procesos 33
Buffer-finito: Método remove()
v. 2
remove(item_t *item)
{
while (nitems == 0)
; // espera – no hay elementos
*item = buffer[out];
out = (out + 1) % BUFFER_SIZE;
nitems--;
}
ELO321 Procesos 34
Comunicación entre Procesos
(IPC)
Proporciona mecanismos para comunicación y sincronizar
acciones
Sistema de mensajería: los procesos se comunican entre sí sin
requerir variables compartidas
El servicio IPC proporciona 2 operaciones:
send(mesnsaje) – con un tamaño del mensaje fijo o variable
receive(mensaje)
ELO321 Procesos 35
Aspectos de Implementación
¿Cómo se establecen canales?
¿Puede un canal estar asociado a más de 2
procesos?
¿Cuántos canales pueden existir entre cada
par de procesos?
¿Cuál es la capacidad del canal?
¿El tamaño del mensaje es fijo o variable?
¿El canal es unidireccional o bidireccional?
ELO321 Procesos 36
Modelos de Comunicación
proceso A M proceso A M
memoria compartida
proceso B M
proceso B M
núcleo M núcleo
ELO321 Procesos 37
Sincronización
El paso de mensajes puede ser de tipo bloqueante
(blocking) o no-bloqueante (non-blocking)
Blocking es considerado sincrónico
blocking send bloquea al trasmisor hasta que el receptor
reciba el mensaje
blocking receive bloquea al receptor hasta que haya un
mensaje disponible
Non-blocking es considerado asincrónico
Non-blocking send envía el mensaje y continúa
Non-blocking receive hace que el receptor reciba un
mensaje válido o nada
ELO321 Procesos 42
Comunicación Cliente -
Servidor
Sockets
Llamados a procedimientos remotos
(RPC: Remote Procedure Calls)
Invocación de métodos remotos (RMI:
Remote Method Invocation)
ELO321 Procesos 44
Sockets
Un socket está definido como un punto
de acceso para la comunicación.
Contiene dirección IP y puerto.
El socket 161.25.19.8:1625 se refiere
al puerto 1625 del host 161.25.19.8
La comunicación se establece entre un
par de sockets.
ELO321 Procesos 45
Comunicación vía Socket
host X
(129.217.23.200)
socket
(129.217.23.200:1625 web server
(200.1.17.3)
socket
(200.1.17.3:80
ELO321 Procesos 46
Llamados a Procedimientos
Remotos
Llamados a procedimientos remotos (RPC) permite la
invocación de procedimientos en una red de
computadores.
Stubs – estamento en el nodo cliente/servidor del
procedimiento que se encuentra (físicamente) en la
máquina remota o servidor.
El stub en la máquina local, localiza al servidor y
envía los parámetros vía una estrategia conocida
como marshalling (empaquetamiento de parámetros)
El stub en la máquina remota recibe el mensaje,
obtiene los parámetros y ejecuta el procedimiento
ELO321 Procesos 47
Invocación de Métodos
Remotos (RMI en Java)
mecanismo equivalente a RPC
permite a un programa en Java invocar
un método (función) de un objeto que
se encuentra en una máquina remota.
JVM JVM
RMI
programa en
objeto remoto
Java
ELO321 Procesos 49
Empaquetamiento de
Parámetros (marshalling)
ELO321 Procesos 50