Éstas son dudas válidas para una novata en la cocina, en administrar un hogar o un restaurante. Con las capacidades tan grandes que tienen los sistemas de cómputo modernos surgen el mismo tipo de complicaciones: ¿se puede ejecutar más de un programa a la vez?, ¿cuántos recursos (entendiéndolos como la cantidad de memoria, el tiempo del procesador que se puede utilizar, etc.) pueden asignarse a una aplicación particular? Es claro que se requiere de un administrador para la computadora.
Dado que el administrador de la computadora debe funcionar eficientemente, tiene que ser un programa que controle y ordene el acceso a los recursos, que ofrezca mecanismos para que los otros programas puedan solicitar y acceder a esos recursos y, aunque no es tan obvio, también debe proveer seguridad y privacidad para los programas que se ejecutan en el sistema. Este programa administrador recibe el nombre de sistema operativo.
En un sistema de cómputo en cualquier casa u oficina moderna, una persona o varias pueden estar ejecutando de manera simultánea distintas aplicaciones: un navegador de web, una hoja de cálculo, un editor de textos, compiladores y ambientes de desarrollo, etc.
Como ya se ha visto, el avance de este tipo de computadoras hasta hace un par de años estaba dominado por sistemas con un solo procesador. Entonces, ¿cómo pueden estarse ejecutando de manera simultánea tantos procesos?
La manera de resolver esto en los sistemas operativos modernos es a través de una pequeña porción del sistema operativo, uno de los muchos programas que conforman el sistema operativo, que se conoce como proceso planificador de tareas (o scheduler, en inglés) y cuya tarea consiste en administrar la interacción de todos los procesos en el equipo: cuántos hay en ejecución, qué recursos tienen, exactamente en qué línea de su programa va el procesador, si están o no esperando enviar o recibir información de los dispositivos de entrada y salida, cómo almacenar información en un archivo o recibir lo que escribió el usuario por medio del teclado.
Curiosidades
Los primeros sistemas operativos que se desarrollaron para equipos mainframe y microcomputadoras, tenían un planificador muy primitivo y soportaban la ejecución de un solo proceso. El programa entonces tenía el control total del equipo. La habilidad multitarea se introdujo en los mainframes en los años sesenta y en las microcomputadoras en los ochenta, pero las técnicas se consolidaron y utilizaron ampliamente varios años después.
Tómese como ejemplo la sección de carnes frías de un supermercado típico: cuando llega una persona, debe tomar una ficha con un número, y cuando uno de los dependientes se desocupa y activa un control, se enciende el número que indica qué cliente será atendido a continuación. Cuando ve aparecer su número en la pantalla, el cliente dice: "Sigo yo", y entonces el dependiente le pregunta qué desea. En esta situación, el dependiente junto con el esquema de números, controles y el tablero, funcionan como un planificador para la sección de carnes frías. ¿Qué recursos administra este planificador? Antes que nada, la atención del dependiente, que no podría atender todas las solicitudes de las compradoras al mismo tiempo; después la báscula para pesar y cotizar los productos, las carnes frías, etcétera.
En la práctica, las computadoras con esos millones de operaciones que pueden realizar por segundo dan la impresión de que hacen muchas cosas a la vez, aunque en realidad funcionan de una manera similar al ejemplo de las carnes frías: le asignan un tiempo determinado a un proceso —por ejemplo, al editor de textos—, y después de ese tiempo o cuando el procesador indique que terminó o que debe esperar a que el usuario escriba o haga algo, el planificador "saca" de ejecución al proceso, guarda todos los datos que están en los registros y que corresponden al editor, los almacena en un lugar seguro y va por otro proceso, lo instala en los lugares necesarios e inicia su ejecución, otra vez por un tiempo determinado. ¿Cuánto tiempo está un proceso en ejecución? Depende del sistema operativo particular, el proceso y muchos otros factores, pero usualmente se mantiene entre unas decenas de milisegundos y unos cuantos segundos, tiempo suficiente para ejecutar desde varias centenas de operaciones hasta varios millones del programa en ejecución. Esto se conoce como multitarea y prácticamente todos los sistemas operativos actuales lo utilizan.