Vous êtes sur la page 1sur 24

Multiprogramación e Hilos

Clase 10/08/2018
Modelación de la Multiprogramación:
• El término multiprogramación denota un
sistema operativo que además de soportar
procesos concurrentes múltiples, permite que
residan simultáneamente en la memoria las
instrucciones y los datos de dos o mas procesos
distintos.
• Un mejor modelo es analizar el uso de la CPU
desde un punto de vista probabilístico. Suponga
que un proceso gasta una fracción p de su tiempo
esperando a que se complete una operación de
E/S.
• Con n procesos en memoria a la vez, la
probabilidad de que todos los n procesos estén
esperando la E/S (en cuyo caso, la CPU estará
inactiva) es pn. Entonces, el uso de la CPU se
obtiene mediante la fórmula
• La figura muestra el uso de la CPU como una
función de n, a lo cual se le conoce como el grado
de multiprogramación.
• La figura deja claro que, si los procesos gastan 80
por ciento de su tiempo esperando las
operaciones de E/S, por lo menos debe haber 10
procesos en memoria a la vez para que el
desperdicio de la CPU esté por debajo de 10%.

• Ejemplo:
Suponga que una computadora tiene 512 MB de
memoria, de la cual el sistema operativo ocupa
128 MB y cada programa de usuario ocupa otros
128 MB. Estos tamaños permiten que haya tres
programas de usuario en memoria a la vez.
• Con un promedio de 80 por ciento de tiempo de
espera de E/S, tenemos una utilización de la CPU
(ignorando la sobrecarga del sistema operativo)
de 1 – 0.83 o de aproximadamente 49 por ciento.

• Si agregamos 512 MB más de memoria, el sistema


puede pasar de la multiprogramación de tres vías
a una multiprogramación de siete vías, con lo cual
el uso de la CPU se eleva hasta 79 por ciento. En
otras palabras, los 512 MB adicionales elevarán el
rendimiento por 30 por ciento.
• Si agregamos otros 512 MB, el uso de la CPU
sólo se incrementaría de 79 a 91 por ciento, con
lo cual se elevaría el rendimiento sólo en 12%
adicional. Utilizando este modelo, el propietario
de la computadora podría decidir que la primera
adición es una buena inversión, pero la segunda
no.
Hilos (Thread:)
• En los sistemas operativos tradicionales, cada
proceso tiene un espacio de direcciones y un solo
hilo de control.

• La principal razón de tener hilos es que en


muchas aplicaciones se desarrollan varias
actividades a la vez. Algunas de ésas se pueden
bloquear de vez en cuando. Al descomponer una
aplicación en varios hilos secuenciales que se
ejecutan en cuasi-paralelo, el modelo de
programación se simplifica.
• Ya hemos visto este argumento antes: es
precisamente la justificación de tener procesos.
En vez de pensar en interrupciones,
temporizadores y conmutaciones de contexto,
podemos pensar en procesos paralelos.

• Sólo que ahora con los hilos agregamos un


nuevo elemento: la habilidad de las entidades en
paralelo de compartir un espacio de direcciones
y todos sus datos entre ellas.
• Un segundo argumento para tener hilos es que,
como son más ligeros que los procesos, son mas
fáciles de crear (es decir, rápidos) y destruir. En
muchos sistemas, la creación de un hilo es de 10
a 100 veces más rápida que la de un proceso.

• Una tercera razón de tener hilos es también un


argumento relacionado con el rendimiento
cuando hay una cantidad considerable de
cálculos y operaciones de E/S, al tener hilos
estas actividades se pueden traslapar, con lo cual
se agiliza la velocidad de la aplicación.
• Suponga que el procesador de palabras se
escribe como un programa con dos hilos. Un hilo
interactúa con el usuario y el otro se encarga de
volver a dar formato en segundo plano. Tan
pronto como se elimina el enunciado de la
página 1, el hilo interactivo indica al hilo
encargado de volver a dar formato que aplique
de nuevo formato a todo el libro. Mientras tanto,
el hilo interactivo sigue esperando las acciones
del teclado y del ratón.
• Podría agregarse otro hilo que se encargue del
respaldo de los discos.
• Si el programa tuviera sólo un hilo, entonces
cada vez que iniciara un respaldo en el disco se
ignorarían los comandos del teclado y el ratón
hasta que se terminara el respaldo.

