Programacion
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Introducción
Programa
Archivo ejecutable residente en un dispositivo de
almacenamiento permanente
Se ejecuta por medio de la llamada exec()
Proceso
Es un programa en ejecución
Los procesos se crean con la llamada fork()
Servicios del sistema operativo
Invocados por medio de funciones
POSIX nodiferencia entre llamadas al sistema y
procedimientos de biblioteca
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Definición
Definición de proceso
Un proceso es un programa en ejecución, que se
ejecuta secuencialmente (no más de una
instrucción a la vez)
El proceso es una abstracción creada por el SO,
que se compone de:
Identificación del proceso.
Identificacióndel proceso padre.
Información sobre el usuario y grupo.
Estado del procesador.
Información de control de proceso.
Información del planificador.
Segmentos de memoria asignados.
Recursos asignados.
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Creación de procesos: fork()
La llamada fork() crea una copia (hijo) del
proceso que la invoca
El hijo hereda del padre:Estado
Semáforos
Objetos de memoria
Política de planificación, etc.
El hijo no hereda:
El PID
Alarmas y temporizadores
Operaciones de E/S asíncronas
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Ejemplo de Proceso Pesado
#include
int main(void) {
pid_t id;
id = fork();
if (id == -1) {
perror (“Error en el fork”);
exit (1);
}
if (id == 0) {
while (1)printf (“Hola: soy el hijo\n”);
} else {
while (1) printf (“Hola: soy el padre\n”);
}
} /* Fin de main */
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Ejemplo de procesos pesados (fork)
Problemas:
Copia de todos los
recursos del
proceso.
Coste de
comunicaciones
entre procesos.
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Qué es unproceso ligero
Un thread es un flujo de control perteneciente a un
proceso (a veces se habla de tareas con threads)
Se les suele denominar también procesos ligeros,
hebras, hilos, etc.
La sobrecarga debida a su creación y comunicación
es menor que en los procesos pesados
Cada hilo pertenece a un proceso pesado
Todos los hilos comparten su espacio de
direccionamiento
Cada hilo dispone de supropia política de
planificación, pila y contador de programa
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Procesos Ligeros
Por proceso ligero
Contador de programa, Registros
Pila
Estado (ejecutando, listo o bloqueado)
Por proceso
Espacio de memoria
Variables globales
Ficheros abiertos
Procesos hijos
Temporizadores
Señales y semáforos
ContabilidadArquitectura de Computadores II
Universidad Carlos III de Madrid
Ejemplo de procesos ligeros
Soluciona:
Solo hay una copia
de las variables
compartidas.
Sin coste de
comunicaciones
entre procesos.
Arquitectura de Computadores II
Universidad Carlos III de Madrid
Generalidades
Beneficios:
Explotación del paralelismo
Explotación de concurrencia (I/O)
Estilo de programaciónInconvenientes:
Overhead por creación de threads
Sincronización: más bloqueos al haber más threads
Colisiones en el acceso a memoria
Más difícil la depuración: debuggers, trazadores, puntos de ruptura,
repreducción de la ejecución, ...
Uso de programación con threads:
Computación intensiva
Varios procesadores
Solapamiento computación y I/O
Aplicaciones servidor distribuidas
Arquitectura deComputadores II
Universidad Carlos III de Madrid
Operaciones con procesos ligeros
Creación y destrucción
Sincronización
Gestión de prioridades
Gestión de señales
Gestión de memoria
Se pueden utilizar todas las funciones
incluidas en POSIX.1 y POSIX.1b
La interfaz de hilos POSIX es pthreads,
aunque existen otras bibliotecas de hilos
Arquitectura de Computadores II
Universidad...
Regístrate para leer el documento completo.