Algoritmos de programación de CPU en sistemas operativos

¿Qué es la programación de CPU?

Programación de CPU es un proceso para determinar qué proceso poseerá la CPU para su ejecución mientras otro proceso está en espera. La tarea principal de la programación de la CPU es asegurarse de que siempre que la CPU permanezca idle, el sistema operativo selecciona al menos uno de los procesos disponibles en la cola listos para su ejecución. El proceso de selección será realizado por el planificador de la CPU. Selecciona uno de los procesos en memoria que están listos para su ejecución.

Tipos de programación de CPU

Aquí hay dos tipos de métodos de programación:

Tipos de programación de CPU

Programación preventiva

En la programación preventiva, la mayoría de las tareas se asignan con sus prioridades. A veces es importante ejecutar una tarea con mayor prioridad antes que otra tarea de menor prioridad, incluso si la tarea de menor prioridad todavía se está ejecutando. La tarea de menor prioridad se mantiene durante algún tiempo y se reanuda cuando la tarea de mayor prioridad finaliza su ejecución.

Programación no preventiva

En este tipo de método de programación, la CPU se ha asignado a un proceso específico. El proceso que mantiene ocupada la CPU liberará la CPU ya sea cambiando de contexto o finalizando. Es el único método que se puede utilizar para varias plataformas de hardware. Esto se debe a que no necesita hardware especial (por ejemplo, un temporizador) como la programación preventiva.

¿Cuándo la programación es preventiva o no preventiva?

Para determinar si la programación es preventiva o no preventiva, considere estos cuatro parámetros:

  1. Un proceso cambia del estado de ejecución al de espera.
  2. El proceso específico cambia del estado en ejecución al estado listo.
  3. Un proceso específico cambia del estado de espera al estado listo.
  4. El proceso finalizó su ejecución y finalizó.

Sólo se aplican las condiciones 1 y 4; la programación se denomina no preventiva.

Todas las demás programaciones son preventivas.

Terminologías importantes de programación de CPU

  • Tiempo de ráfaga/tiempo de ejecución: Es un tiempo que requiere el proceso para completar su ejecución. También se le llama tiempo de ejecución.
  • Hora de llegada: cuando un proceso entra en estado listo
  • Tiempo de finalización: cuando el proceso se completa y sale de un sistema
  • Multiprogramación: Varios programas que pueden estar presentes en la memoria al mismo tiempo.
  • Trabajos: Es un tipo de programa sin ningún tipo de interacción por parte del usuario.
  • Usuario: Es un tipo de programa que tiene interacción con el usuario.
  • Proceso: Es la referencia que se utiliza tanto para el trabajo como para el usuario.
  • Ciclo de ráfaga de CPU/IO: Caracteriza la ejecución del proceso, que alterna entre actividad de CPU y E/S. Los tiempos de CPU suelen ser más cortos que el tiempo de E/S.

Criterios de programación de CPU

Un algoritmo de programación de CPU intenta maximizar y minimizar el seguimiento.wing:

Criterios de programación de CPU

Maximizar

Utilización de CPU:La utilización de la CPU es la tarea principal en la que el sistema operativo necesita asegurarse de que la CPU permanezca lo más ocupada posible. Puede oscilar entre 0 y 100 por ciento. Sin embargo, para RTOS, puede oscilar entre el 40 por ciento para el sistema de bajo nivel y el 90 por ciento para el sistema de alto nivel.

rendimiento: Al número de procesos que finalizan su ejecución por unidad de tiempo se le conoce como Throughput. Entonces, cuando la CPU está ocupada ejecutando el proceso, en ese momento se está realizando el trabajo y el trabajo completado por unidad de tiempo se denomina rendimiento.

Minimizar

Tiempo de espera: El tiempo de espera es una cantidad que un proceso específico debe esperar en la cola de listo.

Tiempo de respuesta: Es el tiempo que transcurre desde que se presentó la solicitud hasta que se produce la primera respuesta.

Tiempo de respuesta: El tiempo de respuesta es una cantidad de tiempo para ejecutar un proceso específico. Es el cálculo del tiempo total empleado esperando para ingresar a la memoria, esperando en la cola y ejecutándose en la CPU. El período entre el momento de la presentación del proceso y el momento de su finalización es el tiempo de respuesta.

