jueves, 1 de septiembre de 2016

Planificación de CPU

La forma en que se reparte el uso de la CPU entre los procesos tiene un enorme impacto en el rendimiento de un sistema multiprogramado, por lo que siempre se ha prestado una gran atención a las políticas de planificación que se implementan y se han elaborado multitud de conceptos relacionados con ello. El objetivo de este tema es el estudio de estas políticas.


Procesos


Los procesos o tareas, se pueden definir como programas en ejecución. Un proceso en SO presenta las siguientes características:
  • Para iniciar su ejecución deben cargarse completamente en memoria y tener asignados todos los recursos que necesita.
  • Ha de estar protegido del resto de procesos, lo que significa que ningún otro proceso podrá escribir en la zona de memoria perteneciente a ese proceso.
  • Puede pertenecer al usuario y se ejecutaría en modo usuario del procesador (con restricciones de acceso a los recursos hardware) o al Sistema operativo y se ejecutaría en modo núcleo o privilegiado del procesador (sin restricciones de acceso a los recursos hardware.
  • Cada proceso tiene una estructura de datos llamada bloque de control de proceso donde se almacena información acerca del proceso: Identificador del proceso, Prioridad, Estado del proceso, etc.

Estados


De manera básica podemos decir que un proceso puede encontrarse en diferentes estados a lo largo de su ciclo de vida. Estos son:
  • En ejecución. El procesador esta ejecutando instrucciones de ese proceso en un instante determinado.
  • Preparado, en espera o activo. El proceso está preparado para ejecutarse; es decir, espera el turno para poder utilizar su intervalo de tiempo de CPU.
  • Bloqueado. El proceso está retenido, es decir, está bloqueado por alguna razón. Una de esas razones puede ser que dos procesos utilicen el mismo fichero de datos. Otra podría ser que dos procesos necesiten utilizar la misma unidad de disco o CD para cargar determinados datos, etc.

Transiciones


Atendiendo a los estados anteriores se puede establecer un diagrama de transiciones entre los diferentes estados como el representado en el siguiente diagrama de transiciones de estado:

  • Transición A. tiene lugar cuando el programa que está en ejecución pasa a esperar algún suceso de E/S para poder continuar ejecutándose.
  • Transición B. Tiene lugar cuando el programa o proceso ha utilizado el tiempo asignado por la CPU (procesador) para su ejecución y tiene que dejar paso al siguiente proceso.
  • Transición C. Tiene lugar cuando el proceso que está preparado pasa a ser ejecutado, es decir cuando al proceso le llega una nueva disposición de tiempo de la CPU para poder ejecutarse.
  • Diagrama de transiciones de estados

  • Transición D. Tiene lugar cuando el proceso pasa de estar bloqueado a estar preparado, es decir, cuando el proceso recibe una orden o señal que estaba esperando para pasar de bloqueado a preparado y posteriormente cuando le toque pasar de nuevo a ejecutar la CPU.
El paso de un proceso de un estado a otro, por ejemplo de espera a ejecución se denomina cambio de contexto.

Planificación


Un proceso, durante su ejecución, compite con el resto de procesos del sistema por el uso de los recursos. La técnica de planificación permite indicar al ordenador los procesos que deben ejecutarse y los estados que deben adoptar. Mediante los algoritmos de planificación se consigue decidir, en cada momento, que proceso debe ejecutarse. Algunas características de estos algoritmos son el equilibrio, la eficiencia y el rendimiento.
El reparto de los recursos ente los procesos y sus ejecución concurrente se conoce como multiprogramación.

Los SO disponen de los servicios necesarios para la gestión de los procesos, tales como creación, finalización, ejecución periódica, cambio de prioridad, etc. Para realizar esto el SO mantiene una serie de registros que proporcionan información sobre todos los procesos, estos registros se denominan Bloques de control de procesos y almacenan informaciones tales como estado de los procesos, prioridades, algoritmos usados, datos de E/S, etc .
Precisamente la parte del SO que se encarga de asignar los recursos del sistema para conseguir unos objetivos de comportamiento determinados se denomina Planificador, y en general es el que se encarga de decidir que proceso pasará al estado activo de entre todos los procesos que están en el estado preparado.