BareMetal es un sistema operativo (SO) de espacio de dirección única basado en exokernel creado por Return Infinity .
Está escrito en ensamblador para lograr computación de alto rendimiento con un espacio mínimo [3] [4] con un enfoque de "sistema operativo suficiente" ( JeOS ). [5] El sistema operativo está dirigido principalmente a entornos virtualizados para computación en la nube o HPC debido a su diseño como un núcleo ligero (LWK). Podría usarse como un unikernel .
Se inspiró en otro sistema operativo escrito en ensamblador, MikeOS, [2] y es un ejemplo reciente de un sistema operativo que no está escrito en C o C++ , ni se basa en núcleos tipo Unix . [6]
Descripción general
Requisitos de hardware
- Computadora de 64 bits basada en AMD / Intel
- Memoria: 4 MB (más 2 MB por cada núcleo adicional)
- Disco duro: 32 MB [7]
Una tarea por núcleo
La multitarea en BareMetal es inusual en los sistemas operativos modernos. BareMetal utiliza una cola de trabajo interna que sondean todos los núcleos de CPU . Una tarea agregada a la cola de trabajo será procesada por cualquier núcleo de CPU disponible en el sistema y se ejecutará hasta su finalización, lo que no genera sobrecarga por cambio de contexto . [8]
Programación
Se documenta una API [9] pero, de acuerdo con su filosofía, el sistema operativo no impone puntos de entrada para las llamadas del sistema (por ejemplo: no hay puertas de llamada ni otros mecanismos de seguridad).
BareMetal OS tiene un script de compilación para extraer el código más reciente, realizar los cambios necesarios y luego compilar el código C utilizando [10] la biblioteca estándar Newlib C. [11]
Se diseñó y desarrolló una biblioteca estándar C++11 casi completa para trabajar en el anillo 0. [ 12] El objetivo principal de dicha biblioteca es proporcionar, a nivel de biblioteca, una alternativa a la protección de memoria de hardware utilizada en los sistemas operativos clásicos, con la ayuda de clases cuidadosamente diseñadas. [13]
En noviembre de 2014 se agregó a los programas una demostración del programa Rust, demostrando la capacidad de escribir programas Rust para BareMetal OS. [14]
Redes
Pila TCP/IP
La característica solicitada número uno fue una pila TCP/IP . [15] En octubre de 2014 se anunció un puerto de lwIP escrito en C. [16]
minIP, [17] una pila IP minimalista en ANSI C capaz de proporcionar suficientes funcionalidades para servir a una página web estática simple , se está desarrollando como una prueba de concepto para aprender los fundamentos en preparación para una reescritura del ensamblaje x86-64 planificada para el futuro.
Referencias
- ^ Seyler, Ian. "kernel.asm". Repositorio de GitHub de BareMetal OS . Consultado el 24 de mayo de 2017 .
- ^ ab Voorsanger, Conrad (2 de junio de 2011). "Entrevista con Ian Seyler de Baremetal OS". OSNoticias . Consultado el 26 de mayo de 2014 .
- ^ Adams, David (14 de julio de 2010). «BareMetal OS». OSNews . Consultado el 26 de mayo de 2014 .
- ^ Benchoff, Brian (27 de mayo de 2011). «Sistema operativo de 64 bits escrito completamente en lenguaje ensamblador». Hack A Day . Consultado el 26 de mayo de 2014 .
- ^ Seyler, Ian. «Return Infinity (página de inicio), La ventaja de BareMetal». Return Infinity . Consultado el 2 de febrero de 2015 .
- ^ Smith, Jesse (19 de julio de 2010). «DistroWatch Weekly, Issue 363». DistroWatch . Consultado el 26 de mayo de 2014 .
- ^ "Requisitos del sistema operativo BareMetal". Return Infinity (copia archivada en Wayback Machine ) . Archivado desde el original el 6 de septiembre de 2014. Consultado el 6 de septiembre de 2014 .
- ^ "Cola del sistema operativo BareMetal" . Consultado el 28 de abril de 2015 .
- ^ Seyler, Ian. "Documentación de la API". Repositorio de GitHub de BareMetal OS . Consultado el 26 de junio de 2015 .
- ^ Seyler, Ian (17 de enero de 2014). "Newlib build script". BeareMetal OS Google Group . Consultado el 2 de febrero de 2015 .
- ^ Seyler, Ian. "newlib.sh". Scripts de compilación para BareMetal OS y sus utilidades relacionadas, repositorio de GitHub . Consultado el 2 de febrero de 2015 .
- ^ Lodyagin, Sergei (17 de noviembre de 2013). "Bare C++ library". BeareMetal OS Google Group . Consultado el 2 de febrero de 2015 .
- ^ Lodyagin, Sergei. "La biblioteca Bare C++". Repositorio de GitHub de la biblioteca Bare C++ . Consultado el 2 de febrero de 2015 .
- ^ Seyler, Ian. "Añadir ejemplo de Rust". Repositorio de GitHub de BareMetal OS (versión heredada) . Consultado el 18 de marzo de 2018 .
- ^ Seyler, Ian (22 de agosto de 2013). "TCP/IP". BeareMetal OS Google Group . Consultado el 2 de febrero de 2015 .
- ^ Seyler, Ian (31 de octubre de 2014). «BareMetal y lwIP». BeareMetal OS Google Group . Consultado el 2 de febrero de 2015 .
- ^ Seyler, Ian. «minIP: una pila de IP minimalista escrita en ANSI C». Repositorio de GitHub de BareMetal OS . Consultado el 24 de mayo de 2017 .
Enlaces externos
- ReturnInfinity en GitHub
- Foro de discusión del grupo de Google sobre sistema operativo BareMetal