Programación de CPU Algorithms in OperaSistemas de montaje

⚡ Resumen inteligente

La planificación de la CPU determina qué proceso listo ejecuta el sistema operativo a continuación,ping el procesador está ocupado y mejora el rendimiento mediante algoritmos como Primero en Llegar, Primero en Servir, Trabajo Más Corto Primero, Prioridad y Round Robin.

  • 🔄 Definición: La planificación de la CPU selecciona un proceso de la cola de procesos listos siempre que la CPU permanecería inactiva.
  • 🇧🇷 Tipos de Candidiasis: La planificación preventiva puede interrumpir una tarea en ejecución, mientras que la planificación no preventiva espera a que esta libere la CPU.
  • 📊 Criterios: Los buenos algoritmos maximizan la utilización de la CPU y el rendimiento, al tiempo que minimizan los tiempos de espera, respuesta y procesamiento.
  • 🧮 Algorithms: Los algoritmos FCFS, SJF, Tiempo restante más corto, Prioridad, Round Robin y Cola multinivel se adaptan a diferentes cargas de trabajo.
  • 🚦 Despachador: El despachador realiza el cambio de contexto que transfiere el control de la CPU al proceso seleccionado.
  • 🤖 Perspectiva de la IA: El aprendizaje automático optimiza las decisiones de planificación, y Copilot ayuda a codificar y probar los algoritmos de planificación.

Programación de CPU Algorithms in OperaSistemas de montaje

¿Qué es la programación de CPU?

Programación de CPU Es un proceso que determina qué proceso utilizará la CPU para su ejecución mientras otro proceso está en espera. La tarea principal de la planificación de la CPU es asegurar que, siempre que la CPU permanezca inactiva, el sistema operativo seleccione al menos uno de los procesos disponibles en la cola de listos para su ejecución. El planificador de la CPU realiza este proceso, el cual selecciona uno de los procesos en memoria que están listos para ejecutarse.

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 planificación con desalojo, las tareas se asignan principalmente según su prioridad. A veces es importante ejecutar una tarea de mayor prioridad antes que otra de menor prioridad, incluso si esta última aún se está ejecutando. La tarea de menor prioridad se detiene temporalmente y se reanuda cuando la de mayor prioridad finaliza su ejecución.

Programación no preventiva

En este método de planificación, la CPU se asigna a un proceso específico. El proceso que mantiene ocupada la CPU la libera cambiando de contexto o finalizando. Es el único método que se puede usar en diversas plataformas de hardware, ya que no requiere hardware especial (por ejemplo, un temporizador) como la planificación con desalojo.

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

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

  1. Un proceso cambia del estado de ejecución al de espera.
  2. Un proceso específico cambia del estado de ejecución al estado de preparación.
  3. Un proceso específico pasa del estado de espera al estado de listo.
  4. Un proceso finaliza su ejecución y termina.

Si solo se cumplen las condiciones 1 y 4, la planificación se denomina no preferente. Todas las demás situaciones de planificación son preferentes.

Terminología importante de la planificación de la CPU

  • Tiempo de ráfaga/tiempo de ejecución: El tiempo que tarda un proceso en completar su ejecución. También se denomina tiempo de ejecución.
  • Hora de llegada: El momento en que un proceso entra en el estado de listo.
  • Tiempo de finalización: El momento en que un proceso finaliza y sale del sistema.
  • Multiprogramación: Varios programas pueden estar presentes en la memoria al mismo tiempo.
  • Trabajos: Un tipo de programa sin ningún tipo de interacción con el usuario.
  • Usuario: Un tipo de programa que requiere interacción con el usuario.
  • Proceso: La referencia que se utiliza tanto para un trabajo como para un usuario.
  • Ciclo de ráfaga de CPU/IO: Describe la ejecución de procesos, que alterna entre la actividad de la CPU y la de entrada/salida. Los tiempos de CPU suelen ser más cortos que los de entrada/salida.

Criterios de programación de CPU

Un algoritmo de programación de CPU intenta maximizar y minimizar lo siguiente:

Criterios de programación de CPU

