2-procesos e hilos [modo de compatibilidad]

42
1 de 42 Sistemas Operativos I SISTEMAS OPERATIVOS I Clase N° 2 Procesos e hilos Planificación (Scheduling)

Upload: others

Post on 29-Jun-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2-Procesos e hilos [Modo de compatibilidad]

1 de 42

Sistemas Operativos I

SISTEMAS OPERATIVOS I

Clase N° 2Procesos e hilos

Planificación (Scheduling)

Page 2: 2-Procesos e hilos [Modo de compatibilidad]

2 de 42

Sistemas Operativos I

El modelo del proceso

a) Multiprogramación de cuatro programasb) Modelo conceptual de cuatro procesos secuenciales

independientes (cada uno con su propio contador de programa, registros, variables)

c) Solo hay un programa activo a la vez

Page 3: 2-Procesos e hilos [Modo de compatibilidad]

3 de 42

Sistemas Operativos I

Creación de Procesos

Cuatro eventos principales provocan la creación de un proceso:

1. Arranque del sistema

2. La ejecución, desde un proceso, de una llamada al sistema para creación de procesos

3. Una petición de usuario para crear un proceso

4. El inicio de un trabajo por lotes (batch job)

Page 4: 2-Procesos e hilos [Modo de compatibilidad]

4 de 42

Sistemas Operativos I

Llamadas al Sistema para la creación de Procesos

• En UNIX: fork - crea un clon exacto del proceso que hizo la llamada. Después de fork, los dos procesos (padre e hijo) tienen la misma imagen de memoria, las mismas cadenas de entorno y los mismos archivos abiertos Por lo general, el proceso hijo ejecuta después a execve o una llamada al sistema similar para cambiar su imagen de

memoria y ejecutar un nuevo programa.

• En Windows: CreateProcess - maneja la creación de procesos y carga el programa correcto en el nuevo proceso. Esta llamada tiene 10 parámetros, que incluyen el programa a ejecutar, los parámetros de la línea de comandos para introducir datos a ese programa, varios atributos de seguridad, bits que controlan si los archivos abiertos se heredan, información de prioridad, una especificación de la ventana que se va a crear para el proceso (si se va a crear una) y un apuntador a una estructura en donde se devuelve al proceso que hizo la llamada la información acerca del proceso recién creado. Win32 tiene cerca de 100 funciones más para administrar y sincronizar procesos y temas relacionados.

Page 5: 2-Procesos e hilos [Modo de compatibilidad]

5 de 42

Sistemas Operativos I

Terminación de un proceso

1. Salida normal (voluntaria): El proceso terminó su trabajo o el usuario presionó un ícono o elemento del menú para indicar al programa que termine.

2. Salida por error (voluntaria): El proceso tiene que salir debido a insuficiencia de datos, por ejemplo, cuando solicita un archivo que no existe.

3. Error fatal (involuntaria): Sucede por un error en el programa, como las divisiones entre 0 o requerimiento de memoria inaccesible o inexistente.

4. Eliminado por otro proceso (involuntaria): éste es sumamente útil cuando un proceso se queda colgado, es decir, sin terminar, pero tampoco responde. En Unix un ejemplo es cuando se utiliza el comando kill para terminar procesos abruptamente. En Windows es TerminateProcess

Page 6: 2-Procesos e hilos [Modo de compatibilidad]

6 de 42

Sistemas Operativos I

Jerarquías de Procesos

• Cuando un proceso crea otro, el proceso padre y el proceso hijo continúan asociados. El proceso hijo puede crear por sí mismo más procesos, formando una jerarquía de procesos.

– En UNIX un proceso y todos sus hijos, con sus posteriores descendientes, forman un “grupo de procesos"

• En Windows no hay un concepto de jerarquía, todos los procesos son creados igual.

Page 7: 2-Procesos e hilos [Modo de compatibilidad]

7 de 42

Sistemas Operativos I

Estados de un Proceso

Estados posibles de un proceso– En ejecución - running– Listo – ready– Bloqueado - blocked

Se muestran las transiciones entre estados

Page 8: 2-Procesos e hilos [Modo de compatibilidad]

8 de 42

Sistemas Operativos I

Planificación de procesos

• La capa más baja de un sistema operativo estructurado por procesos maneja las interrupciones y la planificación (scheduling)

