Articulo de referencia

Multitarea informática

Los sistemas operativos de escritorio modernos son capaces de manejar una gran cantidad de procesos diferentes al mismo tiempo. Esta captura de pantalla muestra Fedora Linux eje...

Los sistemas operativos de escritorio modernos son capaces de manejar una gran cantidad de procesos diferentes al mismo tiempo. Esta captura de pantalla muestra Fedora Linux ejecutándose simultáneamente con el entorno de escritorio KDE Plasma 6 , Firefox , KCalc , el calendario integrado, GNU nano , GIMP y el reproductor multimedia VLC .
Multitarea de Microsoft Windows 1.01, lanzado en 1985, aquí se muestra ejecutando los programas MS-DOS Executive y Calculator.

En informática , la multitarea es la ejecución concurrente de múltiples tareas (también conocidas como procesos ) durante un período de tiempo determinado. [ 1 ] Las nuevas tareas pueden interrumpir las ya iniciadas antes de que finalicen, en lugar de esperar a que terminen. Como resultado, un ordenador ejecuta segmentos de múltiples tareas de forma intercalada, mientras que las tareas comparten recursos de procesamiento comunes, como unidades centrales de procesamiento (CPU) y memoria principal . La multitarea interrumpe automáticamente el programa en ejecución, guardando su estado (resultados parciales, contenido de la memoria y contenido de los registros del ordenador) y cargando el estado guardado de otro programa y transfiriéndole el control. Este " cambio de contexto " puede iniciarse a intervalos de tiempo fijos ( multitarea preventiva ), o el programa en ejecución puede estar programado para indicar al software supervisor cuándo puede ser interrumpido ( multitarea cooperativa ).

La multitarea no requiere la ejecución paralela de múltiples tareas exactamente al mismo tiempo; en cambio, permite que más de una tarea avance durante un período de tiempo determinado. [ 2 ] Incluso en computadoras multiprocesador , la multitarea permite ejecutar muchas más tareas que CPUs.

La multitarea es una característica común de los sistemas operativos de computadoras desde al menos la década de 1960. Permite un uso más eficiente del hardware; cuando un programa espera que se complete algún evento externo, como una entrada del usuario o una transferencia de entrada/salida con un periférico, el procesador central aún puede utilizarse con otro programa. En un sistema de tiempo compartido , varios operadores humanos utilizan el mismo procesador como si estuviera dedicado exclusivamente a ellos, mientras que, en segundo plano, la computadora atiende a muchos usuarios mediante la multitarea de sus programas individuales. En los sistemas de multiprogramación , una tarea se ejecuta hasta que debe esperar un evento externo o hasta que el planificador del sistema operativo la transfiere forzosamente fuera de la CPU. Los sistemas en tiempo real , como los diseñados para controlar robots industriales, requieren un procesamiento oportuno; un solo procesador puede compartirse entre cálculos de movimiento de la máquina, comunicaciones e interfaz de usuario. [ 3 ]

Los sistemas operativos multitarea suelen incluir mecanismos para modificar la prioridad de las tareas individuales, de modo que las tareas importantes reciban más tiempo de procesador que las consideradas menos relevantes. Dependiendo del sistema operativo, una tarea puede ser tan grande como un programa de aplicación completo o estar compuesta por subprocesos más pequeños que ejecutan partes del programa general.

Un procesador diseñado para su uso con sistemas operativos multitarea puede incluir hardware especial para admitir de forma segura múltiples tareas, como protección de memoria y anillos de protección que garantizan que el software de supervisión no pueda ser dañado o manipulado por errores de programación en modo de usuario.

El término "multitarea" se ha convertido en un término internacional, ya que la misma palabra se utiliza en muchos otros idiomas como el alemán, el italiano, el holandés, el rumano, el checo, el danés y el noruego.

Multiprogramación

En los inicios de la informática, el tiempo de CPU era costoso y los periféricos muy lentos. Cuando el ordenador ejecutaba un programa que necesitaba acceso a un periférico, la unidad central de procesamiento (CPU) tenía que interrumpir la ejecución de las instrucciones del programa mientras el periférico procesaba los datos. Esto solía ser muy ineficiente. La multiprogramación es una técnica informática que permite cargar y ejecutar varios programas simultáneamente en la memoria del ordenador, lo que permite a la CPU alternar entre ellos rápidamente. Esto optimiza la utilización de la CPU al mantenerla ocupada en la ejecución de tareas, lo cual resulta especialmente útil cuando un programa está esperando a que finalicen las operaciones de entrada/salida.

