Существует ли ОС LibC?

Я помню, что слышал о встраиваемой ОС, которая по сути является просто libc (возможно, она поддерживала c ++). У него не было ядра, каналов или чего-то другого, чего вы ожидаете от операционной системы. Я пытался найти его в википедии но я не видел его в списке.

Существует ли такая ОС? Существует ли ОС, поддерживающая только терминалы или сокеты C / C ++ + (tcp) для взаимодействия вне ВМ? Это было бы полезно для меня, как игрушка.

30

Решение

Причина, по которой вы не можете найти название для этого, состоит в том, что это не операционная система — это отсутствие операционной системы. Часто это называют чем-то вроде «голого металла» программирования.

Общая идея программирования на голом металле заключается в том, что существует небольшой код общего назначения — «Bootloader» — это устанавливает контроллер памяти и другие аппаратные средства на плате, а затем передает управление вашей программе. (Операционные системы также имеют загрузчики, поэтому в этом смысле ваша программа замена операционная система.) UBoot это довольно распространенный загрузчик с открытым исходным кодом, так что это может быть хорошим местом для начала поиска информации.

Одна из хитростей в программировании на голом железе заключается в том, что, поскольку не существует операционной системы, которая могла бы обрабатывать какие-либо аппаратные средства связи, вы должны подумать о том, «что на самом деле означает printf относительно того, к каким данным идут». что периферийное? и «как мне туда добраться?» Опять же, некоторые загрузчики предоставляют поддержку для такого рода вещей, хотя подключать все это не всегда тривиально. Опять же, Uboot — хороший пример.

Между тем, сама библиотека C будет предоставляться вашим компилятором, а не загрузчиком.

(Я также должен добавить в качестве имени примечание: компания, в которой я работаю, делает серию компиляторов голого металла и Linux, известных как Sourcery CodeBench. Для CodeBench голые металлические версии обычно называются в соответствии со спецификацией ABI, которую они используют для компоновки программ, поэтому версии «ELF» или «EABI» — это все железные компиляторы, и я думаю, что это довольно распространенный способ обращения к этому. что-то вроде этого, так что вы увидите и такое название.)

37

Другие решения

В основном ядро ​​не нужно, но если вы ищете минимальный ОС http://wiki.osdev.org/Projects может быть точкой для начала. Есть много хобби и полупрофессиональных проектов, которые поддерживают базовые вещи и занимают мало места. Также есть несколько хороших руководств, чтобы написать это самостоятельно. Вы также должны учитывать, что драйверы и т. Д. Необходимы для простых вещей, таких как сетевой или последовательный ввод-вывод.

Кроме того, ядро ​​linux всегда хорошее начало (некоторое время назад был дистрибутив linux размером около 20 МБ)

6

Я думаю, что есть проблема с некоторыми из ваших предположений. Вы правы, говоря, что вам не нужно ядро ​​для ОС, но все, что может запускать приложения, может статически компилироваться в libc.

Увидеть : http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

Например, можно использовать printf, пока вы компилируете эту функцию для своей ОС. Таким образом, вы можете использовать MenuetOS, пока вы создаете для него libc.

Теперь существует небольшая версия libc в http://pdclib.rootdirectory.de/ которую может использовать какая-то встроенная система.

Таким образом, любая маленькая ОС может рассматриваться как ОС для запуска libc.

6

Таких много.

Большинство профессиональных операционных систем реального времени (RTOS) поставляются с более или менее полной реализацией библиотеки C, и часто даже для C ++ (например, Keil MDK, µItron). Хотя на практике вы часто склонны избегать этого, потому что он использует слишком много доступных ресурсов.

ОСРВ обычно имеет очень маленькое ядро, без поддержки файлов или каналов. Вместо этого они, как правило, поддерживают задачи, таймеры, очереди и флаги событий с минимальными издержками.

5

Libcc не является операционной системой. Хотя определение ОС несколько размыто, оно включает в себя не только API. Требуется управление памятью, планирование процессов и т. Д.

3
По вопросам рекламы [email protected]