Minix es un sistema operativo de tipo Unix desarrollado por Andrew S. Tanenbaum en la década de 1980 como un proyecto educativo. Aunque Minix no es tan conocido como otros sistemas operativos, ha desempeñado un papel importante en la historia de la informática y ha influido en el desarrollo de otros sistemas.
La historia de Minix comenzó en 1987 cuando Tanenbaum, profesor de ciencias de la computación en la Universidad Vrije de Ámsterdam, decidió crear un sistema operativo simple y de código abierto para enseñar los conceptos fundamentales de los sistemas operativos a sus estudiantes. Minix se basó en la arquitectura del sistema operativo Unix, que era ampliamente utilizado en aquel entonces; sin embargo debido a problemas comerciales ya no era posible estudiar su código fuente en las universidades.
El objetivo principal de Tanenbaum era proporcionar una versión reducida de Unix que los estudiantes pudieran comprender y estudiar fácilmente. Minix se diseñó para ser modular, con componentes independientes y bien definidos que podían ser analizados y estudiados por separado. Esto permitía a los estudiantes comprender cómo funcionaban los distintos aspectos de un sistema operativo.
La primera versión de Minix, llamada Minix 1.0, se lanzó en 1987 y estaba disponible para sistemas basados en la arquitectura Intel 8086. Aunque Minix era limitado en funcionalidad en comparación con otros sistemas operativos, era muy estable y ofrecía una base sólida para aprender sobre sistemas operativos.
En 1991 la historia de Minix dio un giro inesperado cuando Linus Torvalds, un estudiante finlandés, anunció el desarrollo de un nuevo sistema operativo llamado Linux. Torvalds se inspiró en Minix y decidió utilizarlo como base para su proyecto, pero a diferencia de Minix, Linux se desarrolló como un sistema operativo completo y no solo como una herramienta educativa.
Con el tiempo, Linux se convirtió en un sistema operativo ampliamente utilizado en todo el mundo, especialmente en el ámbito de los servidores y la computación de alto rendimiento. Minix también siguió evolucionando y Tanenbaum continuó trabajando en el desarrollo de su sistema y lanzó nuevas versiones con mejoras y características adicionales.
En 2005, se lanzó Minix 3, una reescritura completa del sistema operativo con un enfoque en la confiabilidad y la seguridad. Minix fue diseñado con un núcleo microkernel, lo que significa que la mayor parte del sistema operativo se ejecuta en el espacio de usuario en lugar del núcleo del sistema. Esta arquitectura proporcionaba una mayor protección contra errores y fallas, lo que hacía que Minix fuera adecuado para aplicaciones críticas.
Aunque Minix no ha alcanzado la misma popularidad que Linux u otros sistemas operativos comerciales, ha influido en el desarrollo de la computación moderna. En Wikipedia encontramos una estructura que explica las capas en las que MINIX funciona internamente (microkernel), donde vemos que cada módulo que compone el sistema operativo esta separado de otros dándole la estabilidad característica, por lo que a continuación les presento dicha estructura (véase este artículo escrito por un servidor que explica de una manera sencilla como funciona un microkernel).
Capa 1
Esta es la capa que interactúa directamente con el hardware. Es la encargada de atrapar todas las interrupciones y trampas, de planificar y ofrecer a las capas superiores un modelo de procesos independientes y secuenciales para comunicarse mediante el uso de mensajes. En resumen cuenta con dos partes bien definidas: la primera trata todo lo referente a la programación de bajo nivel para brindar la abstracción de procesos a las capas superiores. La segunda parte gestiona los aspectos más mecánicos de los mensajes, como los buffers de envío y recepción de mensajes que se alojan en la memoria física, las verificaciones de destinos y todo lo referente al manejo físico de memoria en lo que respecta a los mensajes. Esta primera capa está escrita en lenguaje ensamblador, el resto están escritas en lenguaje C.
Capa 2
Contiene todo lo concerniente a los procesos de E/S, uno por cada tipo de dispositivos (tareas). Como se ilustra en el gráfico, tenemos tareas para discos, impresoras, relojes, interfaces de red y tareas de sistema, que si bien no son dispositivos de sistema sí tienen por finalidad el servicio de copiado entre diferentes regiones de memoria para procesos que no cuentan con los privilegios para realizarlos ellos mismos. Todas las tareas de la capa 2 y el código de la capa 1 se combinan para formar un solo programa binario llamado núcleo, aunque a pesar de que son compilados juntos cuando el núcleo y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el núcleo pueda ejecutar todo tipo de instrucciones usando datos de cualquier parte del sistema, a fin de poder acceder a cualquier parte de la memoria y cualquier registro de procesador. Sin embargo, las tareas a pesar de no contar con los privilegios a nivel de núcleo sí pueden acceder a cualquier región de memoria que pertenezca a un proceso menos privilegiado con el objetivo de realizar E/S para ellos.
Capa 3
Aglutina los procesos conocidos como procesos servidores. Se ejecutan en un nivel menos privilegiado que el kernel o las tareas, y no acceden directamente a los puertos de entrada y salida. Tampoco pueden acceder a otra región de memoria que no sea la que le fue asignada. Para ello se vale de las llamadas al sistema (FORK, EXEC y BRK) las cuales son proporcionadas por el administrador de memoria (MM). El sistema de archivos (FS) realiza las llamadas al sistema para los archivos (READ, MOUNT y CHDIR). Cabe destacar que el sistema de archivos de MINIX está diseñado como “servidor de archivos” por lo que se podría mover a una máquina remota casi sin cambios. Otros servidores de esta capa son el servidor de reencarnación (RS), que permite reiniciar los drivers que se cierren por fallos u otras causas.
Capa 4
Finalmente, aquí se alojan todos los procesos de usuario tales como shells, editores, compiladores, programas, etc.
En resumen, Minix es un sistema operativo de código abierto desarrollado por Andrew S. Tanenbaum como una herramienta educativa para enseñar los conceptos de los sistemas operativos. Aunque ha sido superado por otros desarrollos y de no ser tan popular como otros sistemas operativos, sigue siendo importante para la comunidad académica y para cualquier persona interesada en aprender sobre los sistemas operativos y su funcionamiento interno.
Minix is a Unix-like operating system developed by Andrew S. Tanenbaum in the 1980s as an educational project. Although Minix is not as well known as other operating systems, it has played an important role in the history of computing and has influenced the development of other systems.
The Minix story began in 1987 when Tanenbaum, a professor of computer science at the Vrije University in Amsterdam, decided to create a simple, open source operating system to teach his students the fundamental concepts of operating systems. Minix was based on the architecture of the Unix operating system, which was widely used at the time; however, due to commercial problems, it was no longer possible to study its source code in universities.
Tanenbaum's main goal was to provide a stripped-down version of Unix that students could easily understand and study. Minix was designed to be modular, with well-defined, independent components that could be analyzed and studied separately. This allowed students to understand how different aspects of an operating system worked.
The first version of Minix, called Minix 1.0, was released in 1987 and was available for systems based on the Intel 8086 architecture. Although Minix was limited in functionality compared to other operating systems, it was very stable and provided a solid foundation for learning about. operating systems.
In 1991 the Minix story took an unexpected turn when Linus Torvalds, a Finnish student, announced the development of a new operating system called Linux. Torvalds was inspired by Minix and decided to use it as the basis for his project, but unlike Minix, Linux was developed as a complete operating system and not just an educational tool.
Over time, Linux became a widely used operating system around the world, especially in the realm of servers and high-performance computing. Minix also continued to evolve and Tanenbaum continued to work on the development of his system and released new versions with improvements and additional features.
In 2005, Minix 3 was released, a complete rewrite of the operating system with a focus on reliability and security. Minix was designed with a microkernel kernel, which means that most of the operating system runs in user space instead of the system kernel. This architecture provided greater protection against errors and failures, making Minix suitable for mission-critical applications.
Although Minix has not achieved the same popularity as Linux or other commercial operating systems, it has influenced the development of modern computing. In Wikipedia we find a structure that explains the layers in which MINIX works internally (microkernel), where we see that each module that makes up the operating system is separated from others, giving it characteristic stability, so I present this structure below (see this article written by a server that explains in a simple way how a microkernel works).
layer 1
This is the layer that directly interacts with the hardware. It is in charge of catching all the interruptions and traps, of planning and offering to the upper layers a model of independent and sequential processes to communicate through the use of messages. In short, it has two well-defined parts: the first deals with everything related to low-level programming to provide the abstraction of processes to the upper layers. The second part manages the more mechanical aspects of the messages, such as the buffers for sending and receiving messages that are stored in the physical memory, the verification of destinations and everything related to the physical handling of memory in regards to messages. This first layer is written in assembly language, the rest are written in C language.
layer 2
Contains everything related to I/O processes, one for each type of device (tasks). As illustrated in the graph, we have tasks for disks, printers, clocks, network interfaces, and system tasks, which, although they are not system devices, do have the purpose of copying between different memory regions for processes that do not have with the privileges to perform them themselves. All layer 2 tasks and layer 1 code are combined to form a single binary program called the kernel, although although they are compiled together when the kernel and interrupt handlers are running they have higher privileges than the kernel. tasks. In this way it is achieved that the kernel can execute all kinds of instructions using data from any part of the system, in order to be able to access any part of the memory and any processor register. However, tasks, despite not having kernel-level privileges, can access any memory region belonging to a less privileged process in order to perform I/O for them.
layer 3
It brings together the processes known as server processes. They run at a less privileged level than the kernel or tasks, and do not directly access input and output ports. They also cannot access another region of memory than the one that was assigned to it. To do this, it uses the system calls (FORK, EXEC and BRK) which are provided by the memory manager (MM). The file system (FS) performs system calls for files (READ, MOUNT, and CHDIR). It should be noted that the MINIX file system is designed as a “file server” so it could be moved to a remote machine with almost no changes. Other servers in this layer are the reincarnation server (RS), which allows you to restart drivers that are closed due to failures or other causes.
Layer 4
Finally, all user processes such as shells, editors, compilers, programs, etc. are housed here.
In short, Minix is an open source operating system developed by Andrew S. Tanenbaum as an educational tool to teach operating system concepts. Although it has been surpassed by other developments and is not as popular as other operating systems, it is still important to the academic community and to anyone interested in learning about operating systems and their inner workings.