Planificación Multiprocesador En UNIX
pablo171021 de Mayo de 2013
630 Palabras (3 Páginas)376 Visitas
UNIX es un sistema de tiempo compartido, de propósito general, diseñado por programadores para ser usado por programadores. Simpleza, elegancia y consistencia son las características que los programadores desean de un sistema. Por ejemplo, en vez de agregar complejo código para tratar sistuaciones patológicas, UNIX se cae controladamente (entra en modo llamado pánico); más bien trata de prevenir estas situaciones antes que curarlas.
Otras cualidades de UNIX, bien vistas por los programadores, pero no tanto por los no-programadores, son su poder y flexibilidad, gracias a que ofrece una gran cantidad de elementos básicos que se pueden combinar de múltiples maneras para lograr metas más complejas. En UNIX, cada programa hace una sola cosa, y la hace bien (y de todas las formas posibles).
Otra característica es el uso de comandos cortos y crípticos.
Procesos
Los únicos entes activos en UNIX son los procesos. Cada usuario puede tener varios procesos activos simultáneamente, así que en un sistema UNIX puede haber cientos o miles de procesos simultáneos. Incluso cuando no hay usuarios usando el sistema, hay procesos corriendo, llamados demonios, que son creados cuando se inicializa el sistema.
Un ejemplo es el demonio cron, que despierta cada minuto para ver si hay algún trabajo que hacer. Gracias a él se pueden fijar actividades periódicas, como por ejempo, hacer respaldos a las 4 AM. Otros demonios manejan el correo entrante, la cola de impresión, monitorean el uso de páginas de memoria, etc.
Para implementar procesos, el kernel mantiene dos estructuras de datos:
1.-Tabla de procesos.
Residente todo el tiempo en memoria, contiene información para todos los procesos, incluidos los que no están en memoria. Aquí se manejan datos como la prioridad del proceso, mapa de memoria del proceso, dónde se encuentra el proceso cuando está en disco, etc.
2.-Estructura de usuario.
Se pasa a disco y a memoria junto con el proceso. Contiene registros, tabla de archivos abiertos, stack del kernel, estadísticas de uso de recursos, etc.
Planificación de CPU
El algoritmo de planificación de UNIX está diseñado para favorecer a los procesos interactivos. La planificación se hace en dos niveles: el algortimo de largo plazo determina qué procesos pasan de la memoria al disco, y viceversa. El de corto plazo determina a qué proceso se le entrega la CPU. Para eso usa múltiples colas, una para cada prioridad. Sólo los procesos que están en memoria y listos para ejecutar son puestos en estas colas. El planificador escoge cada vez el primer proceso de la cola de más alta prioridad que no esté vacía, y se le entrega la CPU por un quantum (0.1 seg), o hasta que se bloquee. Para evitar inanición, los procesos van perdiendo prioridad mientras más usan CPU: en cada tick del reloj se incrementa el contador de uso de CPU del proceso ejecutante. Cada segundo se recalculan las prioridades, dividiendo previamente por 2 el uso de CPU contabilizado a cada proceso.
Nueva prioridad = Base + Uso de CPU
A mayor valor, menor prioridad. La base es normalmente 0 para procesos de usuarios. El superusuario puede cambiar la prioridad de cualquier proceso, pero un usuario común sólo puede disminuir la prioridad de sus procesos.
Si el proceso usa todo su quantum, se pone de vuelta al final de su cola. Si un proceso se bloquea (por ejemplo, por I/O ), entonces sale de estas colas. Pero cuando vuelve nuevamente a estado READY, se pone, por esa vez en una cola de prioridad alta (negativa). Exactamente a qué cola, depende del evento por el que haya estado esperando.
O sea, los procesos intensivos en I/O (interactivos) tienen mayor prioridad que los intensivos en CPU. La planificación de largo plazo la hace un demonio (el swapper o intercambiador), que periódicamente chequea el sistema para decidir
...