Sistema operativo unix

Solo disponible en BuenasTareas
  • Páginas : 19 (4732 palabras )
  • Descarga(s) : 7
  • Publicado : 8 de julio de 2010
Leer documento completo
Vista previa del texto
[pic]

Sistemas Operativos

Trabajo de Investigación.

Santiago, 22 de Enero de 2009

Acerca del presente Trabajo

Como parte del ramo de Sistemas Operativos, se ha pedido la realización de un trabajo de investigación sobre tres tópicos importantes y comunes a los Sistemas Operativos. Se propuso, por parte del profesor, tres plataformas siendo UNIX el SO elegido por nosotros. Laspreguntas a responder son:

¿Con qué algoritmo(s) administra la CPU? Página 2

¿Qué administrador de Memoria tiene implementado? Página 5

¿Cómo maneja la Concurrencia? Página 13

Para el caso del presente trabajo, los conceptos y diagramas están contextualizados a la versión de UNIX System V [1]

1. Algoritmo de administración de CPU

El programador o “scheduler” en elsistema UNIX pertenece al tipo general de schedulers conocidos como Round Robin con retroalimentación multinivel (“multi-level feedback”), lo que significa que el kernel asigna la CPU a un proceso por un lapso de tiempo denominado “quantum”, lo saca cuando el proceso excede su quantum de tiempo y lo retroalimenta a una de varias colas de prioridad. Un proceso puede necesitar muchas iteraciones a travésdel “loop” de retroalimentación antes de terminar. Cuando el kernel realiza un cambio de contexto y restaura el contexto de un proceso, el proceso reanuda su ejecución desde el punto donde había sido suspendido.

Al finalizar un cambio de contexto, el kernel ejecuta el algoritmo para programar un proceso (Figura 1.1), seleccionando el proceso de más alta prioridad entre aquellos en los estados“listo para ejecutar y cargado en memoria” y “preempted”. No tiene sentido seleccionar un proceso que no esté cargado en memoria, debido a que no puede ejecutarlos hasta que sea transferido a ella (“swap in”). Si hay muchos procesos calificados como de la más alta prioridad, el kernel elige aquel que a estado “listo a ejecutar” durante el mayor tiempo, siguiendo una política de programación roundrobin. Si no hay procesos disponibles para ejecución, el procesador “reposa” hasta la siguiente interrupción, la que ocurrirá en a lo más en una marca de reloj; luego de manejar esa interrupción, el kernel nuevamente intenta programar un proceso para su ejecución.

algoritmo programar_proceso
{
mientras (no haya un proceso seleccionado para ejecutar)
{
para (cada proceso en la cola deejecución)
elegir proceso de más alta prioridad que esté cargado en memoria;
si (no hay proceso elegible que ejecutar)
máquina en reposo;
/* una interrupción saca la máquina del estado de reposo*/
}
Remover el proceso elegido desde la cola de ejecución;
Cambiar contexto a aquél del proceso elegido, reanudar su ejecución}

Figura 1.1. Algoritmo para Programación de Procesos

[pic]

Figura 1.2 Ejemplo de programación de Procesos

La figura 1.2 muestra las prioridades de programación para 3 procesos A, B, y C, bajo los siguientes supuestos: Son creados simultáneamente con prioridad inicial 60, el nivel de prioridad de usuario más alto es 60, el reloj interrumpe el sistema 60 veces por segundo, el procesono hace llamadas al sistema y no hay otros procesos listos para ejecución.

El kernel calcula el decaimiento del uso de CPU mediante:
CPU = decaimiento (CPU) = CPU/2;
Y las prioridades de proceso como
Prioridad = (CPU/2) + 60;
Asumiendo que el proceso A es el primero en ejecutarse y que comienza al inicio de un quantum de tiempo, corre por 1 segundo: Durante ese tiempo, el reloj interrumpeel sistema 60 veces y el manejador de interrupciones incrementa el campo de uso de CPU del proceso A 60 veces (a 60). El kernel fuerza un cambio de contexto en la marca de -1 segundo y, luego de recalcular las prioridades de todos los procesos, programa el proceso B para ejecución. El manejador del reloj incrementa el valor del campo uso de CPU del proceso B 60 veces durante el próximo segundo y...
tracking img