• Encima de esa capa están los procesos secuenciales

Page 9: 2-Procesos e hilos [Modo de compatibilidad]

9 de 42

Sistemas Operativos I

Tabla con información asociada con cada proceso:

• Estado del Proceso

• Contador del Programa

• Registros de la CPU

• Información de Planificación de la CPU

• Información de Gestión de Memoria

• Información contable

• Información del estado de Entrada/Salida

• (Cualquier información que pueda variar entre un proceso y otro)

Bloque de control de procesos - Process Control Block (PCB) -

Page 10: 2-Procesos e hilos [Modo de compatibilidad]

10 de 42

Sistemas Operativos I

Process Control Block (PCB) - Bloque de control de procesos

Información de identificación

• Esta información está integrada básicamente por el identificador del proceso (PID), que es un número que identifica al proceso. Este número es diferente para todos los procesos que se encuentran en ejecución.

Información de estado de la CPU

• Se trata de un conjunto de campos que almacenan el estado de los registros de la CPU cuando el proceso es suspendido.

Información de control del proceso

• Se trata de un conjunto de información que es utilizada por el sistema operativo para controlar diversos aspectos de funcionamiento del proceso. Pertenecen a esta categoría de información los siguientes campos:

• – Estado del proceso: Listo, en ejecución, etc.

• – Información de manejo de memoria: Como por ejemplo, la dirección física de memoria en la que se ubica la tabla de páginas del proceso.

• – Información de E/S: Lista de ficheros abiertos, ventanas utilizadas, etc.

Información de uso de recursos

• Se trata de un conjunto de información relativa a la utilización realizada por el proceso de los recursos del sistema, como por ejemplo, el porcentaje de utilización de la CPU, la cantidad de memoria usada o los bytes de E/S escritos y leídos por el proceso

Page 11: 2-Procesos e hilos [Modo de compatibilidad]

11 de 42

Sistemas Operativos I

Algunos de los campos de una entrada típica en la tabla de procesos

Process Control Block (PCB) - Bloque de control de procesos

Page 12: 2-Procesos e hilos [Modo de compatibilidad]

12 de 42

Sistemas Operativos I

Conmutación de la CPU de un proceso a otro

1.El hardware mete el contador del programa a la pila, etc.2.El hardware carga el nuevo contador de programa del vector de interrupciones.3.Procedimiento en lenguaje ensamblador guarda los registros4.Procedimiento en lenguaje ensamblador establece la nueva pila5.El servicio de interrupciones de C se ejecuta (por lo general lee y guarda la entrada en el búfer)6.El planificador decide que proceso se va a ejecutar a continuación7.Procedimiento en C regresa al código de ensamblador 8.Procedimiento en lenguaje ensamblador inicia el nuevo proceso actual

Page 13: 2-Procesos e hilos [Modo de compatibilidad]

13 de 42

Sistemas Operativos I

Hilos

Son procesos livianos. Permiten que se lleven acabo varias ejecuciones en el mismo entorno delproceso, que son en gran parte independientes unas delas otras.

1. Son útiles porque muchas aplicaciones se desarrollan varias actividades a la vez (en lugar de pensar en interrupciones, temporizadores y conmutaciones de contexto, podemos pensar en procesos paralelos)

2. Son fáciles de crear (rápidos) y destruir

3. Mejora el rendimiento (cuando hay una cantidad considerable de cálculos y operaciones de E/S)

Page 14: 2-Procesos e hilos [Modo de compatibilidad]

14 de 42

Sistemas Operativos I

Uso de Hilos (Thread Usage) - Ejemplo 1

Un procesador de palabras con tres hilos

Page 15: 2-Procesos e hilos [Modo de compatibilidad]

15 de 42

Sistemas Operativos I

Uso de Hilos (Thread Usage) – Ejemplo 2

Un Servidor web con múltiples hilos

Page 16: 2-Procesos e hilos [Modo de compatibilidad]

16 de 42

Sistemas Operativos I

Hilos (Threads) - El modelo de hilos

(a) Tres procesos, cada uno con un hilo. Cada proceso tiene su propio espacio de direcciones y un solo hilo de control.

(b) Un solo proceso con tres hilos de control. Los tres comparten el mismo espacio de direcciones

