0% encontró este documento útil (0 votos)
107 vistas45 páginas

Capítulo 3 - Procesos

El documento describe los conceptos básicos de los procesos. Explica que un proceso es un programa en ejecución que consta de código, datos, pila y heap en memoria. Los procesos pueden estar en diferentes estados como en ejecución, listo o bloqueado. El sistema operativo usa el bloque de control de proceso (PCB) para almacenar información sobre cada proceso como su estado, registros y planificación. También describe cómo los procesos padres crean procesos hijos usando llamadas al sistema como fork() y exec().

Cargado por

ramiroesteban
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
107 vistas45 páginas

Capítulo 3 - Procesos

El documento describe los conceptos básicos de los procesos. Explica que un proceso es un programa en ejecución que consta de código, datos, pila y heap en memoria. Los procesos pueden estar en diferentes estados como en ejecución, listo o bloqueado. El sistema operativo usa el bloque de control de proceso (PCB) para almacenar información sobre cada proceso como su estado, registros y planificación. También describe cómo los procesos padres crean procesos hijos usando llamadas al sistema como fork() y exec().

Cargado por

ramiroesteban
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 45

Capítulo 3: Procesos

Fundamentos de sistemas operativos - Silberschatz


Concepto de proceso
■ Proceso – un programa en ejecución, la ejecución de un proceso debe
progresar de manera secuencial
■ Múltiples partes
● El código de programa, también llamado sección de texto
● La actividad actual incluyendo el contador de programa, registros de
procesador
● La pila (stack), contiene datos temporales
4 Parámetros de funciones, direcciones de retorno, variables locales
● La sección de datos contiene variables globales
● El heap contiene la memoria asignada dinámicamente durante la
ejecución

Fundamentos de sistemas operativos - Silberschatz 2


Concepto de proceso(Cont.)
■ Un programa es una entidad pasiva alojada en disco (archivo ejecutable),
un proceso es una entidad activa
● El programa se convierte en proceso cuando el ejecutable se carga en
la memoria
■ La ejecución de un programa se inicia vía los clicks en una GUI, teclear un
comando, un comando de voz, etc
■ Un programa puede ser varios procesos
● Considere que múltiples usuarios ejecutan el mismo programa

Fundamentos de sistemas operativos - Silberschatz 3


Procesos en memoria

Fundamentos de sistemas operativos - Silberschatz 4


Estados de un proceso
■ A medida que un proceso se ejecuta, el mismo cambia de estado
● Nuevo: El proceso está siendo creado
● En ejecución: Las instrucciones están siendo ejecutadas
● En espera: El proceso está esperando a que ocurra un evento
● Preparado: El proceso está esperando a que se le asigne un
procesador
● Terminado: El proceso ha finalizado su ejecución

Fundamentos de sistemas operativos - Silberschatz 5


Diagramas de estado de un proceso

Fundamentos de sistemas operativos - Silberschatz 6


Bloque de Control de Proceso (PCB)
Información asociada a cada proceso
■ Estado del proceso – en ejecución, en espera,
etc
■ Contador de programa – indica la dirección de
la siguiente instrucción a ejecutar
■ Registros de CPU – el contenido de los
registros asociados al proceso
■ Información de planificación de CPU –
prioridades, punteros a las colas de
planificación
■ Información de la gestión de memoria –
información asociada a la asignación de
memoria para el proceso
■ Información contable – cantidad de CPU y
tiempo real utilizadas, límites de tiempo
■ Información del estado de E/S – lista de
dispositivos asignados al proceso, lista de
archivos abiertos, etc

Fundamentos de sistemas operativos - Silberschatz 7


Cambio de contexto
■ Cuando la CPU cambia a otro proceso, el sistema debe guardar el estado
del antiguo proceso y cargar el estado guardado para el nuevo proceso
vía un cambio de contexto
■ El contexto está representado en el PCB
■ El tiempo utilizado por el cambio de contexto se considera una sobrecarga,
el sistema no realizar trabajo útil mientras realiza el cambio
● Mientras más complejo el SO y el PCB è más largo el cambio de
contexto
■ El tiempo que toma el cambio de contexto depende del hardware
● Disposición de los registros, acceso a la memoria, etc

