¿Cómo realizan las computadoras varias tareas al mismo tiempo? ¿Cómo prioriza la CPU las tareas?

“¿Cómo realizan las computadoras varias tareas al mismo tiempo?”

Depende de la tarea. Si es una tarea de cálculo que requiere el núcleo de la CPU, no lo hacen. Si es algo que se puede aplicar a una GPU, entonces la CPU no está involucrada en el cálculo realizado por la GPU. Es una operación de entrada / salida … solo mínimamente, y gran parte del trabajo se aplica al dispositivo.

“¿Cómo prioriza la CPU las tareas?”

varía según la tarea y el estado del sistema. También puede variar según el propósito del sistema.

En un sistema de propósito general, una forma útil de priorizar las tareas es realizarlas primero (FIFO – primero en entrar, primero en salir), esto permite que la prioridad se maneje fácilmente cuando el primero obtiene la máxima prioridad … Sin embargo, existe todavía hay niveles de prioridad incluso entonces: las cosas que requieren interacción con el dispositivo tienen mayor prioridad. Una forma de hacerlo es tener dos listas FIFO, con la actividad del dispositivo en la lista de mayor prioridad. Solo cuando no hay entradas en esa lista de mayor prioridad se examina la segunda lista.

Por lo general, hacer que las cosas entren en la lista de alta prioridad se realiza mediante un dispositivo que indica “He terminado el trabajo solicitado”. La interrupción (más alta que cualquiera de las dos listas de prioridad, ya que puede implementarse en hardware) obtiene suficiente tiempo para ingresar a una tarea de servicio del dispositivo.

Otra forma en que la lista de alta prioridad puede obtener una entrada es mediante una tarea en ejecución que solicita actividad del dispositivo (como la entrada de datos). Una vez que la entrada en la lista de alta prioridad está presente, la tarea actual se suspende y el procesamiento inicia la lista de mayor prioridad. Cuando finaliza (junto con cualquier otra entrada que pueda aparecer), se reanuda la tarea original.

Ahora esto proporciona la base. Una lista de alta prioridad (una tarea de dispositivo, implementada en hardware), una lista de alta prioridad (implementada en software) y una lista de baja prioridad (también implementada en software).

Ahora volvamos a la primera pregunta: “¿Cómo realizan las computadoras varias tareas al mismo tiempo?”

Para permitir la apariencia de llevar a cabo múltiples tareas al mismo tiempo, se requiere un dispositivo para generar interrupciones. Este es el reloj. Como la lista de baja prioridad se gestiona en software, el reloj solicita una tarea de nivel de hardware … que a su vez ingresa una entrada de tarea de dispositivo para ser atendida. Cuando la tarea del dispositivo (incluida en la lista por la interrupción) se procesa, lo que hace es colocar la tarea actual de baja prioridad al final de la lista de baja prioridad. Ahora el sistema puede volver a la primera entrada en la lista de baja prioridad, que ahora es una tarea diferente.

Esta intercalación de procesamiento es lo que hace que parezca que la CPU está realizando múltiples tareas al mismo tiempo.

En un sistema de múltiples núcleos, cada núcleo se maneja de la misma manera, con la ventaja de que tiene dos núcleos de CPU trabajando al mismo tiempo. Ambos trabajarán en diferentes tareas, pero al mismo tiempo.

Kernel (sistema operativo) – Wikipedia

1.5. Conceptos básicos de cómo funcionan los sistemas operativos

Las computadoras no realizan varias tareas al mismo tiempo. La multitarea es en realidad un nombre inapropiado. Las computadoras tienen la capacidad de realizar tareas muy rápidamente, y así engañan a nuestros cerebros lentos al pensar que la computadora es multitarea. La computadora simplemente está cambiando muy rápidamente de una tarea a otra para engañarlo haciéndole creer que es multitarea.

La programación de procesos y la priorización de tareas son un poco más complejas y dependen del sistema operativo actual que esté ejecutando y de cómo esté configurado su núcleo. La CPU no prioriza las tareas, se le dice exactamente a la CPU qué hacer y cuándo hacerlo por el sistema operativo y el núcleo subyacente, dependiendo de cómo dicho núcleo asigna los recursos.