En 1985 Commodore se apuntaba al futuro. Dejaba relativamente atrás la exitosa era de los 8 bits en la que triunfó con el Commodore 64 y daba el salto a los 16 bits con un ordenador muy especial: el Amiga 1000.
Aquel proyecto estuvo rodeado de ideas espectaculares, pero una en especial, la multitarea apropiativa o preventiva, convirtió al Amiga 1000 y al resto de futuros modelos del Amiga en ordenadores envidiados hasta por los gigantes de la época.
Apple y Microsoft triunfaban, pero no en todo
Apple ya había asombrado el mundo años antes con Lisa -que fracasó en ventas- y sobre todo con el Macintosh que se lanzó en 1984 y que lo cambió todo al popularizar el uso de la interfaz gráfica de usuario. El ratón, los menús y las ventanas habían llegado para quedarse.

Algunos tardaron mucho en comprender que aquello era el futuro, y de hecho Microsoft siguió anclado en un MS-DOS que fue dando tímidos pasos a la hora de integrar una interfaz de usuario con las primeras versiones de Windows.
Aún así los sistemas operativos de Microsoft se convirtieron en la norma en el mercado de los PCs que comenzaron a conquistar sobre todo al usuario empresarial pero poco a poco también al usuario doméstico.
El sistema operativo de los Macintosh -nos referiremos a él como Mac OS, aunque fue cambiando de nombre con el tiempo- siguió mostrando el camino en el ámbito visual durante años, pero curiosamente carecía de una característica que solo el Amiga logró ofrecer a un nicho de usuarios bastante amplio: la multitarea real, llamada apropiativa o preventiva (preemptive multitasking) era una opción asombrosa para la época.
Multitarea cooperativa frente a multitarea apropiativa
Apple y Microsoft triunfaban con sus propias propuestas, pero sus sistemas operativos no gozaban de multitarea total, y en lugar de eso hicieron uso de multitarea cooperativa frente a la multitarea apropiativa que el Amiga popularizó.
Las diferencias entre una y otra son importantes, porque aunque ambas permitían que varias aplicaciones pudieran ejecutarse de forma concurrente (o al menos, esa era la percepción del usuario), lo hacían de modos muy distintos:
- Multitarea cooperativa: usada tanto en Windows 3.x como en versiones anteriores, y también en Mac OS a partir de System 5 (1987), se usó este tipo de multitarea en la que el planificador de procesos no dicta qué hilo es el que se ejecuta: es cada hilo (o cada proceso, si no hay soporte de hilos) el que decide cuánto se "apropia" de la CPU, y es ese proceso el que (voluntariamente) avisa al siguiente (diciendo algo así como "ya he acabado"). Si un proceso/hilo no comparte la CPU con otros procesos/hilos se puede dar una situación conocida como inanición.
- Multitarea apropiativa: en este tipo de multitarea los procesos o hilos no tienen el control de cuánto tiempo tienen de CPU: es el planificador el que lo decide cuándo se ejecuta cada proceso, durante cuánto tiempo, y cuándo pasa a "dormir". Es cierto que el proceso o hilo también puede ceder esos recursos voluntariamente como en la multitarea cooperativa (por ejemplo, si ya ha finalizado lo que tenía que hacer). En un sistema operativo de este tipo hay dos formas de que se retome el control del procesador: si el tiempo de CPU asignado al proceso o tarea se acaba, o si una tarea con mayor prioridad está preparada para comenzar a ejecutarse.
El impacto de tener una u otra multitarea podía no ser importante según qué escenarios, pero desde luego en otros muchos condenaba y lastraba la experiencia de usuario. Un ejemplo clásico es el que ocurrir al imprimir algo de Microsoft Word en Windows 2.0: no había forma de hacer otra cosa en el ordenador nunca cedía el procesador a tareas que estuviesen en segundo plano.