Temporizador de intervalo

La interrupción del temporizador es un método estrechamente relacionado con la preferencia. Cuando un determinado proceso obtiene la asignación de CPU, se puede configurar un temporizador en un intervalo específico. Tanto la interrupción del temporizador como la preferencia obligan a un proceso a devolver la CPU antes de que se complete su ráfaga de CPU.

La mayoría de los sistemas operativos multiprogramados utilizan algún tipo de temporizador para evitar que un proceso bloquee el sistema para siempre.

¿Qué es el despachador?

Es un módulo que proporciona control de la CPU al proceso. El Dispatcher debe ser rápido para poder ejecutarse en cada cambio de contexto. La latencia de envío es la cantidad de tiempo que necesita el programador de la CPU para detener un proceso e iniciar otro.

Funciones realizadas por el Despachador:

  • Cambio de contexto
  • Cambiar al modo de usuario
  • Moviéndose a la ubicación correcta en el programa recién cargado.

Tipos de algoritmo de programación de CPU

Existen principalmente seis tipos de algoritmos de programación de procesos

  1. Primero en llegar, primero en servir (FCFS)
  2. Programación de trabajo más corto primero (SJF)
  3. Tiempo restante más corto
  4. Programación prioritaria
  5. Programación Round Robin
  6. Programación de colas multinivel
Programación de algoritmos
Programación de algoritmos

Se le sirve en orden de llegada

First Come First Serve es la forma completa de FCFS. Es el algoritmo de programación de CPU más fácil y sencillo. En este tipo de algoritmo, el proceso que solicita la CPU obtiene primero la asignación de CPU. Este método de programación se puede gestionar con una cola FIFO.

Cuando el proceso ingresa a la cola lista, su PCB (Bloque de control de proceso) se vincula con la cola de la cola. Entonces, cuando la CPU queda libre, se debe asignar al proceso al comienzo de la cola.

Características del método FCFS

  • Ofrece un algoritmo de programación preventivo y no preventivo.
  • Los trabajos siempre se ejecutan por orden de llegada
  • Es fácil de implementar y utilizar.
  • Sin embargo, este método tiene un rendimiento deficiente y el tiempo de espera general es bastante alto.

Tiempo restante más corto

La forma completa de SRT es el tiempo restante más corto. También se conoce como programación preventiva SJF. En este método, el proceso se asignará a la tarea que esté más cercana a su finalización. Este método evita que un proceso de estado listo más nuevo retenga la finalización de un proceso anterior.

Características del método de programación SRT

  • Este método se aplica principalmente en entornos por lotes donde se requiere dar preferencia a trabajos cortos.
  • Este no es un método ideal para implementarlo en un sistema compartido donde se desconoce el tiempo de CPU requerido.
  • Asóciese con cada proceso según la duración de su próxima ráfaga de CPU. De modo que ese sistema operativo utiliza estas longitudes, lo que ayuda a programar el proceso en el menor tiempo posible.

Programación basada en prioridades

Programación prioritaria Es un método de programación de procesos basado en prioridades. En este método, el programador selecciona las tareas para trabajar según la prioridad.

La programación de prioridades también ayuda al sistema operativo a involucrar asignaciones de prioridad. Los procesos con mayor prioridad deben llevarse a cabo primero, mientras que los trabajos con igual prioridad se llevan a cabo por turnos o FCFS. La prioridad se puede decidir en función de los requisitos de memoria, los requisitos de tiempo, etc.

Programación por turnos

Round Robin es el algoritmo de programación más antiguo y simple. El nombre de este algoritmo proviene del principio de round-robin, donde cada persona recibe una parte igual de algo por turno. Se utiliza principalmente para programar algoritmos en multitarea. Este método de algoritmo ayuda a la ejecución de procesos sin hambre.

Características de la programación por turnos

  • Round Robin es un modelo híbrido que funciona con un reloj.
  • El intervalo de tiempo debe ser mínimo, el cual se asigna para que se procese una tarea específica. Sin embargo, puede variar para diferentes procesos.
  • Es un sistema en tiempo real que responde al evento dentro de un límite de tiempo específico.