Fundamentos de sistemas operativos - Silberschatz 8


Cambio de contexto

Fundamentos de sistemas operativos - Silberschatz 9


Hilos
■ Hasta ahora, el proceso tiene un solo hilo de ejecución
■ Considere la posibilidad de tener varios contadores de programa por
proceso
● Múltiples ubicaciones pueden ejecutarse a la vez è hilos
■ Se debe tener un lugar en donde guardar los detalles de ejecución de los
hilos
● Múltiples contadores de programa en el mismo PCB

Fundamentos de sistemas operativos - Silberschatz 10


Planificación de procesos
■ El objetivo de la multiprogramación es tener en ejecución varios procesos al
mismo tiempo con el fin de maximizar la CPU, cambiando rápidamente los
procesos de tal manera a que los usuarios puedan interactuar con los
programas mientras éste se ejecuta.
■ El planificador de procesos selecciona entre el siguiente proceso a ser
ejecutado en la CPU
■ El SO mantiene varias colas de planificación de procesos
● Cola de trabajos – conjunto de procesos de todo el sistema
● Cola de preparados – conjunto de todos los procesos que residen en
memoria, listos y esperando a ser ejecutados
● Cola de dispositivos – conjunto de procesos esperando por un
dispositivo de E/S
● Los procesos migran entre las diferentes colas

Fundamentos de sistemas operativos - Silberschatz 11


Cola de preparados y colas de varios dispositivos de E/S

Fundamentos de sistemas operativos - Silberschatz 12


Representación de la planificación de procesos

Fundamentos de sistemas operativos - Silberschatz 13


Multitarea en SO móviles
■ Algunos sistemas operativos móviles (las primeras versiones de iOS, por
ejemplo) permiten ejecutar un solo proceso de usuario a la vez, los demás
son suspendidos
■ Debido a naturaleza de las pantallas de los móviles, la interfaz de usuario
de iOS provee
● Un solo proceso en primer plano – controlado vía la interfaz de usuario
● Múltiples procesos en segundo plano – en memoria, ejecutándose,
pero no visible para el usuario, con limitaciones
4 Las limitaciones incluyen la ejecución de una sola tarea corta, la
recepción de notificaciones de eventos y tareas específicas a largo
plazo como la reproducción de audio.
■ Android también soporta procesos en primer plano y en segundo plano, con
menos limitaciones
● Los procesos en segundo plano utiliza un servicio para realizar tareas
● El servicio no posee interfaz de usuario, poco uso de memoria

Fundamentos de sistemas operativos - Silberschatz 14


Operaciones sobre los procesos
■ El sistema debe proveer mecanismos para:
● creación de proceso,
● terminación de procesos,
● otras operaciones que veremos más adelante

Fundamentos de sistemas operativos - Silberschatz 15


Creación de procesos
■ El proceso padre crea procesos hijos los cuales a su vez, pueden crear
otros procesos, formando un árbol de procesos.
■ Generalmente, un proceso es identificado y gestionado vía un
identificador de procesos (pid)
■ Opciones de compartimiento de recursos
● Padre e hijo comparten todos los recursos
● El hilo comparte un subconjunto de recursos del padre
● El padre y el hijo no comparten recursos
■ Opciones de ejecución
● El padre y el hijo se ejecutan concurrentemente
● El padre espera a que el hijo termine

Fundamentos de sistemas operativos - Silberschatz 16


Árbol de procesos de Linux

init
pid = 1

login kthreadd sshd


pid = 8415 pid = 2 pid = 3028

bash khelper pdflush sshd


pid = 8416 pid = 6 pid = 200 pid = 3610

emacs tcsch
ps
pid = 9204 pid = 4005
pid = 9298

Fundamentos de sistemas operativos - Silberschatz 17