• Debemos aclarar que aquí no funcionaría tener


tres procesos separados, ya que los tres hilos
necesitan operar en el documento. Al tener tres
hilos en vez de tres procesos, comparten una
memoria común y por ende todos tienen acceso
al documento que se está editando.
• Ahora considere otro ejemplo más de la utilidad
de los hilos: un servidor para un sitio en Web.
Las solicitudes de páginas llegan y la página
solicitada se envía de vuelta al cliente. En la
mayoría de los sitios Web, algunas páginas se
visitan con más frecuencia que otras.

• Para mejorar el rendimiento utilizan una


colección de páginas de uso frecuente en la
memoria principal para eliminar la necesidad de
ir al disco a obtenerlas. A dicha colección se le
conoce como caché y se utiliza en muchos otros
contextos también.
• En la Figura se muestra la forma de organizar el
servidor Web.
• Este modelo permite escribir en el servidor en
forma de una colección de hilos secuenciales. El
programa del despachador consiste en un ciclo
infinito para obtener una petición de trabajo y
enviarla a un trabajador. El código de cada
trabajador consiste en un ciclo infinito que se
encarga de aceptar una petición del despachador
y comprobar la caché de páginas Web para ver si
la página está presente. De ser así, se devuelve al
cliente y el trabajador se bloquea para esperar
una nueva petición.
• Otra propuesta puede ser un diseño en el que
cada cálculo tiene un estado de guardado y existe
cierto conjunto de eventos que pueden ocurrir
para cambiar el estado, se conoce como
máquina de estados finitos.
• Un tercer ejemplo en donde los hilos son de
utilidad es en las aplicaciones que deben
procesar cantidades muy grandes de datos. El
método normal es leer un bloque de datos,
procesarlo y después escribirlo nuevamente
como salida. El problema aquí es que, si sólo hay
disponibles llamadas al sistema con bloqueo, el
proceso se bloquea mientas los datos están
entrando y saliendo. Hacer que la CPU quede
inactiva cuando hay muchos cálculos que
realizar es sin duda muy ineficiente y debemos
evitarlo siempre que sea posible. Los hilos
ofrecen una solución. El proceso podría
estructurarse con un hilo de entrada, un hilo de
procesamiento y un hilo de salida.
Modelo Clásico de un Hilo:
• El hilo tiene un contador de programa que lleva
el registro de cuál instrucción se va a ejecutar a
continuación. Tiene registros que contienen sus
variables de trabajo actuales. Tiene una pila, que
contiene el historial de ejecución, con un
conjunto de valores para cada procedimiento al
que se haya llamado, pero del cual no se haya
devuelto todavía.
• Como los hilos tienen algunas de las propiedades
de los procesos, algunas veces se les llama
procesos ligeros. El término multihilamiento
también se utiliza para describir la situación de
permitir varios hilos en el mismo proceso.
• Los distintos hilos en un proceso no son tan
independientes como los procesos. Todos los hilos
tienen el mismo espacio de direcciones, lo cual
significa que también comparten las mismas
variables globales. Como cada hilo puede acceder
a cada dirección de memoria dentro del espacio
de direcciones del proceso, un hilo puede leer,
escribir o incluso borrar la pila de otro hilo. No
hay protección entre los hilos debido a que (1) es
imposible y (2) no debe ser necesario.
• Es importante tener en cuenta que cada hilo tiene
su propia pila. La pila de cada hilo contiene un
conjunto de valores para cada procedimiento
llamado, pero del que todavía no se ha regresado.
Este conjunto de valores contiene las variables
locales del procedimiento y la dirección de retorno.
• Existen algunas clases de problemas se relaciona
con el hecho de que los hilos comparten muchas
estructuras de datos. ¿Qué ocurre si un hilo
cierra un archivo mientras otro aún está leyendo
datos de él?

• Suponga que un hilo detecta que hay muy poca


memoria y empieza a asignar más. A mitad del
proceso, ocurre una conmutación de hilos y el
nuevo hilo también detecta que hay muy poca
memoria y también empieza a asignar más
memoria. Es muy probable que se asigne
memoria dos veces
Dudas o Preguntas

Vous aimerez peut-être aussi