Trabajo más corto primero

SJF es una forma completa de (el trabajo más corto primero) es un algoritmo de programación en el que el proceso con el tiempo de ejecución más corto debe seleccionarse para su siguiente ejecución. Este método de programación puede ser preventivo o no preventivo. Reduce significativamente el tiempo promedio de espera de otros procesos en espera de ejecución.

Características de la programación SJF

  • Está asociado a cada trabajo como una unidad de tiempo para completar.
  • En este método, cuando la CPU esté disponible, se ejecutará primero el siguiente proceso o trabajo con el tiempo de finalización más corto.
  • Se implementa con una política no preventiva.
  • Este método de algoritmo es útil para el procesamiento por lotes, donde esperar a que se completen los trabajos no es crítico.
  • Mejora la producción de trabajos al ofrecer trabajos más cortos, que deben ejecutarse primero y que en su mayoría tienen un tiempo de respuesta más corto.

Programación de colas de múltiples niveles

Este algoritmo separa la cola lista en varias colas separadas. En este método, los procesos se asignan a una cola en función de una propiedad específica del proceso, como la prioridad del proceso, el tamaño de la memoria, etc.

Sin embargo, este no es un algoritmo de sistema operativo de programación independiente, ya que necesita utilizar otros tipos de algoritmos para programar los trabajos.

Característica de la programación de colas de varios niveles

  • Se deben mantener múltiples colas para procesos con algunas características.
  • Cada cola puede tener sus algoritmos de programación separados.
  • Se dan prioridades para cada cola.

El propósito de un algoritmo de programación

Estas son las razones para utilizar un algoritmo de programación:

  • La CPU utiliza la programación para mejorar su eficiencia.
  • Le ayuda a asignar recursos entre procesos competitivos.
  • La utilización máxima de la CPU se puede obtener con multiprogramación.
  • Los procesos que se van a ejecutar están en cola de listos.

Resumen

  • La programación de CPU es un proceso para determinar qué proceso poseerá la CPU para su ejecución mientras otro proceso está en espera.
  • En la programación preventiva, la mayoría de las tareas se asignan con sus prioridades.
  • En el método de programación no preventiva, la CPU se ha asignado a un proceso específico.
  • El tiempo de ráfaga es el tiempo necesario para que el proceso complete su ejecución. También se le llama tiempo de ejecución.
  • La utilización de la CPU es la tarea principal en la que el sistema operativo debe garantizar que la CPU permanezca lo más ocupada posible.
  • Al número de procesos que finalizan su ejecución por unidad de tiempo se le conoce como Throughput.
  • El tiempo de espera es una cantidad que un proceso específico debe esperar en la cola de listo.
  • Es el tiempo que transcurre desde que se presentó la solicitud hasta que se produce la primera respuesta.
  • El tiempo de respuesta es la cantidad de tiempo para ejecutar un proceso específico.
  • La interrupción del temporizador es un método estrechamente relacionado con la preferencia.
  • Un despachador es un módulo que proporciona control de la CPU al proceso.
  • Seis tipos de algoritmos de programación de procesos son: Primero en llegar, primero en servir (FCFS), 2) Programación de trabajo más corto primero (SJF), 3) Tiempo restante más corto, 4) Programación de prioridad, 5) Programación por turnos, 6) Programación de cola multinivel .
  • En la Método por orden de llegada, el proceso que solicita la CPU obtiene primero la asignación de CPU.
  • En el menor tiempo restante, el proceso se asignará a la tarea más cercana a su finalización.
  • En la programación de prioridades, el programador selecciona las tareas para trabajar según la prioridad.
  • Programación por turnos Funciona según el principio de que cada persona recibe una parte igual de algo a su vez.
  • En el trabajo más corto primero, se debe seleccionar el tiempo de ejecución más corto para la siguiente ejecución.
  • El método de programación multinivel separa la cola lista en varias colas separadas. En este método, los procesos se asignan a una cola según una propiedad específica.
  • La CPU utiliza la programación para mejorar su eficiencia.