Creación de procesos (Cont.)
■ Espacio de direcciones
● El hijo duplica el espacio de direcciones del padre
● El hijo carga un programa y lo ejecuta
■ Ejemplos de UNIX
● fork() llamada al sistema para crear nuevos procesos
● exec() llamada al sistema que utiliza para reemplazar la memoria de
un proceso por otro

Fundamentos de sistemas operativos - Silberschatz 18


Programa en C mostrando funcionamiento de fork()

Fundamentos de sistemas operativos - Silberschatz 19


Creando un nuevo proceso con la API de Windows

Fundamentos de sistemas operativos - Silberschatz 20


Terminación de procesos
■ El proceso ejecuta la última sentencia y luego le pide al sistema operativo
que lo borre usando la llamada al sistema exit().
● Retorna el estado desde el hijo hasta el padre (vía wait())
● Los recursos del proceso son desasignados por el SO.
■ El padre puede terminar la ejecución del proceso hijo utilizando la llamada
al sistema abort(). Algunas razones para hacer eso son:
● El hijo se ha excedido utilizando recursos
● La tarea asignada al hijo ya no es necesaria
● El padre está terminando y el sistema operativo no permite que un hijo
continúe si el padre termina.

Fundamentos de sistemas operativos - Silberschatz 21


Terminación de procesos
■ Algunos SO no permiten que los hijos existan si el padre ha terminado. Si
un proceso termina, entonces todos sus hijos deben también ser
terminados.
● Terminación en casada. Todos los hijos, nietos, etc son terminados.
■ El proceso padre puede esperar por la terminación de un proceso hijo
utilizando la llamada al sistema wait(). La llamada retorna la información
del estado y el pid del proceso que ha terminado
● pid = wait(&status);
■ Cuando un proceso termina, sus recursos son reasignados por el sistema
operativo.
● Sin embargo, su entrada en la tabla de proceso debe permanecer allí
hasta que el padre llame a wait()
■ Si el proceso ha terminado y el padre no está esperando (no invocó
wait()) es un proceso zombie
■ Si el padre ha terminado sin invocar wait(), es un proceso húerfano

Fundamentos de sistemas operativos - Silberschatz 22


Arquitectura multiproceso – Chrome

■ Muchos navegadores web se ejecutaban como un proceso individual


● Si una web causa problemas, el navegador entero se bloqueaba
■ El navegador Google Chrome es multiproceso con 3 diferente tipos de
procesos:
● El proceso navegador que gestiona la interfaz de usuario, disco y E/S
de la red
● El proceso renderizador renderiza páginas web, trata con HTML,
javascript. Un nuevo renderizador se crea cuando un nuevo sitio se
abre
● Proceso plug-in para cada tipo de plug-in

Fundamentos de sistemas operativos - Silberschatz 23


Comunicación entre procesos
■ Los procesos dentro de un sistema pueden ser independientes o
cooperativos
● Los procesos independientes no pueden ser afectar o ser afectados por la
ejecución de otros procesos
● Los procesos cooperativos pueden afectar o ser afectados por otros
procesos
■ Razones para que los procesos cooperen:
● Compartir información
● Acelerar la computación
● Modularidad
● Conveniencia
■ Los procesos cooperativos necesitan la comunicación entre procesos (IPC)
■ Dos modelos de IPC
● Memoria compartida
● Paso de mensajes

Fundamentos de sistemas operativos - Silberschatz 24


Modelos de comunicación
(a) Message passing. (b) shared memory.

process A process A

process B shared memory

process B

message queue
m0 m1 m2 m3 ... mn
kernel
kernel

(a) (b)

Fundamentos de sistemas operativos - Silberschatz 25


Comunicación entre procesos – Memoria compartida

■ Un área de memoria compartida entre los procesos que desean


comunicarse
■ El formato de los datos y su ubicación están determinados por los
procesos, no el sistema operativo
■ El principal problema consiste en proveer un mecanismo que permita a los
procesos sincronizar sus acciones cuando tienen acceso a la memoria
compartida
■ La sincronización será discutida más adelante

Fundamentos de sistemas operativos - Silberschatz 26