La Bull Gamma 60 , diseñada inicialmente en 1957 y lanzada por primera vez en 1960, fue la primera computadora diseñada pensando en la multiprogramación. Su arquitectura presentaba una memoria central y un distribuidor de programas que alimentaba hasta veinticinco unidades de procesamiento autónomas con código y datos, y permitía el funcionamiento concurrente de múltiples clústeres. [ 4 ]

Otro ordenador de este tipo fue el LEO III , lanzado por primera vez en 1961. Durante el procesamiento por lotes , se cargaban varios programas diferentes en la memoria del ordenador y el primero comenzaba a ejecutarse. Cuando el primer programa llegaba a una instrucción que esperaba un periférico, el contexto de este programa se almacenaba y se le daba la oportunidad de ejecutarse al segundo programa en memoria. El proceso continuaba hasta que todos los programas terminaban de ejecutarse. [ 5 ]

La multiprogramación no garantiza que un programa se ejecute de manera oportuna. De hecho, el primer programa podría ejecutarse durante horas sin necesidad de acceso a un periférico. Como no había usuarios esperando en una terminal interactiva, esto no representaba un problema: los usuarios entregaban un juego de tarjetas perforadas a un operador y regresaban unas horas después para obtener los resultados impresos. La multiprogramación redujo considerablemente los tiempos de espera cuando se procesaban varios lotes. [ 6 ] [ 7 ]

multitarea cooperativa

Los primeros sistemas multitarea utilizaban aplicaciones que se cedían tiempo mutuamente de forma voluntaria. Este enfoque, que posteriormente fue adoptado por muchos sistemas operativos , se conoce hoy como multitarea cooperativa. Aunque actualmente se utiliza raramente en sistemas de mayor tamaño, salvo en aplicaciones específicas como CICS o el subsistema JES2 , la multitarea cooperativa fue en su momento el único esquema de planificación empleado por Microsoft Windows y el Mac OS clásico para permitir la ejecución simultánea de múltiples aplicaciones. La multitarea cooperativa todavía se utiliza en sistemas RISC OS . [ 8 ]

Dado que un sistema multitarea cooperativo depende de que cada proceso ceda tiempo regularmente a otros procesos del sistema, un programa mal diseñado puede consumir todo el tiempo de CPU, ya sea realizando cálculos extensos o mediante esperas activas ; en ambos casos, el sistema se bloquearía . En un entorno de servidor, esto representa un riesgo que hace que todo el entorno sea inaceptablemente frágil.

multitarea preventiva

Kubuntu (KDE Plasma 5) cuatro escritorios virtuales que ejecutan varios programas al mismo tiempo.

La multitarea preventiva permite que el sistema informático garantice de forma más fiable a cada proceso una "porción" regular de tiempo de funcionamiento. También permite que el sistema gestione rápidamente eventos externos importantes, como la entrada de datos, que podrían requerir la atención inmediata de uno u otro proceso. Los sistemas operativos se desarrollaron para aprovechar estas capacidades de hardware y ejecutar múltiples procesos de forma preventiva. La multitarea preventiva se implementó en el PDP-6 Monitor y Multics en 1964, en OS/360 MFT en 1967 y en Unix en 1969, y estaba disponible en algunos sistemas operativos para ordenadores tan pequeños como el PDP-8 de DEC; es una característica fundamental de todos los sistemas operativos tipo Unix , como Linux , Solaris y BSD con sus derivados , [ 9 ] así como las versiones modernas de Windows.

Posiblemente el primer sistema operativo multitarea preventiva disponible para usuarios domésticos fue OS-9 de Microware , disponible para computadoras basadas en Motorola 6809 como la TRS-80 Color Computer 2 , [ 10 ] con el sistema operativo suministrado por Tandy como una actualización para sistemas equipados con disco. [ 11 ] Sinclair QDOS en la Sinclair QL le siguió en 1984, pero no fue un gran éxito. Amiga de Commodore se lanzó al año siguiente, ofreciendo una combinación de capacidades multitarea y multimedia. Microsoft hizo de la multitarea preventiva una característica central de su sistema operativo insignia a principios de la década de 1990 cuando desarrolló Windows NT 3.1 y luego Windows 95. En 1988 Apple ofreció A/UX como una alternativa basada en UNIX System V al Mac OS clásico . En 2001 Apple cambió a Mac OS X influenciado por NeXTSTEP .