Cuando se ejecuta un proceso con multihilamiento en un sistema con una CPU, los hilos toman turnos para ejecutarse.

Page 17: 2-Procesos e hilos [Modo de compatibilidad]

17 de 42

Sistemas Operativos I

El modelo de hilos

Ítems compartidos por todos los hilos en un proceso

Ítems privados para cada hilo

Page 18: 2-Procesos e hilos [Modo de compatibilidad]

18 de 42

Sistemas Operativos I

El modelo de hilos

Cada hilo tiene su propia pila (stack)

Page 19: 2-Procesos e hilos [Modo de compatibilidad]

19 de 42

Sistemas Operativos I

Implementando hilos en el espacio de Usuario

Un paquete de hilos de nivel usuario

Page 20: 2-Procesos e hilos [Modo de compatibilidad]

20 de 42

Sistemas Operativos I

Implementación de hilos en el Kernel

Un paquete de hilos manejados por el kernel

Page 21: 2-Procesos e hilos [Modo de compatibilidad]

21 de 42

Sistemas Operativos I

Implementaciones híbridas

Multiplexaje de hilos del nivel usuario

sobre hilos del nivel kernel

Page 22: 2-Procesos e hilos [Modo de compatibilidad]

22 de 42

Sistemas Operativos I

Pop-Up Threads

Creación de un nuevo hilo cuando se recibe un mensaje:(a) Después de que llega el mensaje(b) Antes de que llegue el mensaje

Page 23: 2-Procesos e hilos [Modo de compatibilidad]

23 de 42

Sistemas Operativos I

Comunicación entre procesos

Cuestiones:

1.¿Cómo un proceso puede pasar información a otro?

2.¿Cómo hacer que dos o más procesos no se interpongan entre sí; por ejemplo, dos procesos en un sistema de reservaciones de una aerolínea, cada uno de los cuales trata de obtener el último asiento en un avión para un cliente distinto?

3.¿Cómo obtener la secuencia apropiada cuando hay dependencias presentes: si el proceso A produce datos y el proceso B los imprime, B tiene que esperar hasta que A haya producido algunos datos antes de empezar a imprimir?

Page 24: 2-Procesos e hilos [Modo de compatibilidad]

24 de 42

Sistemas Operativos I

Comunicación entre procesos - Condiciones de carrera

Dos procesos desean acceder a la memoria compartida al mismo tiempo

Page 25: 2-Procesos e hilos [Modo de compatibilidad]

25 de 42

Sistemas Operativos I

Regiones Críticas

Cuatro condiciones para proveer exclusión mutua:• No puede haber dos procesos de manera simultánea

dentro de sus regiones críticas• No pueden hacerse suposiciones acerca de las

velocidades o el número de CPUs• Ningún proceso que se ejecute fuera de su región

crítica puede bloquear otros procesos• Ningún proceso tiene que esperar para siempre para

entrar a su región crítica

Para evitar situaciones en las que se involucran la memoria compartida, los archivos compartidos y todo lo demás compartido se debe buscar alguna manera de prohibir que más de un proceso lea y escriba los datos compartidos al mismo tiempo. Se necesita exclusión mutua.

Page 26: 2-Procesos e hilos [Modo de compatibilidad]

26 de 42

Sistemas Operativos I

Regiones CríticasExclusión mutua mediante el uso de regiones críticas

Page 27: 2-Procesos e hilos [Modo de compatibilidad]

27 de 42

Sistemas Operativos I

Regiones Críticas

• Alternancia estricta

• Variables de candado

• Semáforos

• Pasaje de mensajes

• Deshabilitando interrupciones

• InstrucciónTSL

• Dormir y despertar (Sleepand Wakeup)

• Mutexers

• Monitores

• Barreras

Implementadas por el programador

Implementadas por el sistema operativo

Implementadas por el hardware

Implementadas por el lenguaje de programación

Page 28: 2-Procesos e hilos [Modo de compatibilidad]

28 de 42

Sistemas Operativos I

Planificación (Scheduling)

Las ráfagas de uso de la CPU se alternan con los períodos de espera por la E/S

◦ (a) Un proceso ligado a la CPU (procesos limitados a cálculos)

◦ (b) Un proceso ligado a la E/S (procesos limitados a E/S (I/O-bound))

Page 29: 2-Procesos e hilos [Modo de compatibilidad]