El problema del Productor-Consumidor
■ Es un paradigma de procesos cooperativos, el productor produce
información que es consumida por un proceso consumidor
● Ej: Un servidor web produce archivos HTML e imágenes, los cuales son
consumidos por un cliente web (navegador)
■ Una forma de solución al problema del productor-consumidor se consigue
utilizando memoria compartida
● Utiliza un buffer compartido en una región de memoria común
■ Se pueden utilizas dos tipos de buffers
● Buffer ilimitado no existe un límite para el tamaño de la memoria
compartida
● Buffer limitado se establece un tamaño de buffer fijo

Fundamentos de sistemas operativos - Silberschatz 27


Memoria compartida - Buffer limitado

■ Datos compartidos

#define BUFFER_SIZE 10

typedef struct {
. . .
} item;

item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;

■ La solución presentada solo puede utilizar BUFFER_SIZE-1 elementos

Fundamentos de sistemas operativos - Silberschatz 28


Buffer limitado – Productor

item next_produced;

while (true) {
/* produce un ítem next produced */
while (((in + 1) % BUFFER_SIZE) == out)
; /* no hacer nada*/

buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
}

Fundamentos de sistemas operativos - Silberschatz 29


Buffer limitado – Consumidor

item next_consumed;

while (true) {
while (in == out)
; /* no hacer nada */

next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;

/* consumir el ítem en next_consumed */


}

Fundamentos de sistemas operativos - Silberschatz 30


Comunicación entre procesos – Paso de mensajes

■ Provee un mecanismo que permite a los procesos comunicarse y


sincronizar sus acciones sin compartir una región de memoria.
■ Los procesos no necesariamente residen en la misma computadora
● Las computadoras pueden estar conectadas por una red de
comunicación
4 Utilizado generalmente en entornos distribuidos

■ El paso de mensajes provee dos operaciones:


● send(message)
● receive(message)

■ El tamaño del mensaje puede ser fijo o variable

Fundamentos de sistemas operativos - Silberschatz 31


Paso de mensajes (Cont.)

■ Si los procesos P y Q desean comunicarse, necesitan:


● Establecer un enlace de comunicación entre ellos
Intercambiar mensajes vía send/receive

■ Cuestiones importantes a tener en cuenta sobre el enlace de comunicación
● La comunicación es directa o indirecta
● La comunicación es síncrona o asíncrona
● Buffering automático o explícito

Fundamentos de sistemas operativos - Silberschatz 32


Comunicación directa
■ Los procesos deben nombrarse unos a otros explícitamente:
● send (P, mensaje) – envía un mensaje al proceso P
● receive(Q, mensaje) – recibe un mensaje del proceso Q
■ Propiedades de esta forma de enlace de comunicación
● Los enlaces son establecidos automáticamente
● Un enlace está asociado a exactamente un par de procesos
● Entre cada par de procesos existe exactamente un enlace
● El enlace puede ser unidireccional, pero usualmente es bidireccional

Fundamentos de sistemas operativos - Silberschatz 33


Comunicación indirecta
■ Los mensajes son enviados y recibidos desde buzones (también conocidos
como puertos)
● Cada buzón tiene un id único
● Los procesos pueden comunicarse solo si comparten el buzón
■ Propiedades de esta forma de enlace de comunicación
● Se dice que un enlace está establecido solo si los procesos comparten
un buzón en común
● Un enlace puede puede estar asociado a varios procesos
● Cada par de procesos puede compartir varios enlaces de comunicación
● Los enlaces pueden ser unidireccionales o bidireccionales

Fundamentos de sistemas operativos - Silberschatz 34


Comunicación indirecta
■ Buzones
● P1, P2, y P3 comparten un buzón A
● P1, envía un mensaje al buzón A; P2 y P3 ejecutan receive() desde el
buzón A
● ¿Qué proceso recibe el mensaje?
■ Soluciones
● Permitir que cada enlace esté asociado como máximo con dos
procesos
● Permitir que solo un proceso, como máximo, ejecute una operación de
recepción en cada momento
● Permitir que el sistema seleccione el receptor. Al emisor se le notifica
quién recibió el mensaje

Fundamentos de sistemas operativos - Silberschatz 35


