IIC 2332 -- Sistemas Operativos
Apuntes 11
1er Semestre 1996
- Plazos del semestre
- Entrega de la tarea
- Varios procesadores comparten una memoria común.
- Podemos usar esta arquitectura para un ambiente de
multiprogramación normal. Los procesos son independiente de uno a
otro.
- ¿Comó se debieran planificar los procesos en los procesadores?
- Asignar permanente un proceso a un procesador. Cada procesador
tiene una cola lista. ¿El problema? Un procesador puede tener
procesos pendiente mientras que otro es desocupado.
- Usar una cola lista de todos los procesos que se sirven los
procesadores. ¿El problema? La contención para la cola lista
(recuerda la frecuencia de cambios de contexto).
- Si usamos una aplicación con threads en un multiprocesador,
podemos obtener los beneficios de paralelismo. Si los threads
tienen que interactar significamente (el paralelismo de grano medio),
la política de planificación es importante.
- Planificación de mismo. Los procesadores sacan procesos
de una cola global. Podemos usar varias políticas para la ordenación
de la cola (e.g., prioridades, FCFS). No hay un planificador
central. Desventajas:
- Con mas procesadores (cientos), la cola es un embotellamiento.
- Un thread expropriado probablemente no va a correr en el mismo
procesador. La eficiencia de la cache se declina.
- No es probable que todos los threads de un proceso corran al
mismo tiempo. Si necesitan coordinarse, habrá muchos cambios de
procesos (processor thrashing).
- Planificación de grupo. Cada proceso tiene todos los
procesadores para un cuanto. Los threads del proceso corren
paralelamente.
- ¿Qué pasa si tenemos aplicaciones sin (o con pocos) threads?
Malgastamos procesadores.
- Soluciones: El cuanto de un proceso depende del número de
threads que tiene, o planificar unos procesos juntos.
- Asignación de procesadores dedicados. Esto es como la
planificación de grupo, pero asignamos procesadores a los threads de
una aplicación hasta que termina. No hay ningunos cambios de
contexto, y la aplicación corre más rápida.
- Necesitamos métodos para evaluar los algoritmos de planificación.
- Modelado determinista. Comparamos el rendimiento de cada
algoritmo con un conjunto de procesos. Con muchos ejemplos podemos
encontrar tendencias, pero en general este método es demasiado
específico.
- Modelos de colas.
- El sistema es una red de servidores con colas. La CPU es un
servidor, cada depositivo, etc.
- Construimos distribuciónes para los tiempos de llegada en el
sistema, la probabilidad de I/O, etc.
- Podemos calcular la longitud promedio de colas, tiempos de
espera, etc.
- El problema es la complejidad de las distribuciones y
algoritmos; hay que simplificarlos para manejarlos. Por eso, los
modelos son aproximaciones del sistema.
- Simulaciones. Nachos es un ejemplo. Podemos usar cintas
de eventos (o distribuciónes) para dirigir la simulación. Es un buen
método de evaluacion.
- Implantación. Muy preciso, pero
- Costo: La modificación de un sistema operativo existente es
difícil (cambios de algoritmos, estructuras de datos, etc.).
- Reacción de los usuarios: Tenemos que implementar en un sistema
real, pero esos no son buenos para experimentación.
- Ya que hay muchas variables interdependientes, el uso de sistema
cambia con el nuevo algoritmo y nuevos problemas aparacen.
Last edited April 17, 1996, by knabe@ing.puc.cl