Un modelo similar se utiliza en Windows 9x y la familia Windows NT , donde las aplicaciones nativas de 32 bits se ejecutan en multitarea de forma preventiva. [ 12 ] Las ediciones de 64 bits de Windows, tanto para las arquitecturas x86-64 como Itanium , ya no admiten aplicaciones heredadas de 16 bits y, por lo tanto, proporcionan multitarea preventiva para todas las aplicaciones compatibles.

Tiempo real

Otra razón para la multitarea radicaba en el diseño de sistemas informáticos en tiempo real , donde un único procesador debe controlar diversas actividades externas, posiblemente no relacionadas entre sí. En estos sistemas, un sistema de interrupciones jerárquico se combina con la priorización de procesos para garantizar que las actividades clave reciban una mayor proporción del tiempo de procesamiento disponible . [ 13 ]

Multihilo

Los hilos surgieron de la idea de que la forma más eficiente para que los procesos cooperativos intercambien datos sería compartir todo su espacio de memoria. Por lo tanto, los hilos son, en efecto, procesos que se ejecutan en el mismo contexto de memoria y comparten otros recursos con sus procesos padres , como archivos abiertos. Los hilos se describen como procesos ligeros porque el cambio entre hilos no implica modificar el contexto de memoria. [ 14 ] [ 15 ] [ 16 ]

Si bien los hilos se programan de forma preventiva, algunos sistemas operativos ofrecen una variante, denominada fibras , que se programan de forma cooperativa. En los sistemas operativos que no ofrecen fibras, una aplicación puede implementar sus propias fibras mediante llamadas repetidas a funciones de trabajo. Las fibras son incluso más ligeras que los hilos y algo más fáciles de programar, aunque tienden a perder algunas o todas las ventajas de los hilos en máquinas con múltiples procesadores . [ 17 ]

Algunos sistemas admiten directamente el procesamiento multihilo a nivel de hardware .

Protección de memoria

Es fundamental para cualquier sistema multitarea compartir de forma segura y eficaz el acceso a los recursos del sistema. El acceso a la memoria debe gestionarse rigurosamente para garantizar que ningún proceso pueda leer o escribir, de forma inadvertida o deliberada, en ubicaciones de memoria fuera de su espacio de direcciones. Esto se realiza para garantizar la estabilidad general del sistema, la integridad de los datos y la seguridad de los mismos.

En general, la gestión del acceso a la memoria es responsabilidad del núcleo del sistema operativo, en combinación con mecanismos de hardware que proporcionan funcionalidades de apoyo, como la unidad de gestión de memoria (MMU). Si un proceso intenta acceder a una ubicación de memoria fuera de su espacio de memoria asignado, la MMU rechaza la solicitud e indica al núcleo que tome las medidas oportunas; esto suele resultar en la finalización forzosa del proceso infractor. Dependiendo del diseño del software y del núcleo, así como del error específico, el usuario puede recibir un mensaje de error de violación de acceso, como "fallo de segmentación".

En un sistema multitarea bien diseñado e implementado correctamente, un proceso nunca puede acceder directamente a la memoria de otro proceso. Una excepción a esta regla se da en el caso de la memoria compartida; por ejemplo, en el mecanismo de comunicación entre procesos de System V, el núcleo asigna memoria para que sea compartida por varios procesos. Estas características se utilizan con frecuencia en software de gestión de bases de datos como PostgreSQL.

Los mecanismos inadecuados de protección de memoria, ya sea por fallos en su diseño o por implementaciones deficientes, permiten la existencia de vulnerabilidades de seguridad que pueden ser potencialmente explotadas por software malicioso.

Intercambio de memoria

