Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Смотрите: http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

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

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

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

Ответ 3

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

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

Ответ 4

Есть много таких.

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

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

Ответ 5

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