OS-9 es una familia de sistemas operativos multitarea , multiusuario , basados en procesos y en tiempo real , desarrollados en la década de 1980, originalmente por Microware Systems Corporation para el microprocesador Motorola 6809. Fue adquirido por Radisys Corp en 2001, y fue comprado nuevamente en 2013 por su actual propietario Microware LP .
La familia OS-9 fue popular para la informática de propósito general y sigue utilizándose en sistemas comerciales integrados y entre aficionados. Hoy en día, OS-9 es un nombre de producto utilizado tanto por un sistema operativo de lenguaje de máquina de la serie Motorola 68000 como por una versión portátil ( PowerPC , x86 , ARM , MIPS , SH4 , etc.) escrita en C , conocida originalmente como OS-9000 .
La primera versión ("OS-9 Level One"), que data de 1979-1980, fue escrita en lenguaje ensamblador para la CPU Motorola 6809 , y todos sus procesos se ejecutaban dentro del espacio de direcciones de 64 KB de la CPU sin una unidad de administración de memoria. Fue desarrollado como un sistema operativo de apoyo para el proyecto BASIC09 , contratado por Motorola como parte del desarrollo del 6809. Una versión posterior del 6809 ("Level Two") aprovecha el hardware de mapeo de memoria, admitía hasta 2 MB de memoria (aproximadamente en 1980) en la mayoría de las implementaciones e incluía una GUI en algunas plataformas.
En 1983, OS-9/6809 fue portado al lenguaje ensamblador Motorola 68000 y ampliado (llamado OS-9/68K); y una versión aún posterior (1989) fue reescrita principalmente en C para una mayor portabilidad. La versión portátil se llamó inicialmente OS-9000 y fue lanzada para sistemas PC 80386 alrededor de 1989, luego portada a PowerPC alrededor de 1995. Estas versiones posteriores carecen de las funciones de mapeo de memoria de OS-9/6809 Nivel Dos simplemente porque no las necesitan. Usaban un único espacio de direcciones planas que todos los procesos comparten; el hardware de mapeo de memoria, si está presente, se usa principalmente para garantizar que los procesos accedan solo a la memoria a la que tienen derecho de acceso. Las MPU 680x0 y 80386 (y posteriores) admiten directamente mucho más de 1 MB de memoria en cualquier caso.
Como consecuencia de las decisiones de diseño generalizadas que se tomaron al principio para aprovechar las capacidades de código objeto reentrante de fácil uso del procesador 6809, se requiere que los programas destinados a OS-9 sean reentrantes; los compiladores producen código reentrante automáticamente y los ensambladores para OS-9 ofrecen un soporte considerable para ello. OS-9 también utiliza código y datos independientes de la posición porque el 6809 también lo admite directamente; los compiladores y ensambladores admiten la independencia de la posición. El núcleo de OS-9 carga programas (incluido el código compartido) y asigna datos, siempre que haya suficiente espacio libre disponible en el mapa de memoria. Esto permite que todo el sistema operativo y todas las aplicaciones se coloquen en la memoria ROM o Flash, y facilita los requisitos de administración de memoria cuando los programas se cargan en la RAM y se ejecutan. Los programas, controladores de dispositivos y administradores de E/S bajo OS-9 son todos "módulos" y se pueden cargar y descargar dinámicamente (sujeto a recuentos de enlaces) según sea necesario.
OS-9/6809 se ejecuta en sistemas Motorola EXORbus que utilizan los sistemas de bus Motorola 6809 , SS-50 Bus y SS-50C de empresas como SWTPC , Tano , Gimix , Midwest Scientific y Smoke Signal Broadcasting , sistemas STD-bus 6809 de varios proveedores, computadoras personales como Fujitsu FM-11 , FM-8 , FM-7 y FM-77, Hitachi MB-S1 y muchas otras.
System Industries , un proveedor externo de equipos compatibles con DEC, utilizó un procesador 68B09E que ejecutaba OS9 en sus controladores de respaldo de cinta QIC ( cartucho de un cuarto de pulgada ) en instalaciones VAX .
El hardware más conocido (debido a su bajo precio y amplia distribución) fue el TRS-80 Color Computer (CoCo) y la serie similar Dragon . Incluso en el CoCo, una plataforma de hardware bastante minimalista, era posible bajo OS-9/6809 Nivel Uno tener más de un usuario interactivo ejecutándose simultáneamente (por ejemplo, uno en el teclado de la consola, otro en segundo plano y quizás un tercero de manera interactiva a través de una conexión en serie), así como varios otros procesos no interactivos. [ cita requerida ] Un sistema, el Positron 9000, se posicionó como un sistema multiusuario para uso educativo, que ofrecía los entornos BASIC y Pascal de Microware, equipado con 64 KB a 512 KB de RAM y con cuatro a doce puertos serie. Sin embargo, se informó que la capacidad de respuesta se vio afectada por las operaciones multiusuario en la configuración mínima del sistema. [1] Cumana produjo una segunda implementación de procesador de OS-9 para BBC Micro . Incluía RAM incorporada, interfaz de disco duro SCSI y un procesador MC68008 . [2]
OS-9 también fue portado al Commodore SP-9000 o SuperPET, que tenía un 6809 además del 6502 del modelo 8032 base, así como 64 KB más. El Toronto PET Users Group patrocinó un proyecto HW/SW que incluía una placa secundaria con una MMU, así como los discos de distribución OS-9. Con dos procesadores, 96 KB, una pantalla de 25x80 y puertos serie, paralelo e IEEE-488 y muchos periféricos, este era uno de los sistemas OS-9 más capaces disponibles.
Las capacidades multiusuario y multitarea de OS-9 lo hacen utilizable como un sistema informático interactivo de propósito general. Se han escrito muchas aplicaciones interactivas de terceros para él, como la hoja de cálculo Dynacalc, el formateador de texto VED y los procesadores de texto WYSIWYG Stylograph y Screditor-3 . El formateador de emulación nroff de TSC también fue portado a OS-9 por MicroWay.
A mediados de los años 80, se seleccionó OS-9 para el sistema operativo CD-i . Casi al mismo tiempo, Microsoft se puso en contacto con Microware para adquirir la empresa, principalmente porque se sentía atraída por CD-RTOS, el sistema operativo CD-i. La negociación fracasó y no se llegó a ningún acuerdo; Microware decidió seguir siendo independiente. [3]
A finales de los años 80, Microsoft lanzó OS-9000, una versión más portátil del sistema operativo. La gran mayoría del núcleo del sistema operativo se reescribió en C, dejando un puñado de partes dependientes del hardware en lenguaje ensamblador. Se añadieron unas cuantas "características más avanzadas", como un espacio de nombres de módulos del núcleo con forma de árbol. OS-9000 se adaptó inicialmente a las CPU de la familia Motorola 680x0 , Intel 80386 y PowerPC . El OS-9000/680x0 fue un fracaso de marketing y se retiró muy rápidamente, probablemente porque pocos clientes querían probar el sistema operativo más pesado y lento sobre el historial de estabilidad probado del OS-9/680x0 existente. El hecho de que los proveedores de sistemas informáticos de la familia Motorola 680x0 y de la placa VME estuvieran llegando al final de su vida útil podría haber afectado a la impopularidad del OS-9000/680x0. Más tarde, Microware comenzó a llamar a todos sus sistemas operativos (incluido el que originalmente se había llamado OS-9000) simplemente OS-9, y empezó a trasladar su interés comercial hacia los mercados de dispositivos portátiles de consumo, como teléfonos celulares, navegación para automóviles y multimedia.
A finales de los años 1980 y principios de los años 1990, los generadores de caracteres que se utilizaban en los sistemas de transmisión utilizaban ampliamente OS-9 y OS-9000. La ahora extinta Pesa Electronica utilizaba OS-9 en sus CG, como CG 4722 y CG4733.
En 1999, diecinueve años después del primer lanzamiento de OS-9, Apple Computer lanzó Mac OS 9. Ese mismo año, Microware demandó a Apple por violación de marca registrada, [4] aunque un juez dictaminó que habría pocas posibilidades de confusión entre ambos. Algunos usuarios de Macintosh que no conocen el menos conocido OS-9 de Microware han publicado mensajes en el grupo de noticias comp.os.os9 sin saber qué es OS-9.
En 2001, RadiSys compró Microware para adquirir los recursos del procesador de red Intel IXP-1200 . Esta adquisición le proporcionó capital a Microware y le permitió continuar con el desarrollo y el soporte de OS-9.
El 21 de febrero de 2013, Microware LP (una sociedad formada por Freestation de Japón, Microsys Electronics de Alemania y RTSI LLC de EE. UU.) anunció que firmó un acuerdo de compra de activos para comprar los derechos de los nombres Microware, OS-9 y todos los activos de RadiSys .
OS-9 (especialmente la versión 68k y posteriores) se distingue claramente de la generación anterior de sistemas operativos integrados en muchos aspectos.
En comparación con sistemas operativos más modernos:
El núcleo en tiempo real de OS-9 permite que varias aplicaciones independientes se ejecuten simultáneamente mediante la conmutación de tareas y las facilidades de comunicación entre procesos. Todos los programas de OS-9 se ejecutan como procesos que contienen al menos un proceso ligero (subproceso), pero pueden contener una cantidad ilimitada de subprocesos. Dentro de un proceso, estos procesos ligeros comparten memoria, rutas de E/S y otros recursos de acuerdo con la especificación de subprocesos POSIX y la API. OS-9 programa los subprocesos utilizando un algoritmo de programación preemptiva de prioridad fija con programación por turnos dentro de cada prioridad. Se admite la fragmentación de tiempo. Los niveles de prioridad se pueden dividir en un rango que admite el envejecimiento y un rango de mayor prioridad que utiliza una programación de prioridad estricta. Cada proceso puede acceder a cualquier recurso del sistema emitiendo la solicitud de servicio OS-9 adecuada. En cada punto de programación, OS-9 compara la prioridad del subproceso que encabeza la cola activa con la prioridad del subproceso actual. Cambia de contexto al subproceso de la cola activa si su prioridad es mayor que la prioridad de los procesos actuales. El envejecimiento aumenta artificialmente la prioridad efectiva de los subprocesos en la cola activa a medida que pasa el tiempo. A intervalos definidos, la segmentación temporal devuelve el subproceso actual a la cola activa detrás de otros subprocesos con la misma prioridad.
La siguiente lista de comandos es compatible con el shell OS-9.
Comandos integrados de Shell
Utilidades para funciones del sistema operativo
Utilidades de gestión del sistema
Servicios generales
La noción de procesos y rutas de E/S de OS-9 es bastante similar a la de Unix en casi todos los aspectos, pero hay algunas diferencias significativas. En primer lugar, el sistema de archivos no es un árbol único, sino un bosque en el que cada árbol corresponde a un dispositivo. En segundo lugar, OS-9 no tiene una llamada al sistema fork() al estilo Unix ; en su lugar, tiene una llamada al sistema que crea un proceso que ejecuta un programa específico, realizando prácticamente la misma función que un fork-exec o un spawn . Además, los procesos de OS-9 mantienen un registro de dos "directorios actuales" en lugar de uno solo; el "directorio de ejecución actual" es donde buscará por defecto primero para cargar los programas que se ejecutarán (lo que es similar al uso de la variable de entorno PATH en UNIX). El otro es el directorio de datos actual.
Otra diferencia es que en OS-9, los directorios de los abuelos se pueden indicar repitiendo puntos tres o más veces, sin ninguna barra intermedia (una característica que también se encuentra en 4DOS / 4OS2 / 4NT / TC ). Por ejemplo, ..../file
en OS-9, es similar a ../../../file
en Unix. Pero .
y ..
, con solo uno o dos puntos, funcionan de la misma manera tanto en OS-9 como en Unix.
OS-9 ha tenido un diseño modular desde el principio, influenciado por las nociones de los diseñadores del 6809 y cómo esperaban que se distribuyera el software en el futuro (ver la serie de tres partes de artículos en Byte de enero-marzo de 1979 por Terry Ritter, et al. de Motorola, quien diseñó la CPU).
La estructura de los módulos requiere más explicación: OS-9 mantiene un "directorio de módulos", una lista residente en memoria de todos los módulos que están en la memoria, ya sea porque se han cargado o porque se han encontrado en la ROM durante un escaneo inicial en el momento del arranque. Cuando uno escribe un comando en el shell de OS-9, primero buscará en el directorio de módulos actual un módulo con el nombre especificado y lo usará (y aumentará su número de enlaces) si lo encuentra, o buscará en el disco un archivo con el nombre apropiado si no lo encuentra. En OS-9/6809 y OS-9/68000, el directorio de módulos es plano, pero OS-9000 hizo que el directorio de módulos tenga una estructura de árbol. El shell de OS-9000 busca en el directorio de módulos alternativo una variable de entorno MODPATH, análoga a la variable PATH en todas las versiones, que indica la secuencia de directorios de módulos en los que buscar módulos precargados.
Los módulos no solo se utilizan para almacenar programas, sino que también se pueden crear sobre la marcha para almacenar datos, y son la forma en que OS-9 admite la memoria compartida. OS-9/no-68000 admite subprocesos POSIX . Un solo proceso puede iniciar cualquier cantidad de subprocesos.
OS-9 ha dejado de ser popular, aunque Microware LP aún lo admite y funciona en arquitecturas modernas como ARM y x86. El compilador proporcionado, Ultra C/C++, admite C89 , pero no admite ni C99 ni C++98 . Ultra C++ ofrece compatibilidad limitada con plantillas C++. También es compatible con bibliotecas SSL/TLS populares como wolfSSL .