El sistema Oberon [3] es un sistema operativo modular, monousuario, monoproceso y multitarea escrito en el lenguaje de programación Oberon . [4] Fue desarrollado originalmente a finales de los años 1980 en la ETH de Zúrich . El sistema Oberon tiene una interfaz de usuario de texto visual (TUI) no convencional en lugar de una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI) convencionales. Esta TUI fue muy innovadora en su época e influyó en el diseño del editor de texto Acme para el sistema operativo Plan 9 de Bell Labs .
El sistema también evolucionó hacia el sistema multiproceso A2 (anteriormente Active Object System (AOS), [5] luego Bluebottle ), con capacidad para multiprocesamiento simétrico (SMP) y una interfaz de usuario con zoom (ZUI).
El sistema operativo Oberon fue desarrollado originalmente como parte del proyecto de estación de trabajo Ceres basado en NS32032 . Fue escrito casi en su totalidad (y en la versión de 2013 es totalmente válido) en el lenguaje de programación Oberon . [6] El sistema básico fue diseñado e implementado por Niklaus Wirth y Jürg Gutknecht y su diseño e implementación está completamente documentado en su libro "Project Oberon". [7] La interfaz de usuario y la referencia para programadores se encuentran en el libro de Martin Reiser "The Oberon System". [8] El sistema Oberon fue posteriormente ampliado y portado a otras plataformas de hardware [9] [10] [11] [12] [13] por un equipo de la ETH de Zúrich y hubo reconocimiento en revistas populares. [14] [15] [16] [17] [18] [19] Wirth y Gutknecht (aunque son profesores de informática activos ) se refieren a sí mismos como 'programadores a tiempo parcial' en el libro Project Oberon . [7] A finales de 2013, unos meses antes de su 80 cumpleaños, Wirth publicó una segunda edición del Proyecto Oberon. [20] En ella se detalla la implementación del Sistema Oberon utilizando una CPU de conjunto de instrucciones reducidas (RISC) de su propio diseño realizada en una placa de matriz de puertas programables en campo (FPGA) de Xilinx. Fue presentada en el simposio [21] organizado para su 80 cumpleaños en la ETH de Zúrich . Mientras tanto, se implementaron varios emuladores para esta versión. [22] [23] [24] [25] [26]
Según Josef Templ, ex miembro del grupo de desarrolladores del Instituto Federal Suizo de Tecnología de Zúrich y más tarde miembro del Institut für Systemsoftware de la Universidad Johannes Kepler de Linz , donde se mantenía una versión bifurcada (V4), la genealogía de las diferentes versiones del Sistema Oberon es la siguiente:
Oberon tiene una interfaz de usuario de texto (TUI), que es muy diferente de una interfaz de usuario de terminal . Combina la comodidad de apuntar y hacer clic de una interfaz gráfica de usuario (GUI) con la fuerza lingüística de una interfaz de línea de comandos (CLI) y está estrechamente vinculada a las convenciones de nomenclatura del lenguaje Oberon. El texto que aparece casi en cualquier parte de una pantalla se puede editar y utilizar como entrada de comandos . Los comandos se activan con un clic central del mouse [29] en un fragmento de texto del formulario Module.Command
(seguido opcionalmente por parámetros, que terminan en ~
). Un comando se define mediante cualquier procedimiento que se exporta y tiene una lista de argumentos vacía. Los parámetros del comando se deben definir antes de ejecutar el clic central, y el procedimiento debe escanearlos y recuperarlos explícitamente. No se producen comprobaciones ni preguntas durante la ejecución del comando. Esto a veces se llama una interfaz de usuario (UI) no modal . No se necesita nada parecido a un símbolo del sistema .
Aunque es muy diferente de una línea de comandos, la TUI es muy eficiente y potente. [30] Una pronunciada subida en la curva de aprendizaje inicial hace que sea un poco difícil al principio. No se hacen preguntas: se trata de una decisión de diseño deliberada, a la que hay que acostumbrarse. La mayoría de los editores preguntan al usuario al cerrar un texto modificado: este no es el caso en el sistema Oberon. El uso de la TUI y la interfaz de programación está completamente documentado en el libro de Martin Reiser "The Oberon System". [8] Se puede encontrar una breve introducción a la interfaz de usuario en la página de inicio de Niklaus Wirth . [31] Las versiones posteriores de System Oberon, Oberon V4 (V4, a veces también llamado Linz-Oberon) y Oberon System 3 (o S3, a veces también llamado ETH-Oberon o Spirit of Oberon), mejoraron la interfaz básica con implementaciones diferentes pero incompatibles para botones, menús desplegables y otros elementos activos. V4 utilizó para ese propósito un carácter de control dedicado incrustado en texto normal en contraste con System 3, que extendió el núcleo introduciendo objetos persistentes. Ambas extensiones incluyen un amplio conjunto de elementos de interfaz de usuario.
Dominar la interfaz de usuario de Oberon, tanto la puramente textual como la denominada Gadgets System (bajo S3), no es una tarea sencilla. Por ello, después de instalar con éxito Oberon System 3, se recomienda estudiar el Oberon System 3 Tutorial de André Fischers. Se publicó una versión ampliada de este tutorial como libro [32] , que actualmente está agotado. El libro completo está disponible en formato electrónico bajo una licencia de un solo usuario en cada versión instalada de System 3 (Windows, Linux o Native, es decir, también con el kit de herramientas Gadgets de OLR [33] ). Puede encontrar más información sobre cómo obtener su propia copia de Oberon Companion en la sección Primeros pasos del Wikilibro de Oberon.
Interfaces de usuario similares aún no han aparecido en sistemas operativos más comunes. El sistema Acme de Rob Pike para Plan 9 de Bell Labs se inspiró fuertemente en la interfaz de usuario de Oberon. Es difícil decidir si la interfaz de hoja de cálculo del Taller del programador de Macintosh influyó en la interfaz de usuario de Oberon o viceversa: el sistema Oberon se basó en el diseño de computadora anterior de Wirth, Lilith , y tanto el Apple Macintosh (y su precursor Lisa ) como el sistema Oberon (en Ceres y su precursor Lilith) tienen las mismas raíces: todos se inspiraron en el Alto desarrollado en Xerox PARC .
La primera versión utilizable fue la V1, un tiempo antes de que se publicara la trilogía Oberon [6] [7] [8] . Un cambio importante en el modelo de texto junto con el editor llamado Write [28] dieron como resultado la V2. Como se prefiguró en la tabla de la sección Historia anterior, hubo una bifurcación importante a principios de los años 90: V4 vs. System 3: el grupo en torno a Jürg Gutknecht introdujo objetos persistentes y bibliotecas de objetos, ampliando así el núcleo. El grupo en torno a Hanspeter Mössenböck realizó características similares al introducir elementos activos asignados a un carácter especial, ampliando así las fuentes sin cambiar el núcleo. System 3 a veces también se llamó Spirit of Oberon y luego se renombró ETH Oberon, mientras que V4 a veces también se llamó Linz Oberon.
A partir de 2017, el sistema operativo Oberon está disponible para varias plataformas informáticas de hardware , generalmente en versiones gratuitas y de varias fuentes, lo que resulta bastante confuso. El sistema operativo Oberon suele ser extremadamente compacto. Incluso con un compilador Oberon , utilidades variadas que incluyen un navegador web , redes TCP/IP y una GUI, el paquete completo se puede comprimir en un disquete de 3,5" . Hay versiones que emulan el sistema operativo Oberon en otro sistema operativo y versiones que se ejecutan en hardware desnudo. Estas últimas se denominan Native Oberon. Hay versiones nativas para las plataformas Ceres , Intel IA-32 y ARM . En 2013, Niklaus Wirth adaptó el sistema básico como se describe en "Project Oberon" [7] a un diseño de FPGA actual . Según el prefacio de la edición de 2013, todo el sistema se compila en menos de 10 segundos en una placa Spartan-3. Esta versión a veces también se llama V5, a pesar de que es mucho más similar funcionalmente a la V1 original que se ejecuta en Ceres que cualquiera de las versiones posteriores.
Una versión del Oberon System 3, [15] que está más integrada en el sistema operativo Microsoft Windows que otras implementaciones se denominó Plugin Oberon. [34] Plugin Oberon tenía soporte para OLE , Netscape Plugins y el formato binario llamado Oberon Module Interchange (OMI) o binarios slim , que permitían el código objeto portable entre las arquitecturas Intel x86 , Motorola 68K y PowerPC . Los binarios slim fueron inventados por Michael Franz a principios de los 90. Estaban motivados y se oponían a los binarios fat inventados por Apple durante la transición de las arquitecturas 68k a PowerPC. [35] OMI proporcionaba código portable basado en una versión comprimida del árbol de sintaxis abstracta. El enfoque de un árbol de sintaxis abstracta comprimido para la representación de código portable se revive en el mundo Java para GraalVM y Truffle .
La versión denominada Oberon V4 (ver también Historia) es más parecida al sistema operativo original desarrollado por Wirth y Gutknecht. Originalmente se desarrolló en ETHZ, pero cuando HP Mössenböck se fue al Institut für Systemsoftware en la Universidad Johannes-Kepler en Linz (JKU), el desarrollo de V4 también se trasladó. Por lo tanto, V4 a veces también se llama Linz-Oberon en contraste con ETH-Oberon. La versión más reciente de V4 y extensiones están disponibles en JKU. Oberon V4 parece ser huérfano, casi no hay cambios desde 2000. Otro repositorio de V4 es Oberon V4 de Claudio Nieder, que también muestra la diferencia entre las diferentes implementaciones de V4. Desde 2013, esta página se trasladó a/está reflejada en SourceForge. V4 está más cerca de lo que ahora se llamaría un entorno de desarrollo integrado que un sistema operativo propio. Hubo muchas extensiones escritas para V4, que todavía están disponibles en el servidor ftp de SSW en JKU; Se puede encontrar cierta documentación en sus páginas web, normalmente se incluye más información en los paquetes y se proporciona en el formato de texto enriquecido especial de Oberon.
Alrededor de 2010, el departamento de informática de la ETH de Zúrich comenzó a explorar objetos activos y concurrencia para sistemas operativos, y ha lanzado una versión temprana de un nuevo lenguaje Active Oberon y un nuevo sistema operativo para él, primero llamado Active Object System (AOS) en 2002, [5] luego, debido a problemas de marca registrada, renombrado Bluebottle en 2005, luego renombrado A2 en 2008. Está disponible en la ETH de Zúrich con la mayoría de las fuentes a través de Internet . Las versiones nativas de A2 se ejecutan en hardware IA-32 y x86-64 de uno o varios procesadores , tanto en hardware físico como dentro de máquinas virtuales. Anteriormente también estaba disponible para la familia de CPU StrongARM . Las versiones que se ejecutan como programas en otros sistemas operativos están disponibles en Windows (WinAos), Unix (UnixAos), Linux (LinuxAos) y macOS (DarwinAos). Hay información más detallada sobre A2 en las páginas de Wikipedia en ruso sobre A2.
Como parte de un proyecto de investigación industrial [36], el grupo de sistemas nativos de la ETH de Zúrich ha desarrollado un sistema operativo específico para aplicaciones llamado stailaOS , que se basa en la última versión del sistema operativo Oberon. Está destinado a usos como análisis en tiempo real , aplicaciones financieras, planificación de recursos empresariales (ERP) basada en memoria principal, etc.
Native Oberon es un sistema Oberon que se ejecuta en hardware básico. [37] PC-Native Oberon es una versión que se ejecuta en hardware de PC IA-32 . Nunca ha habido un Native Oberon V4, por lo que toda la información en esta sección asume implícitamente que es System 3. Native Oberon tiene pequeños requisitos de hardware: Pentium a 133 MHz, disco duro de 100 MB, tarjeta gráfica VESA 2 con una resolución mínima de 1024x768 píxeles, tarjeta de red 3Com opcional . El sistema básico se ejecuta desde un disquete HD y se puede instalar más software a través de una red. La instalación completa incluye la GUI Gadgets. Está escrito completamente en el lenguaje Oberon. La última versión disponible fue 2.3.7. Está fechada el 5 de enero de 2003 y a veces también se la etiqueta como Update/Alpha, especialmente en el servidor ftp de ETHZ. Las versiones posteriores se incorporaron en AOS/BlueBottle/A2 .
Una versión llamada Linux Native Oberon (LNO) utiliza Linux como una capa de abstracción de hardware (HAL). Su objetivo es ser lo más compatible posible con PC-Native Oberon. Otras versiones del sistema Oberon, sin Native en el nombre, tenían interfaces parcialmente modificadas de módulos de bajo nivel. En 2015, Peter Matthias revitalizó LNO bajo el nombre Oberon Linux Revival (OLR) [33] como una distribución multiplataforma que se ejecuta sin problemas en Intel x86, ARM , MIPS y RISC-V . Funciona bien en Raspberry Pi y en la computadora CHIP de bajo costo (descontinuada) ; con algunos ajustes (ajustando la membresía del grupo o/y los permisos en algunos dispositivos) funciona bien en Tiny Core Linux . OLR interactúa con el kernel de Linux mediante llamadas directas al sistema . A junio de 2017 [actualizar], OLR carece de una capa de red.
En 2013, Wirth y Paul Reed completaron una reimplementación del sistema Oberon original para la placa de inicio FPGA Digilent Xilinx Spartan 3. El trabajo incluye una revisión del "Proyecto Oberon", [7] identificado como Proyecto Oberon (Nueva Edición 2013). En 2015, Reed colaboró con Victor Yurkovsky para crear OberonStation, una computadora basada en Xilinx Spartan 3 diseñada específicamente para ejecutar Oberon. Desde entonces, el sistema ha sido portado a una placa de desarrollo FPGA Pepino Xilinx Spartan 6 por Saanlima Electronics y a una placa de entrenamiento FPGA Digilent Nexys A7-100 basada en Xilinx Artix 7 por CFB Software. Peter de Wachter implementó un emulador para él, que también fue portado a Java y JavaScript por Michael Schierl, que se ejecuta en navegadores modernos, y portado a Free Pascal / Ultibo por Markus Greim y a Go. [22] [23] [24] [25] Andreas Pirklbauer mantiene una versión experimental y extensiones del Proyecto Oberon 2013 en GitHub .