29 de 42

Sistemas Operativos I

Introducción a Planificación

Todos los sistemas

• Equidad - Otorgar a cada proceso una parte justa de la CPU

• Aplicación de políticas - Verificar que se lleven a cabo las políticas establecidas

• Balance - Mantener ocupadas todas las partes del sistema

Sistemas de procesamiento por lotes

• Rendimiento - Maximizar el número de trabajos por hora

• Tiempo de retorno - Minimizar el tiempo entre la entrega y la terminación

• Utilización de la CPU - Mantener ocupada la CPU todo el tiempo

Sistemas interactivos

• Tiempo de respuesta - Responder a las peticiones con rapidez

• Proporcionalidad - Cumplir las expectativas de los usuarios

Sistemas de tiempo real

• Cumplir con los plazos - Evitar perder datos

• Predictibilidad - Evitar la degradación de la calidad en los sistemas multimediaMetas de los algoritmos de planificación 29

Page 30: 2-Procesos e hilos [Modo de compatibilidad]

30 de 42

Sistemas Operativos I

Criterios de Rendimiento

Se usan varias magnitudes para medir el rendimiento de los algoritmos de planificación:

• Utilización de CPU: % de tiempo que la CPU está ocupada

• Tiempo de retorno: tiempo transcurrido entre la llegada de un proceso y su finalización

• Tiempo de espera: tiempo que un proceso permanece en la cola de preparados

• Tiempo de respuesta: tiempo que un proceso bloqueado tarda en entrar en CPU, desde que ocurre el evento que lo bloquea

Page 31: 2-Procesos e hilos [Modo de compatibilidad]

31 de 42

Sistemas Operativos I

Algoritmos de planificación: apropiativos vs. no apropiativos

• No apropiativo (nonpreemptive): Una vez seleccionado un proceso para ejecutarlo deja que se ejecute hasta que el mismo se bloquea (ya sea en espera de una operación de E/S o de algún otro proceso) o hasta que libera la CPU en forma voluntaria.

• Apropiativos: Selecciona un proceso y deja que se ejecute por un máximo de tiempo fijo. Si sigue en ejecución al final del intervalo de tiempo, se suspende y el planificador selecciona otro proceso para ejecutarlo: El proceso en ejecución puede ser interrumpido y llevado a la cola de listos por el SO.

31

Page 32: 2-Procesos e hilos [Modo de compatibilidad]

32 de 42

Sistemas Operativos I

Planificación en sistemas de procesamiento por lotes

Primero en entrar, primero en ser atendido - FCFS

• La CPU se asigna a los procesos en el orden en el que la solicitan

• Hay una sola cola de procesos listos

• Si el proceso en ejecución se bloquea, el primer proceso en la cola se ejecuta a continuación.

• Fácil de comprender y de programar.

• Es equitativo

• Importante desventaja: FCFS puede ocasionar un uso indeficiente tanto del procesador como de los dispositivos de E/S

Page 33: 2-Procesos e hilos [Modo de compatibilidad]

33 de 42

Sistemas Operativos I

Planificación en sistemas de procesamiento por lotes

El trabajo más corto primero - SJF

(a) Orden de llegada original.

(b) Ejecución de cuatro trabajos en el orden del tipo “el trabajo más corto primero”

La CPU se asigna al proceso de menor duración, y si existiera más de un proceso con igual valor, se aplicaría dentro de este el algoritmo anterior (FCFS)

Este algoritmo presenta una gran ventaja, pues el tiempo de espera será mucho menor

Es sólo óptimo cuando todos los trabajos están disponibles al mismo tiempo

Page 34: 2-Procesos e hilos [Modo de compatibilidad]

34 de 42

Sistemas Operativos I

Planificación en sistemas de procesamiento por lotes

El menor tiempo restante a continuación -SRTN

Variante del anterior

La CPU se asigna al proceso cuyo tiempo restante de ejecución sea el más corto. Cuando llega un nuevo trabajo, su tiempo total se compara con el restante del proceso actual, si necesita menos tiempo, se suspende el proceso actual y se inicia el nuevo trabajo

Se requiere conocer los tiempos de antemano

Es eficiente para trabajos cortos

Page 35: 2-Procesos e hilos [Modo de compatibilidad]

35 de 42