El uso de un archivo o partición de intercambio permite al sistema operativo proporcionar más memoria de la físicamente disponible, manteniendo porciones de la memoria principal en el almacenamiento secundario . Si bien la multitarea y el intercambio de memoria son dos técnicas completamente independientes, se utilizan con frecuencia de forma conjunta, ya que el intercambio de memoria permite cargar más tareas simultáneamente. Normalmente, un sistema multitarea permite que otro proceso se ejecute cuando el proceso en ejecución llega a un punto en el que debe esperar a que se recargue una porción de memoria desde el almacenamiento secundario. [ 18 ]

Programación

Con el paso de los años, los sistemas multitarea se han perfeccionado. Los sistemas operativos modernos generalmente incluyen mecanismos detallados para priorizar procesos, mientras que el multiprocesamiento simétrico ha introducido nuevas complejidades y capacidades. [ 19 ]

Véase también

Referencias

  1. "¿Qué es la multitarea?" . Computer Hope . Consultado el 11 de febrero de 2026 .
  2. "Concurrencia vs. Paralelismo, Programación Concurrente vs. Programación Paralela" . Oracle. Archivado del original el 7 de abril de 2016. Consultado el 23 de marzo de 2016 .
  3. Anthony Ralston, Edwin D. Reilly (ed.), Enciclopedia de Ciencias de la Computación, Tercera Edición , Van Nostrand Reinhold, 1993, ISBN 0-442-27679-6, artículos "Multitarea" y "Multiprogramación"
  4. Bataille, M. (1972-04-01). "Algo viejo: la Gamma 60, la computadora que se adelantó a su tiempo". ACM SIGARCH Computer Architecture News . 1 (2): 10– 15. doi : 10.1145/641276.641278 . ISSN 0163-5964 . 
  5. PROGRAMA MAESTRO Y SISTEMA DE PRUEBAS DE PROGRAMAS PARTE 1 ESPECIFICACIÓN DEL PROGRAMA MAESTRO . Febrero de 1965. Sección 6 "RUTINAS DE CONTROL DE PRIORIDAD".
  6. Lithmee (2019-05-20). "¿Cuál es la diferencia entre el procesamiento por lotes y la multiprogramación?" . Pediaa.Com . Consultado el 14 de abril de 2020 .
  7. "Evolución del sistema operativo" . 29 de septiembre de 2017. Consultado el 14 de abril de 2020 .
  8. "Multitarea preventiva" . riscos.info . 3 de noviembre de 2009. Consultado el 27 de julio de 2014 .
  9. "UNIX, Parte Uno" . La Iniciativa de Investigación Digital . ibiblio.org. 30 de enero de 2002. Consultado el 9 de enero de 2014 .
  10. Downard, Dan (septiembre de 1983). "Dynamic Uno" . The Rainbow . págs. 236–240 . Recuperado el 9 de mayo de 2024 . 
  11. Catálogo TRS-80 de 1984. Tandy Corporation. 1984. págs. 53–54 . Consultado el 14 de mayo de 2024 . 
  12. Joseph Moran (junio de 2006). "Windows 2000 y aplicaciones de 16 bits" . Smart Computing . Vol. 16, n.º 6, págs. 32-33 . Archivado del original el 25 de enero de 2009.   
  13. Liu, CL; Layland, James W. (1973-01-01). "Algoritmos de planificación para multiprogramación en un entorno de tiempo real estricto" . Journal of the ACM . 20 (1): 46– 61. doi : 10.1145/321738.321743 . ISSN 0004-5411 . S2CID 59896693 .  
  14. Eduardo Ciliendo; Takechika Kunimasa (25 de abril de 2008). "Directrices de rendimiento y optimización de Linux" (PDF) . redbooks.ibm.com . IBM . pág. 4. Archivado del original (PDF) el 26 de febrero de 2015. Consultado el 1 de marzo de 2015 . 
  15. "Definición de cambio de contexto" . linfo.org . 28 de mayo de 2006. Archivado del original el 18 de febrero de 2010. Consultado el 26 de febrero de 2015 .
  16. "¿Qué son los hilos (de usuario/núcleo)?" . tldp.org . 8 de septiembre de 1997 . Consultado el 26 de febrero de 2015 .
  17. Multitarea: diferentes métodos. Consultado el 19 de febrero de 2019.
  18. "¿Qué es un archivo de intercambio?" . kb.iu.edu . Consultado el 26 de marzo de 2018 .
  19. "Arquitectura de sistemas operativos" . cis2.oc.ctc.edu . Consultado el 17 de marzo de 2018 .