Está en la página 1de 32

(EC.

1657) Sistemas Operativos


Gestión de Procesos: Procesos e Hilos (Threads)

Lic. Diana Cruz

Escuela de Sistemas e Informática


Unidad Académica Rio Turbio
Universidad Nacional de la Patagonia Austral

Primer Cuatrimestre 2016


Agenda

1 Procesos
Concepto de Proceso
Vida de un proceso
Planificación de procesos
Concurrencia

2 Hilos (Threads)
Concepto de Hilo (Thread)
Estados de un thread

3 Apéndice: Programación con Procesos y Threads


Consideraciones preliminares
Operaciones con procesos
Operaciones con threads
PROCESOS
Concepto de Proceso

Definición
Un proceso es una instancia de un programa en ejecución.

A cada proceso se le asigna un identificador numérico único


denominado pid o process id .
Cada proceso tiene su propia CPU virtual; en realidad, la CPU real
conmuta de un proceso a otro, y se puede pensar que los procesos se
ejecutan en paralelo. Esta conmutación rápida de un proceso a otro se
conoce como multiprogramación.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 4 / 32


Concepto de Proceso

Un proceso necesita ciertos recursos para realizar su tarea


satisfactoriamente:
Tiempo de CPU
Memoria
Archivos
Dispositivos de E/S
Los recursos se asignan al proceso:
Cuando se crea
Durante su ejecución

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 5 / 32


Concepto de Proceso

Un sistema consiste en una colección de procesos que podrían


ejecutarse de forma concurrente.
El SO como gestor de procesos tiene la obligación de:
Crear y eliminar procesos.
Planificar procesos.
Establecer mecanismos para sincronización y comunicación de
procesos.
Manejar bloqueos mutuos.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 6 / 32


Un proceso en memoria

Un programa se convierte en proceso