Maximice

Utilización de CPU: La utilización de la CPU es la tarea principal del sistema operativo para garantizar que la CPU se mantenga lo más ocupada posible. Puede variar entre el 0 y el 100 por ciento. Sin embargo, en un sistema operativo en tiempo real (RTOS), puede oscilar entre el 40 por ciento para un sistema de bajo nivel y el 90 por ciento para un sistema de alto nivel.

rendimiento: El número de procesos que finalizan su ejecución por unidad de tiempo se conoce como rendimiento. Por lo tanto, cuando la CPU está ocupada ejecutando un proceso, se está realizando trabajo, y el trabajo completado por unidad de tiempo se denomina rendimiento.

Minimizar

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

Tiempo de respuesta: Es el tiempo que transcurre desde que se envía la solicitud hasta que se recibe la primera respuesta.

Tiempo de respuesta: El tiempo de respuesta es el tiempo que tarda en ejecutarse un proceso específico. Incluye el tiempo total de espera para acceder a la memoria, el tiempo de espera en la cola y el tiempo de ejecución en la CPU. El tiempo de respuesta es el periodo comprendido entre el momento en que se envía el proceso y el momento en que finaliza.

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 indefinidamente.

¿Qué es el despachador?

El despachador es un módulo que proporciona el control de la CPU al proceso. El despachador debe ser rápido para poder ejecutarse en cada cambio de contexto. La latencia de despacho es el tiempo que necesita el planificador de la CPU para detener un proceso e iniciar otro.

Funciones realizadas por el despachador:

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

Tipos de programación de CPU Algorithms

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 Algorithms

Programación Algorithms

Se le sirve en orden de llegada

FCFS significa Se le sirve en orden de llegadaEs el algoritmo de planificación de CPU más sencillo. En este tipo de algoritmo, el proceso que solicita la CPU la obtiene primero. Este método de planificación se puede gestionar con una cola FIFO.

Cuando un proceso entra en la cola de procesos listos, su PCB (Bloque de Control de Proceso) se enlaza con el final de la cola. Por lo tanto, cuando la CPU queda libre, debe asignarse al proceso que se encuentra al principio de la cola.

Características del método FCFS

  • Es un algoritmo de planificación no preferente.
  • 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

Las siglas SRT significan Tiempo Restante Más Corto. También se conoce como planificación preventiva SJF. En este método, el proceso se asigna a la tarea más próxima a su finalización. Esto evita que un proceso nuevo y listo para completarse retrase la finalización de un proceso anterior.

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

  • Este método se aplica principalmente en entornos de procesamiento por lotes donde es necesario dar preferencia a los trabajos cortos.
  • Este no es un método ideal para implementar en un sistema compartido donde se desconoce el tiempo de CPU requerido.
  • Cada proceso está asociado con la duración de su siguiente ráfaga de CPU, por lo que el sistema operativo utiliza estas duraciones para programar el proceso en el menor tiempo posible.

Programación basada en prioridades

Programación prioritaria Es un método de planificación de procesos basado en la prioridad. En este método, el planificador selecciona las tareas en las que trabajar según su prioridad.

La planificación por prioridades también ayuda al sistema operativo a asignar prioridades. Los procesos con mayor prioridad se ejecutan primero, mientras que las tareas con la misma prioridad se ejecutan de forma rotativa o según el principio FCFS (primero en entrar, primero en salir). La prioridad se puede determinar en función de los requisitos de memoria, los requisitos de tiempo y otros factores.

Programación por turnos

todos contra todos Es uno de los algoritmos de planificación más antiguos y sencillos. Su nombre proviene del principio de round-robin, donde cada proceso recibe una parte igual por turno. Se utiliza principalmente para la planificación en sistemas multitarea. Este método ayuda a lograr una ejecución de procesos sin inanición.

Características de la programación por turnos

  • El sistema round robin es un modelo híbrido que funciona mediante reloj.
  • El intervalo de tiempo asignado para el procesamiento de una tarea específica debe ser mínimo. Sin embargo, puede variar según el proceso.
  • Se comporta como un sistema de tiempo compartido que responde a cada proceso dentro de un límite de tiempo específico.

