Hilos y procesos SISTEMAS OPERATIVOS CARLOS FAÚNDEZ 1 Procesos • Un proceso es un programa en ejecución junto con su ambiente de trabajo. •Ambiente de trabajo: • Valores de los registros del CPU asociados al proceso. • Memoria asignada. • Otros recursos asignados al proceso, ejemplo: archivos abiertos, comunicación, etc. CARLOS FAÚNDEZ 2 Procesos Registros del CPU: Cambian de valor durante la ejecución del programa. • Contador de programa ($PC). • Puntero de la pila ($sp). • Marco de la pila ($fp). • Otros, dependiendo de la arquitectura de CPU. Estos valores constituyen el contexto del proceso. • Cambio de contexto. • El S.O lleva registro del contexto de cada proceso en una tabla llamada tabla de procesos. CARLOS FAÚNDEZ 3 Procesos Llamadas al sistema • Los procesos invocan al S.O mediante llamadas al sistema (system call). • Una llamada al sistema es similar a una llamada a un procedimiento, pero el código que se ejecuta no está en el programa, sino dentro del sistema operativo. • El sistema operativo y los programas de usuario se ejecutan en niveles diferentes desde el punto de vista del CPU. • La transición de un nivel a otro consume ciclo de CPU: es mucho más lenta una llamada al sistema que una llamada a un procedimiento dentro del mismo programa. CARLOS FAÚNDEZ 4 Procesos Estado de los procesos CARLOS FAÚNDEZ 5 Hilos • Los hilos en ejecución son procesos ligeros o livianos. • Subprocesos de un proceso. • La memoria y los recursos son asignados a los procesos. • Todos los hilos de un proceso comparten la memoria y los recursos asignados a dicho proceso. • Cada hilo tiene un contexto diferente. • Puede decirse que el recurso CPU no es compartido. • Cada hilo tiene una pila diferente. CARLOS FAÚNDEZ 6 Hilos Tipos de hilos • Hilos manejados por el kernel. • Hilos manejados a nivel del usuario (green threads). Hilos manejados por el kernel • El sistema operativo conoce la existencia de los hilos. • El planificador no selecciona procesos para ser ejecutados sino hilos. • El hilo seleccionado puede pertenecer al mismo proceso o a un proceso diferente. CARLOS FAÚNDEZ 7 Hilos Hilos manejados a nivel del usuario • El S.O no conoce la existencia de los hilos. • Existe un único hilo por proceso. • Hay un paquete de hilos que corre en el espacio del usuario. • Consiste de una biblioteca de funciones para: • Crear y destruir hilos. • Planificación de los hilos. • En C, la librería es pthread.h y tiene las siguientes funciones: • pthread_t: ID del hilo. • pthread_create: Asociar una función al hilo. • pthread_join: Encolar el hilo para su ejecución. CARLOS FAÚNDEZ 8 Hilos Hilos del kernel Cambio de contexto Lento Al bloquearse un Bloqueos hilo el proceso no tiene que bloquearse Planificación Expropiativa CARLOS FAÚNDEZ Hilos de usuario Rápido Al bloquearse un hilo el proceso debe bloquearse No expropiativa 9 Procesos vs hilo CARLOS FAÚNDEZ 10 Proceso vs hilo Memoria compartida • Varios procesos pueden acceder a bloques de memoria compartida utilizando servicios del sistema. • Los hilos de un proceso puede acceder a datos comunes. CARLOS FAÚNDEZ 11