Comunicación indirecta
■ Un buzón puede pertenecer a un proceso o al sistema operativo
● Si un proceso crea un buzón, cuando éste termina, el buzón
desaparece
● Si el SO crea el buzón, entonces tiene existencia propia. Es
independiente y no está asociado a ningún proceso concreto.
■ Operaciones que debe proveer el SO
● Crear un nuevo buzón
● Enviar y recibir mensajes a través del buzón
● Eliminar un buzón
■ Las primitivas se definen de la siguiente manera:
send(A, message) – envía un mensaje a un buzón A
receive(A, message) – recibe un mensaje del buzón A

Fundamentos de sistemas operativos - Silberschatz 36


Sincronización
■ El paso de mensajes puede ser bloqueante o no bloqueante
■ Las primitivas bloqueantes son consideradas síncronas
■ Envío bloqueante – El emisor es bloqueado hasta que el mensaje es
recibido
■ Recepción bloqueante – El receptor se bloquea hasta que haya un
mensaje disponible
■ Las primitivas no bloqueantes son consideradas asíncronas
● Envío no bloqueante – El emisor envía el mensaje y continúa
● Recepción no bloqueante – El receptor obtiene un mensaje válido o
null
■ Son posibles diferentes combinaciones de send() y receive()

Fundamentos de sistemas operativos - Silberschatz 37


Sincronización (Cont.)
■ El problema del productor-consumidor se vuelve trivial cuando se usan
instrucciones send() y receive() bloqueantes

message next_produced;

while (true) { /* produce un ítem en next_produced */


send(next_produced);
}

message next_consumed;

while (true) {
receive(next_consumed);
/* consume un ítem en next_consumed */
}

Fundamentos de sistemas operativos - Silberschatz 38


Buffering
■ Independientemente si la comunicación es directa o indirecta, los mensajes
intercambiados por procesos que se comunican residen en una cola
temporal
■ Implementados de tres formas diferentes
1. Capacidad cero – No se encolan mensajes para el enlace.
El emisor debe esperar al receptor
2. Capacidad limitada – Se pueden encolar n mensajes.
El emisor debe esperar si el enlace está lleno
3. Capacidad ilimitada – Longitud de la cola es infinita. El emisor nunca
espera

Fundamentos de sistemas operativos - Silberschatz 39


Ejemplos de IPC - POSIX
■ Memoria compartida en POSIX
● El proceso primero crea el objeto de memoria compartida
shm_fd = shm_open(name, O_CREAT | O_RDWR, 0666);
● Asignar el tamaño del objeto
ftruncate(shm_fd, 4096);
● Mapear el archivo a memoria
ptr = mmap(0, 4096, PROT WRITE, MAP SHARED, shm_fd, 0);
● Ahora el proceso ya puede escribir en la memoria
sprintf(ptr, ”scribiendo en la memoria compartida");

Fundamentos de sistemas operativos - Silberschatz 40


IPC POSIX - Productor

Fundamentos de sistemas operativos - Silberschatz 41


IPC POSIX - Consumidor

Fundamentos de sistemas operativos - Silberschatz 42


Comunicación Cliente-Servidor: Sockets
■ Un socket se define como un punto terminal de una comunicación
■ Cada socket se identifica mediante una dirección IP y número de puerto
■ El socket 161.25.19.8:1625 se refiere al puerto 1625 en el host
161.25.19.8
■ En general los sockets se utilizan en un arquitectura cliente-servidor
● El servidor espera peticiones de clientes escuchando en un puerto
específico
● Una vez que la petición es recibida, el servidor acepta la conexión del
socket cliente para completar la conexión
■ Los servidores que implementan servicios específicos (FTP, HTTP, etc)
escuchan en puertos bien conocidos.
● Todos los puertos debajo de 1024 son bien conocidos

Fundamentos de sistemas operativos - Silberschatz 43


Comunicación vía Sockets

Fundamentos de sistemas operativos - Silberschatz 44


Fin del capítulo 3

Fundamentos de sistemas operativos - Silberschatz

También podría gustarte