La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Proceso: Una instancia de un programa en ejecución

Presentaciones similares


Presentación del tema: "Proceso: Una instancia de un programa en ejecución"— Transcripción de la presentación:

1 Proceso: Una instancia de un programa en ejecución
Paul Leger

2 Procesos Un proceso que se ejecuta en segundo plano, es un proceso que se ejecuta “detrás de escena” sin intervención del usuario El funcionamiento de SO depende de un conjunto de procesos que se ejecuten en segundo plano (conocidos como servicios y antiguamente como demonios). Ejemplos: servicios de red, sonido, Web, antivirus, buscador de actualizaciones Procesador ejecuta varios procesos (en segundo plano o no) por segundos, sin embargo, en teoría no hay paralelismo (TAREA: estudiar el comando “top”)

3 Procesos (2) Seleccionar qué proceso y cuánto tiempo se debe ejecutar un proceso en un momento no es fácil. Hay varias estrategias detrás de este tema (más sobre esto: “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. Incluso, un proceso podría estar ejecutado en modo superusuario y el otro en modo simplemente usuario

4 Creación de Procesos (1)
El arranque del sistema. Ejemplos: servicios de red, sonido, bluetooth, Web, Mail, etc La ejecución, desde un proceso, de una llamada al sistema para creación de procesos Ejemplo: ejecución de un programa en Python, el cual ejecuta un programa para enviar un mail Una petición de usuario para crear un proceso Ejemplo: Pulsar un “click” al reproductor de multimedia El inicio de un trabajo por lotes Ejemplo: Un programa que inicie todos los días a las 3:00 AM, el cual ejecute varios procesos (TAREA: estudie el comando crontab)

5 Creación de 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

6 Procesos Pesados Cada proceso PESADO tiene su propio espacio de memoria y contador de programa, pero comparten el texto de programa En Unix, los procesos padres e hijos forman una jerarquía de procesos. Por ejemplo, todos los procesos en Unix vienen del procesos init

7 Scheduling de Procesos (1)
Procesador Proceso Listas de Procesos Procesos desbloqueado Lista de Procesos bloqueada

8 Scheduling de Procesos (2)

9 Estrategias de Job Scheduling
FIFS (First-in First-Serve): El primer proceso en llegar, es el primer en ser servido. Observación: El último proceso que llega debe esperar que todos los procesos anteriores terminen Round Robin Scheduling: Hay pequeña unidad de tiempo q por proceso (time-slice). Todo proceso, cuyo estado es listo, puede ejecutar por tiempo q. Observaciones: 1) Todo proceso debe esperar a lo mas q*(n – 1) unidad de tiempo 2) q muy grande, se puede transformar en FIFs 3) q muy pequeño, se usa el procesador casi todo el tiempo en cargar un proceso para ser ejecutado

10 Procesos Livianos (Threads/Hilos)
Es un proceso dentro de otro proceso Es útil para realizar “algo” mientras el proceso principal trabaja. Ejemplo, interfaces gráficas, funciones automáticas en un procesador de texto como contar palabras Comparten memoria (no necesita ser enviada entre procesos). Analogía, piensen en un Dropbox La creación de los hilos son mucho más rápido que el fork de un proceso

11 Procesos Livianos v/s Pesados
Cada proceso tiene su propia memoria Cada proceso comparte su memoria

12 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

13 Ejemplos de hilos Un procesador de texto como Word usa hilos para revisar la ortografía y la gramática. Además, puede usar otros hilos para dar formato al documento y contar palabras

14 Mirar Threads en Python
Hay una librería llamada threading Un hilo se crea con la funcion threading.Thread(target = funcion, args = (parametros) Ejemplo: myThread = threading.Thread(target = mostrar, args = (texto,) Un hilo comienza a trabajar con el método start. Por ejemplo: myThread.start() Para esperar que un thread termine, se usa la función join

15 Ver Ejemplo 1

16 Propiedades de un Hilo y Proceso

17 Hilos

18 Secciones Críticas (1/2)
Cómo los hilos comparten memoria (área de datos y variables globales), dos hilos operando “al mismo tiempo”, puede dejar esta memoria inconsistente En threading, esto se conoce como datarace o race condition Para evitar esto, es necesario reconocer cuáles son las secciones críticas

19 Secciones Criticas (2/2)
count = count + 1 #count = count + 1

20 Ver ejemplo 2

21 Evitar Race Condition Race Condition deja la memoria de un programa en ejecución en estado inconsistente Se han creado varias técnicas para evitar race condition Básicamente, estas técnicas duermen hilos cuando ellos pueden potencialmente dejar la memoria en estado inconsistente

22 Semáforos Se crea un semáforo, el cual se puede ver como una maquina de tickets que pueden ser consumidos nWaitSem consume tickets y nSignalSem entrega tickets Si no hay tickets, no se puede seguir avanzando, es decir, el hilo se duerme

23 Productor/Consumidor
HILO Productor HILO Consumidor

24 Pseudo-Código de Productor/Consumidor
Suponga dos semáforos: Full & Empty Full con “0” tickets Empty con “N” tickets Una lista con una limitada capacidad: buffer de tamaño N Dos variables: nextEmpty = 0 & nextFull = 0 def productor(): while True: item = producir() nWaitSem(Empty) buffer[nextEmpty] = item nextEmpty = [nextEmpty + 1]%N nSignalSem(Full) def consumidor(): while True: nWaitSem(Full) item = buffer[nextFull] nextFull = [nextFull + 1]%N nSignalSem(Empty)

25 Lecturas Sección : Completa Secciones: – Secciones: – 2.3.5


Descargar ppt "Proceso: Una instancia de un programa en ejecución"

Presentaciones similares


Anuncios Google