La programación de tareas es uno de los conceptos clave en multitarea y multiprocesamiento tanto en sistemas operativos de uso general como en tiempo real . La programación consiste en asignar prioridades a los procesos en una cola de prioridad . El código del programa que realiza esta tarea se llama planificador ( tarea switcher , scheduler ) .
El objetivo más importante de la programación de tareas es utilizar el procesador al máximo. El rendimiento es el número de procesos que completan la ejecución por unidad de tiempo. Tiempo de espera : la cantidad de tiempo que un proceso espera en la cola de espera. El tiempo de respuesta es el tiempo que transcurre desde el inicio de una solicitud hasta la primera respuesta a una solicitud.
En entornos informáticos en tiempo real , por ejemplo, en dispositivos móviles diseñados para el control automático en la industria (por ejemplo, robótica ), el programador de tareas debe garantizar que los procesos se procesen dentro de intervalos de tiempo específicos (tiempo de respuesta); esto es fundamental para mantener el correcto funcionamiento del sistema en tiempo real.
Los sistemas operativos pueden incluir hasta tres tipos diferentes de programadores: el programador a largo plazo (o programador de tiempo de ejecución), el programador a mediano plazo y el programador a corto plazo (también conocido como despachador ). Los nombres mismos ya describen la frecuencia relativa con la que el planificador realiza sus funciones.
El programador a largo plazo decide qué tareas o procesos se agregarán a la cola de procesos listos para ejecutarse; es decir, cuando se intenta iniciar un proceso, el programador a largo plazo agrega un nuevo proceso a la cola de procesos listos (permite que se ejecute) o pospone esta acción. Por lo tanto, el planificador a largo plazo decide qué procesos se ejecutarán simultáneamente, controlando así el grado de paralelismo y la proporción entre los procesos intensivos en E/S y los intensivos en CPU. Por lo general, las computadoras de escritorio no usan un programador a largo plazo y permiten que los nuevos procesos se ejecuten automáticamente. Pero este programador es muy importante para los sistemas en tiempo real, ya que si el sistema está sobrecargado con procesos paralelos, el tiempo de respuesta del sistema puede ser más largo de lo requerido, lo cual es inaceptable.
En todos los sistemas con memoria virtual, el programador a mediano plazo mueve (descarga) temporalmente los procesos de la memoria principal a la memoria secundaria (por ejemplo, a un disco duro) y viceversa. Estas acciones se denominan paginación o intercambio . El programador a mediano plazo puede decidir intercambiar un proceso fuera de la memoria principal si:
El proceso volverá a la memoria principal cuando la cantidad requerida de memoria libre esté disponible o cuando el proceso se active (en cuyo caso, el planificador intercambiará otro proceso fuera de la memoria principal para liberar memoria principal).
En muchos sistemas modernos que admiten la asignación de espacio de direcciones virtuales a una memoria secundaria que no sea el archivo de página, el programador a mediano plazo también puede desempeñar el papel del programador a largo plazo, tratando los nuevos procesos como procesos que se han intercambiado fuera de la memoria principal. De esta manera, el sistema puede cargar código en la memoria principal solo cuando el proceso lo necesita para ejecutarse (esto se denomina carga por demanda o " carga diferida ").
El programador en este nivel decide cuál de los procesos listos y cargados se ejecutará en la CPU después de la interrupción (por tiempo, operación de E/S, llamada al sistema operativo u otra señal). Las decisiones a este nivel deben tomarse con mucha frecuencia (al menos cada período de tiempo). Además, el programador puede admitir o no la multitarea preventiva (es decir, ser capaz de interrumpir la ejecución de un proceso).
El despachador es otro componente del sistema de planificación. Este es un módulo que transfiere el control del procesador al proceso que fue seleccionado en el nivel de programación a corto plazo. Sus tareas incluyen cambiar el contexto, cambiar al modo de usuario y saltar al lugar correcto en el programa de usuario para iniciar o continuar su ejecución. El requisito principal para el despachador es la velocidad, ya que realiza cada cambio de proceso.
de los sistemas operativos | Aspectos|||||
---|---|---|---|---|---|
| |||||
Tipos |
| ||||
Núcleo |
| ||||
Gestión de procesos |
| ||||
Gestión y direccionamiento de memoria | |||||
Herramientas de carga e inicialización | |||||
caparazón | |||||
Otro | |||||
Categoría Wikimedia Commons Wikilibros Wikcionario |