Sistemas Operativos I

Planificación en Sistemas Interactivos

Planificación por turno circular (round robin)

Planificación de turno circular.a) La lista de procesos ejecutables.b) La lista de procesos ejecutables una vez que B utiliza su

quantum• Fácil de implementar• Se necesita mantener la lista de los procesos ejecutables• Si se establece el quantum demasiado corto se producen

demasiadas conmutaciones de procesos y se reduce la eficiencia de la CPU, pero si se establece demasiado largo se puede producir una mala respuesta a las peticiones interactivas cortas

A cada proceso se le asigna un intervalo de tiempo: quantum, durante el cual se le permite ejecutarse. Si el proceso se sigue ejecutando al final del cuanto, la CPU es apropiada para dársela a otro proceso. Si el proceso se bloquea o termina antes de que haya transcurrido el quantum, la conmutación de la CPU se realiza cuando el proceso se bloquea

Page 36: 2-Procesos e hilos [Modo de compatibilidad]

36 de 42

Sistemas Operativos I

Planificación en Sistemas Interactivos

Planificación por prioridad

• A cada proceso se le asigna una prioridad• Se ejecuta el proceso con la prioridad más alta (Incluso hasta en una PC con un solo propietario puede haber varios procesos, algunos de ellos más importantes que los demás)• Para evitar que los procesos con alta prioridad se ejecuten de manera indefinida, el planificador puede reducir su prioridad con el tiempo. • Si su prioridad se reduce a un valor menor que la del proceso con la siguiente prioridad más alta, ocurre una conmutación de procesos.

Page 37: 2-Procesos e hilos [Modo de compatibilidad]

37 de 42

Sistemas Operativos I

Planificación en Sistemas Interactivos

Múltiples colas

Cuando en los sistemas operativos coexisten procesos con diferentes necesidades

Requiere planificación dentro de cada cola, y planificación entre colas

Page 38: 2-Procesos e hilos [Modo de compatibilidad]

38 de 42

Sistemas Operativos I

El proceso más corto a continuaciónSimilar de lotes, se debe estimar el tiempo de procesamiento

Planificación garantizadaSi hay n usuarios conectados cada uno recibirá aprox. 1/n del poder

de la CPU.Si hay solo usuario con n procesos en ejecución, debe obtener 1/n de

los ciclos de la CPU.

Planificación por sorteoSe da a los procesos boletos de lotería para diversos recursos del

sistema, como el tiempo de la CPU. Cada vez que hay que tomar una decisión de planificación, se selecciona un boleto de lotería al azar y

el proceso que tiene ese boleto obtiene el recurso

Planificación por partes equitativasA cada usuario se le asigna cierta fracción de la CPU y si los usuarios tienen varios procesos cada uno, el planificador selecciona procesos

de tal forma que se cumpla con este modelo.

Planificación en Sistemas Interactivos

Page 39: 2-Procesos e hilos [Modo de compatibilidad]

39 de 42

Sistemas Operativos I

Planificación de sistemas en Tiempo Real

El tiempo desempeña un papel esencial. Clasificación:

• tiempo real duro, hay tiempos límite absolutos que se deben

cumplir

• tiempo real suave, no es conveniente fallar en un tiempo límite en

ocasiones, pero sin embargo es tolerable

Los eventos que llegan al sistema pueden ser periódicos o

aperiódicos. Si m llegan eventos periódicos y cada evento i ocurre

con el período Pi y requiere Ci segundos de la CPU

• Entonces la carga puede manejarse si

Se dice que un sistema de tiempo real que cumple con este criterio

es planificable

1

1m

i

i i

C

P

Page 40: 2-Procesos e hilos [Modo de compatibilidad]

40 de 42

Sistemas Operativos I

Planificación de hilos

Posible planificación con implementación de hilos en el espacio de usuario

El kernel desconoce la existencia de los hilos, selecciona un proceso y le otorga a este proceso el control de su quantum

Page 41: 2-Procesos e hilos [Modo de compatibilidad]

41 de 42

Sistemas Operativos I

Planificación de hilos

Posible planificación con implementación de hilos a nivel de kernel

El kernel selecciona un hilo específico para ejecutarlo

Page 42: 2-Procesos e hilos [Modo de compatibilidad]

42 de 42

Sistemas Operativos I

Continúa…