today such likes hashtags for fatal error c++ c operating-system embedded osdev

c++ - such - ¿Existe un LibC OS?



tags for likes 2018 (5)

Recuerdo haber escuchado acerca de un sistema operativo incrustable que es esencialmente solo libc (quizás tenía soporte para c ++). No tenía un núcleo, tuberías o cualquiera de las otras cosas que esperas de un sistema operativo. Intenté buscarlo en wikipedia pero no lo vi en la lista.

¿Existe tal sistema operativo? ¿Hay un sistema operativo que admita solo un terminal o sockets C / C ++ + (tcp) para comunicarse fuera de una máquina virtual? Eso me serviría de juguete.


Básicamente, no es necesario un núcleo, pero si está buscando un sistema operativo mínimo, http://wiki.osdev.org/Projects podría ser un punto para comenzar. hay muchos proyectos de hobby y semi profesional que apoyan cosas básicas y tienen una huella pequeña. También hay algunos buenos tutoriales para escribirlo usted mismo. También debe tener en cuenta que los controladores, etc. son necesarios para cosas simples como red o serial de E / S.

Además, el kernel de Linux siempre es un buen comienzo (hace un tiempo hubo una distribución de Linux que tenía aproximadamente 20 MB)


Creo que hay un problema con algunas de sus suposiciones. Tienes razón al decir que no necesitas un kernel para un sistema operativo, pero cualquier cosa que pueda ejecutar aplicaciones puede compilarse estáticamente en libc.

Consulte: http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

Por ejemplo, es posible usar printf siempre que compile esa función para su sistema operativo. Por lo tanto, puede usar MenuetOS siempre que genere libc para ello.

Ahora existe una versión pequeña de libc en http://pdclib.rootdirectory.de/ que algunos sistemas integrados pueden usar.

De esta manera, cualquier SO pequeño puede considerarse un SO para ejecutar libc.


Hay bastantes de esos.

La mayoría de los sistemas operativos profesionales en tiempo real (RTOS) vienen con una implementación más o menos completa de la biblioteca C, y con frecuencia incluso para C ++ (por ejemplo, Keil MDK, µItron). Aunque en la práctica a menudo tiende a evitarlo, porque usa demasiados recursos disponibles.

Un RTOS generalmente tiene un kernel muy pequeño, sin soporte para archivos o tuberías. En cambio, tienden a admitir tareas, temporizadores, colas e indicadores de eventos, con muy poca sobrecarga.


La razón por la que no encuentra un nombre para esto es que no es un sistema operativo, es la ausencia de un sistema operativo. A menudo esto se llama algo así como programación "bare-metal".

La idea general de la programación básica es que hay un poco de código de propósito general, un "bootloader" , que configura el controlador de memoria y otros elementos de hardware en la placa, y luego transfiere el control a su programa. . (Los sistemas operativos también tienen cargadores de arranque, por lo que en ese sentido su programa está reemplazando al sistema operativo). Uboot es un cargador de arranque de código abierto bastante común, por lo que podría ser un buen lugar para comenzar a buscar información.

Uno de los aspectos difíciles de la programación básica es que, dado que no existe un sistema operativo para manejar ninguna de las comunicaciones de hardware, hay que pensar en "qué significa realmente printf en cuanto a qué datos van a parar". ¿Qué periférico? " y "¿cómo hago que vaya allí?" De nuevo, algunos cargadores de arranque brindan soporte para este tipo de cosas, aunque no siempre es trivial conectarlo todo. Nuevamente, Uboot es un buen ejemplo.

Mientras tanto, la biblioteca C en realidad la proporcionará tu compilador, en lugar del cargador de arranque.

(También debo agregar, como nota de nombre: la compañía para la que trabajo hace una serie de compiladores de Linux y de metal común , conocidos como Sourcery CodeBench . Para CodeBench, las versiones de metal simple generalmente tienen el nombre de la especificación ABI que usan para vinculando programas, por lo que las versiones "ELF" o "EABI" son todos compiladores simples, y creo que es una forma bastante común de referirse a este tipo de cosas, así que también verás ese tipo de nombre.)


Libcc no es un sistema operativo. Aunque la definición de sistema operativo es algo confusa, incluye más que una API. Requiere gestión de memoria, programación de procesos, etc.