cuando se carga en memoria un
archivo ejecutable (ej: .exe .out)
Un proceso en memoria tiene:
área de texto: código de programa
área de datos: variables globales
stack o pila del proceso: datos
temporales (parámetros de
funciones, direcciones de retorno y
variables locales
heap o montículo: asignación
dinámica de memoria al proceso en
tiempo de ejecución

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 7 / 32


Bloque de Control de Proceso

Cada proceso tiene un BCP (Bloque de Control de Proceso) que


contiene información básica del proceso:
Identificación: user id, process id
Estado del proceso
Program counter: dirección de siguiente instrucción a ejecutar
Registros de CPU: depende de la arquitectura
Info de planificación de CPU: prioridad del proceso, punteros a colas
de planificación, etc.
Info de gestión de memoria: depende del mecanismo utilizado
Info de estado E/S: dispositivos asignados, archivos abiertos, etc.
Info contable: tiempo de CPU y de reloj utilizados, etc.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 8 / 32


Creación de un Proceso

Consiste en completar la información de un BCP.


Eventos que provocan la creación de procesos:
Arranque de Sistema
Ejecución de la llamada al sistema para creación de procesos
Petición de usuario para crear un proceso
Inicio de un trabajo por lotes
Operaciones que realiza el SO al crear un proceso:
Asignar espacio de memoria para la imagen de memoria.
Seleccionar un BCP libre de la tabla de procesos.
Rellenar un BCP con toda la información del proceso.
Cargar código + rutinas de sistema en región de texto, y datos en
región de datos.
Crear la pila inicial del proceso en la región de stack.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 9 / 32


Activación de un Proceso

Activar un proceso es ponerlo en ejecución.


El módulo del SO que activa un proceso se denomina activador o
dispacher .
Copia el estado del procesador en los registros almacenado en el BCP.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 10 / 32


Interrupción de un Proceso

Mientras se está ejecutando un proceso puede ocurrir interrupciones.


Pasos de una interrupción:
La información de un proceso en ejecución está siendo modificado
constantemente por la ejecución de sus instrucciones máquina.
Llega una interrupción externa, una excepción de hardware o el proceso
solicita un servicio del SO.
El proceso detiene su ejecución.
Entra a ejecutar el SO para atender la interrupción o el servicio
demandado.
Modifica los contenidos de los registros de la máquina, destruyendo sus
valores anteriores.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 11 / 32


Terminación de un Proceso

Un proceso puede terminar debido a:


una salida normal (voluntaria)
una salida por error (voluntaria)
un error fatal (involuntaria)
Eliminado por otro proceso (involuntaria)
El SO recupera los recursos que tenía asignado el proceso terminado.
Para recuperar recursos asignados, el SO debe tener en cuenta:
Si el recurso está asignado en exclusivo al proceso, entonces el SO debe
añadir el recurso a su lista de recursos libres.
Si el recurso es compartido, entonces el SO tiene que decrementar el
contador asociado. Cuando el contador llegue a cero, deberá añadirlo a
la lista de recursos libres.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 12 / 32


Estado de un Proceso (I)

De acuerdo a la actividad de un proceso, existen tres estados básicos:


En Ejecución
El proceso está en fase de procesamiento.

Bloqueado
El proceso está esperando a que ocurra un evento y no puede seguir
ejecutándose hasta suceda dicho evento.

Listo o Preparado
El proceso está listo para entrar en fase de procesamiento.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 13 / 32


Estado de un Proceso (II)

Transición 1: el SO descubre que un proceso no puede continuar en


ese momento.
Transición 2: el planificador decide que un proceso se ha ejecutado el
tiempo suficiente.
Transición 3: el planificador decide que el primer proceso obtenga la
CPU para ejecutarse de nuevo.
Transición 4: se produce el evento externo esperado por un proceso.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 14 / 32


Estados de un Proceso (III)

Existen SO que definen los estados de procesos de forma más


específica:

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 15 / 32


Estados de un Proceso (IV)

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 16 / 32


Cuestiones de implementación de Procesos

Para implementar el modelo de procesos, el SO mantiene una tabla


denominada Tabla de Procesos con una sola entrada por cada
proceso.
Cada entrada de la tabla se denomina Bloque de Control de
Procesos (BCP).
BCP es una estructura de datos (type struct): En Linux se denomina
task_struct (sched.h)

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 17 / 32


Planificación

Objetivo: Repartir el tiempo de procesador entre los procesos.


Esta función lo realiza el módulo del SO denominado planificador .
Planificador vs Activador:
El planificador selecciona el proceso en estado listo que pasa a estado
de ejecución
El activador pone en ejecución el proceso planificado.
Existen diferentes algoritmos de planificación del tiempo de procesador

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 18 / 32


Concurrencia de procesos

Los procesos en un SO se pueden ejecutar en forma simultánea


(concurrencia)
Un proceso puede crear varios procesos nuevos durante su ejecución:
El proceso creador se denomina proceso padre
El proceso creado por otro proceso se denominan proceso hijo
A su vez los procesos hijos pueden crear otros procesos, formando un
árbol de procesos.
Cuando un proceso crea otro proceso, hay dos posibilidades en
términos de ejecución:
El padre sigue ejecutándose de forma concurrente a sus hijos.
El padre espera hasta que alguno de sus hijos o todos hayan terminado.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 19 / 32


Procesos Independientes y Procesos Cooperativos

Los procesos concurrentes que se ejecutan en SO puede ser


independientes o cooperativos:
Un proceso es independiente si no puede afectar ni ser afectado por
los demás procesos que se ejecutan en el sistema.
Un proceso es cooperativo cuando puede afectar o ser afectado por
los demás procesos que se ejecutan en el sistema.
La cooperación entre procesos requiere mecanismos que permitan su
comunicación y sincronización para intercambiar información y
datos (memoria compartida y paso de mensajes)

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 20 / 32


HILOS (THREADS)
Concepto de Thread

Un proceso está formado por un conjunto de recursos asignados


(imagen de memoria del proceso, BCP, etc) y un por un flujo de
control.
El flujo de control, que está formado por un conjunto ordenado de
instrucciones de máquina del programa que va ejecutando el proceso,
se denomina hilo o thread .
Cada thread tiene información que se refieren al contexto de ejecución:
Estado del procesador
Pila
Estado del thread
Prioridad de ejecución
BCP del thread

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 22 / 32


Modelos de Threads

Existen procesos monothreads y procesos multithreads.

Figura: (a) 3 procesos con un hilo cada uno. (b) Un proceso con 3 hilos

El uso de threads permite que un proceso aproveche más el procesador.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 23 / 32


Estados de un thread

Un thread tiene tres estados básicos: en ejecución, listo o


bloqueado.

El estado de un proceso será la combinación de los estados de sus


threads.

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 24 / 32


APÉNDICE
PROGRAMACIÓN CON PROCESOS Y THREADS
Procesos: Uso de Librería Estándar C

C proporciona librerías con funciones de llamadas al sistema para la


gestión de procesos: <unistd.h> y <syscall.h>

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 26 / 32


Threads: Uso de Librería POSIX en C

POSIX es el acrónimo de Portable Operating System I nterface, y X


viene de UNIX
Es una API1 estándar del Sistema Operativo definida por IEEE2 .
Para el manejo de Threads proporciona una librería en C:
<pthread.h>
Recursos Web sobre Manual de Referencia de la Librería POSIX
pthread [En inglés]:
http://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/
www/pthreads.html
https://computing.llnl.gov/tutorials/pthreads/

1 Application Programming Interface


2 Institute of Electrical and Electronics Engineers
Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 27 / 32
Ejemplo de Uso de pthread.h de POSIX

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 28 / 32


Compilar y ejecutar de programas escritos con POSIX

Línea de comandos en Linux:


compilar: gcc -pthread <path/sourcefile.c> -o <path/outfile.out>
ejecutar: ./<path/outfile.out>
IDE Codeblocks: Configurar <pthread.h> desde Build Options del
proyecto

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 29 / 32


Creando Procesos

int fork (void);


Crea un nuevo proceso
Valores de retorno:
Retorna process ID (pid) en caso de un nuevo “proceso padre”
Retorna 0 (cero) en caso de un “proceso hijo”

int waitpid (int pid, int *stat, int opt);


Espera que un proceso hijo termine
Parámetros:
pid: proceso a esperar, o -1 para cualquier otro
stat: contendrá el valor de salida o señal
opt: 0 o WNOHANG
Valor de retorno: process ID (pid) o -1 en caso de error

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 30 / 32


Eliminando Procesos

void exit (int status);


Termina la ejecución de un proceso
El parámetro status está dado por waitpid
Por convención, status 0 es éxito, cualquier otro valor indica error
int kill (int pid, int sig);
Envía una señal sig al proceso pid
sigpuede tener las siguientes constantes:
SIGTERM: mata el proceso por defecto
SIGKILL: mata proceso siempre
Retorna process ID (pid) o -1 en caso de error

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 31 / 32


Trabajando Hilos

tid thread create (void (*fn) (void *), void *);


Crea un nuevo hilo
void thread exit ();
Destruye un hilo actual
void thread join (tid thread);
Espera que termine la ejecución del hilo thread

Sistemas Operativos (ESI-UART-UNPA) Gestión de Procesos AdeS 2014 32 / 32

También podría gustarte