Trabajo más corto primero

SJF (Shortest Job First) es un algoritmo de planificación que selecciona el proceso con el menor tiempo de ejecución para su siguiente ejecución. Este método puede ser preventivo o no preventivo. Reduce significativamente el tiempo de espera promedio de los demás procesos que aguardan su ejecución.

Características de la programación SJF

  • Cada tarea está asociada a una unidad de tiempo para su finalización.
  • En este método, cuando la CPU está disponible, se ejecuta primero el siguiente proceso o tarea con el menor tiempo de finalización.
  • Se implementa con una política no preventiva.
  • Este algoritmo resulta útil para el procesamiento por lotes, donde no es fundamental esperar a que finalicen las tareas.
  • Mejora la productividad al ejecutar primero las tareas más cortas, que generalmente tienen un tiempo de respuesta menor.

Programación de colas de múltiples niveles

Este algoritmo divide la cola de procesos listos 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, el tamaño de la memoria, etc.

Sin embargo, este no es un algoritmo de planificación independiente, ya que necesita utilizar otros tipos de algoritmos para planificar las tareas.

Características de la planificación de colas multinivel

  • Se deben mantener varias colas para los procesos con características compartidas.
  • Cada cola puede tener su propio algoritmo de planificación independiente.
  • Se asignan prioridades a cada cola.

El propósito de un algoritmo de planificación

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

  • La CPU utiliza la programación para mejorar su eficiencia.
  • Te ayuda a asignar recursos entre procesos que compiten entre sí.
  • La máxima utilización de la CPU se puede obtener mediante la multiprogramación.
  • Los procesos que deben ejecutarse se mantienen en la cola de procesos listos.

Preguntas Frecuentes

No existe un único algoritmo óptimo. El algoritmo de "Trabajo más corto primero" ofrece el menor tiempo de espera promedio y es demostrablemente óptimo, pero requiere conocer los tiempos de ráfaga y puede dejar sin trabajo a tareas largas. El algoritmo de "Round Robin" es más justo para sistemas de tiempo compartido.

El bloqueo de recursos se produce cuando un proceso espera indefinidamente porque las tareas más cortas o de mayor prioridad siempre obtienen la CPU primero. Es común en la planificación por prioridad y por tarea más corta, donde los procesos largos o de baja prioridad pueden no llegar a ejecutarse nunca.

El envejecimiento es una técnica que aumenta gradualmente la prioridad de los procesos que han esperado mucho tiempo. Esto evita la inanición en la planificación basada en prioridades, ya que incluso un proceso de baja prioridad acaba alcanzando una prioridad lo suficientemente alta como para ejecutarse.

El cambio de contexto guarda el estado del proceso actual y carga el de otro desde su PCB, de modo que la ejecución pueda reanudarse más tarde. Se trata de una sobrecarga de planificación pura que el despachador gestiona en cada cambio entre procesos.

El planificador a largo plazo (de trabajos) controla cuántos procesos entran en la cola de listos y establece el grado de multiprogramación. El planificador a corto plazo (de CPU) elige qué proceso listo se ejecutará a continuación y se ejecuta con mucha más frecuencia.

Linux utiliza el planificador EEVDF, que reemplazó al planificador completamente justo (CFS) en el kernel 6.6. Windows Utiliza un planificador preventivo basado en prioridades con división de tiempo round-robin dentro de cada nivel de prioridad.

Los modelos de aprendizaje automático predicen los tiempos de máxima actividad de los procesos y ajustan o seleccionan las políticas de planificación para reducir el tiempo de espera y el consumo de energía. Estos planificadores basados ​​en IA se estudian para centros de datos, servidores en la nube y sistemas en tiempo real.

Sí. GitHub Copilot puede generar código FCFS, SJF, Priority y Round Robin, además de diagramas de Gantt y cálculos de tiempo de espera. Siempre verifique los casos límite, las reglas de desempate y las fórmulas de tiempo promedio antes de confiar en el resultado.

Resumir este post con: