Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Departamento de Computación Sistemas Operativos Prep. Carlos I. Buchart I. Nombre:___________________________________ Planificación de Procesos en Linux El Process Scheduler (SCHED), es el componente del kernel encargado de controlar el acceso de los procesos al CPU. El SCHED es el componente de bajo nivel más importante del sistemas; todos los demás (incluyendo los módulos de acceso a disco, controladores de video, etc.), dependen directamente de él. Los procesos en Linux pueden ser divididos en tres categorías, relacionadas con la prioridad: interactivos, por lotes y de tiempo real. Los procesos TR son manejados bien por un algoritmo FIFO o RR. Los demás procesos son despachados utilizando planificación RR con un sistema de envejecimiento basado en créditos, donde el siguiente proceso a ejecutar es aquel que más créditos posea. Los procesos TR son considerados prioritarios sobre cualquier otro proceso en el sistema, por lo que serán ejecutados antes que los demás. Por otro lado, un proceso puede estar en alguno de estos estados: en ejecución, en espera, detenido o zombie (un proceso que, aunque ha finalizado su ejecución, mantiene su PCB en el sistema). Algunos aspectos de la estructura interna del kernel que caben destacarse son: • La PCB está representada por la estructura task_struct. Ésta indica el tipo de planificación (FIFO,RR) por medio del campo policy, la prioridad (priority), el contador del programa (counter), entre otros. • La función goodness otorga una “calificación” al proceso pasado como parámetro. Dicha puntuación oscila entre -1000 (no elegible) y +1000 (TR). Los procesos que comparten una zona de memoria ganan una puntuación equivalente a su prioridad. • El quantum varía según el proceso y su prioridad. La duración base es de aprox. 200ms. • La función switch_to es la encargada de salvar la información de un proceso y cargar el siguiente. • Las funciones sched_{get/set}scheduler se refieren al mecanismo de planificación asociado a ese proceso. De igual forma el equivalente con ...param devuelve/fija la prioridad de un proceso. • Una nueva copia del proceso actual es creada mediante la llamada al sistema fork. Para ejecutar un nuevo programa se utiliza la función execve. Planificación de Procesos en Windows NT El kernel de Windows NT está diseñado utilizando POO. Posee una capa de abstracción de hardware (HAL), la cual es la única que se comunica directamente con el procesador; el resto del kernel está diseñado para utilizar la interfaz de la HAL. La unidad mínima de ejecución no es el proceso sino el hilo. Un hilo puede estar en alguno de estos seis estados: listo, standby (siguiente a ejecutar), en ejecución, en espera, en transición (un nuevo hilo) y terminado. Windows NT utiliza una planificación basada en colas múltiples de prioridades. Posee 32 niveles de colas, clasificadas en clas de TR (16-31) y clase variable (0-15). Las colas se recorren de mayor a menor ejecutando los hilos asociados. Cada cola es manejada por medio de un algoritmo de RR, aun así, si un hilo de mayor prioridad llega, el procesador le es asignado a éste. Bibliografía • http://www.iamexwi.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.html • http://www.oreilly.com/catalog/linuxkernel/chapter/ch10.html • http://www.cs.wpi.edu/~cs3013/b00/week3-sched/week3-sched.html • http://www.tldp.org/LDP/tlk/tlk.html • Sistemas Operativos 6a. Edición – A. Silberschatz, P. Galvin, G. Gagne (Linux: p. 681-689. Windows NT: p. 721-722 • http://www.808multimedia.com/winnt/kernel.htm CB/cb