De hecho incluso en Windows 3.1 se daba el hecho de que algunos programas que se colgaban acababan colgando todo el sistema por esa razón: como el proceso afectado no cedía nunca la CPU al estar colgado, el sistema general acababa colgándose también.
Las cosas no solían ser tan graves, pero a menudo los usuarios se encontraban en situaciones en las que debían esperar a que un programa terminase de hacer una cosa para poder hacer otra. Y no siempre terminaban todo lo rápido que el usuario esperaba, lo que hacía que esa multitarea cooperativa acabara siendo útil, pero también estaba muy lejos de ser perfecta.

Con Amiga OS eso no ocurría, aunque desde luego no fue el primer sistema operativo en ofrecer dicha capacidad. La multitarea preventiva ya fue implementada en la década de 1960 en sistemas operativos como MULTICS, OS/360 MFT o Unix.
Acabaría siendo pues parte de sistemas operativos derivados de Unix y por tanto muy orientados a ámbitos académicos y empresariales, pero no apareció en plataformas orientadas al usuario final hasta que llegó el Amiga.

Antes el Singlair QL de 1984 lo implantó a través del sistema operativo Sinclair QDOS, pero aquel ordenador tuvo muy poco éxito, y fue el Amiga 1000 y sobre todo sus sucesores, el Amiga 500 o el Amiga 1200, los que convirtieron a aquella plataforma en todo un ejemplo para lo que luego acabaríamos viendo primero en Windows NT 3.1, luego en Windows 95 y por fin en Mac OS X, el primer sistema operativo de Apple que apareció con dicha característica.
Aquel desarrollo de Apple llegó nada menos que en 2001, y el Amiga hacía tiempo que había dejado de ser relevante. Se había convertido en una plataforma casi desaparecida salvo por una pequeña legión de fans que siguieron manteniendo el espíritu vivo junto a algunas pequeñas empresas. Amiga OS sigue hoy vivo de forma limitada a través de diversos esfuerzos, pero su éxito comercial se apagó finalmente a principios de los años 1990.
Ver 21 comentarios
21 comentarios
orbe1
Muy bueno tu articulo, de hecho la Amiga marco un hito, procesador grafico, numerico, de audio y video. Interfaz grafica, de ahi hasta la fecha realmente la industria no ha tenido (salvo internet) un cambio significativo, a ver me explico, mas colores, mas rapido, mejor sonido, mas velocidad, resolucion, son mejoras sobre lo mismo. Pero no el cambio que te asombra, podria decirse que la reducion de tamaño hasta llevar todo eso a un movil o smartwatch. pero sigue siendo el mismo principio basico. la famosa IA esta muy lejos lo que tenemos es analisis masivo de datos a alta velocidad.
En general percibo un estancamiento, esto es una posicion muy personal, pero tengo años en esta industria y la ultima vez que abri mi boca con asombro fue la primera vez que tuve una amiga 500.
Eagle
Javi, cambia la traducción de preemtive, que es "prioritaria", no preventiva
emiliano8
Muy bueno el artículo, aunque siento que le falta algo para que alguien que no tiene idea del tema pueda entenderlo. Quizás se dan por sabido varios conceptos claves...
La principal idea de la multi tarea apropiativa/no apropiativa es la siguiente: en una computadora para usuarios "comunes" (interactiva), es decir, que se van a ejecutar simultáneamente muchos programas o procesos (basta con abrir el administrador de tareas en windows para ver que hay muchos, muchos procesos ejecutandose en simultáneo) se necesita algún método de administrar cómo se ejecutan los programas.
¿Por qué? Esto viene de la época en que no existían los procesadores con múltiples núcleos o con hiperthreading y esas cuestiones "modernas" que permiten que el sistema operativo trabaje como si tuviera muchos procesadores. Es decir, en estas computadoras viejas lo que se tenía es un solo procesador que puede ser utilizado por una sola tarea/proceso/programa al mismo tiempo. Se debe administrar qué proceso puede usar el procesar en qué momento y por cuanto tiempo (o no administrar para nada, como en el caso de modos no apropiativos).
Aquí tenemos principalmente dos ramas: multitarea apropiativo y multitarea no apropiativo.
-Multitarea NO apropiativo: el programador que escribía el programa debía indicarle al sistema operativo en qué momento "cedía" el procesador al siguiente programa. De esta forma, si este programa no lo cede nunca al procesador (por mal funcionamiento o por la razón que sea) se dice que los demás procesos mueren de "inanición" (de hambre) debido a que nunca llegan a usar el procesador por lo que es como si estuvieran colgados.
-Multitarea apropiativo: en estos casos existen un "planificador" (se encarga el SO de ésto) el cual le da a cada proceso un "quantum" de tiempo, es decir, a cada proceso le dice "te podes ejecutar sólo por 40 milisegundos (ejemplo)". Cuando un proceso comienza a ejecutarse, éste solo tiene derecho a usar el microprocesador (recordar que ésto aplicaba principalmente a sistemas mono procesadores sin núcleos virtuales y cosas raras, ahora el tema es bastante más complejo si bien sigue el mismo lineamiento) durante el tiempo que dure su queantum. Una vez agotado el cuantum, el proceso queda "congelado" y el sistema operativo le cede el uso del micro procesador a otro proceso. Hay que aclarar que esto se puede aplicar de muchas formas, estos distintos métodos de aplicar el multitareas apropiativo se llaman algoritmos de planificacion: round-robin, FIFO, prioridades,etc*10.
Quizás el comentario repite muchas de las cosas que menciona el artículo, sólo quería aclarar ciertos puntos para aquellos que en verdad les interese.
Como para terminar de entender, un ejemplo "práctico" para entender como funciona la computadora sería que por ejemplo, tenemos abierto un editor de texto y el navegador (sólo dos programas). Estos programas no se ejecutan exactamente al mismo tiempo por más que a nosotros nos parezca que si. Cada programa utiliza el procesador solo un pequeño "time slice" o "quantum", ejecuta su código hasta donde llega y se pasa al siguiente programa. Pensar lo que pasa cuando en realidad se tienen 60 programas que se ejecutan simultáneamente y el procesor sólo puede ser utilizado por uno de ellos al mismo tiempo.........
vetalcuerno
La traducción correcta de "preempt" en este contexto es "expulsar" o "desalojar". Generalmente se llama a este tipo de multitarea "de tiempo compartido" porque el sistema operativo va cediendo a las tareas intervalos de tiempo para que se ejecuten, expulsando o desalojando a la tarea previa del uso del procesador.
myfcr
Pueden probar AROS (Amiga Research Operating System) bajando una versión apropiada desde http://www.aros.org/download.php
vicentesimal
El famoso Amiga 500 estaba muy por delante de la competencia pero era un gadget para ricos.
MrKarate
Ver las fotos del Amiga OS 4.1 y de Mac OS X me hace preguntarme como es que Microsoft terminó haciendo Windows 10 tan feo visualmente...
Que sí, funcional, pero feo de cojones
Usuario desactivado
Que yo sepa, el Amiga 1000 tenía el Motorola 68000 de 32 bits, no de 16 como se dice en el artículo.
Usuario desactivado
Siento lo mismo que el usuario orbe1. Falta algun invento revolucionario en informatica, los procesadores son rapidisimos y estamos haciendo lo mismo y el software inflado desaprovecha el poder de calculo diez mil veces mayor que en esa epoca.
A la "preemptive multitasking" tambien se la tradujo al español como "multitarea por desalojo" :-)
exteban
Buen artículo, salvo por lo de "Algunos tardaron mucho en comprender que aquello era el futuro, y de hecho Microsoft siguió anclado en un MS-DOS". Windows 1.0 empezó su desarrollo en 1982, y para abril de 1983 ya tenían un prototipo. Pero con demasiada gente pidiendo cambios, y tratando de hacer un sistema que corriera en diferentes ordenadores, retraso su lanzamiento hasta 1985. Microsoft no se ancló en MS-DOS, es que había muchas aplicaciones para DOS que no necesitaban Windows, y eso hizo que sus ventas fueran menores.