Está en la página 1de 38

Procesos

Esta Diapositiva ha sido descargada el 04.Junio.2010 del sitio web de acceso


público:

http://ramos.elo.utfsm.cl/~elo321/02-2010/elo321.php

Universidad Técnica Federico Santa María (Chile)


Teoría de Sistemas Operativos
Wolfgang Freund G.

El contenido ha sido modificado para ajustarse a los objetivos del curso.


Para acceder a la diapositiva original visitar el link anteriormente citado.

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

waiting ready admisión

I/O terminado

ELO321 Procesos 7
Bloque de Control de Proceso
Información asociada a un proceso
(PCB: process control block)
„ estado

„ contador de programa (pc)

„ registros de CPU

„ información para scheduling

„ información de adm. de memoria,

contabilidad, estado del I/O


ELO321 Procesos 8
Estructura del PCB
estado

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

PCB2 PCB13 PCB7

disco unidad 0
head
tail

PCB4
terminal 0
head
tail

ELO321 Procesos 12
Representación del Scheduling
fila ready CPU

I/O fila de I/O requerimiento de I/O

tèrmino de la
ranura de tiempo

ejecución creación de un
p. hijo proceso hijo

ocurre espera por


interrupción interrupción

ELO321 Procesos 13
Schedulers

„ Long-term scheduler (o job


scheduler) – qué proceso es
insertado en la fila ready
„ Short-term scheduler (o CPU
scheduler) – qué proceso es el
próximo a ejecutar

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;

„ esta solución es correcta sin embargo sólo puede usar


BUFFER_SIZE-1 elementos

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)

„ Si P y Q desean comunicarse, deberán:


„ establecer un canal de comunicación entre ellos

„ intercambiar mensajes vía las primitivas send/receive


„ Implementación de un canal de comunicación
„ físico (ej. memoria compartida, bus)
„ lógico (ej. propiedades lógicas)

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

También podría gustarte