Paul Leger http://pleger.cl Procesos Paul Leger http://pleger.cl
Procesos (1) Un proceso es un programa en ejecución El funcionamiento de SO depende de un conjunto de procesos que se ejecuten en segundo plano (conocidos como servicios y antiguamente demonios). Ejemplos: servicios de red, sonido, Web, etc Procesador ejecuta varios procesos por segundos, en teoría no hay paralelismo Seleccionar qué proceso y cuánto tiempo se debe ejecutar un proceso en un momento no es fácil. Hay varios trabajos de tras de esto (mirar job scheduling) Cambiar desde un proceso a otro tiene un costo de sobrecarga asociado. Ejemplo, retomar los datos necesario para cargar ese nuevo programa Un programa ejecutado dos veces, tiene dos procesos asociados
Vistas de Varios Procesos en un Procesador
Procesos (2) Un proceso puede crear otro proceso independiente llamado proceso hijo. En Unix, la función se llama fork y en Windows se llama CreateProcess Cada proceso PESADO tiene su propio espacio de memoria En Unix, los procesos padres e hijos forman una jerarquía de procesos. Por ejemplo, todos los procesos en Unix vienen del procesos init
Procesos Livianos v/s Pesados Cada proceso tiene su propia memoria Cada proceso comparte su memoria
Threads (Hilos) Mini-procesos que pueden realizar “algo” con el proceso trabaja para mostrar los resultados temporales. Ejemplo, interfaces gráficas, funciones automáticas en un procesador de texto como contar palabras Comparten memoria (no necesita ser enviada entre proceso). Analogía, piensen en un Dropbox Son mucho más rápido que el fork de un proceso
Ejemplos de hilos
Propiedades de un Hilo y Proceso
Hilos
Secciones Criticas (1/2) Cómo los hilos comparten memoria, dos hilos operando al mismo tiempo, puede dejar esta memoria inconsistente En threading, esto se conoce como datarace Para evitar esto, es necesario reconocer cuáles son las secciones criticas
Secciones Criticas (2/2) count = count + 1 #count = count + 1
Herramienta 1: Semáforos Se crea un semáforo, el cual se puede ver como una maquina de ticket que pueden ser consumido nWaitSem consume tickets y nSignalSem entrega tickets Si no hay tickets, no se puede seguir avanzando
Productor/Consumidor TAREA: Implementar el problema del productor y consumidor
Implementación en C