32 votes

Existe-t-il un système d'exploitation LibC?

Je me souviens d'avoir entendu parler d'une intégrable OS qui est essentiellement juste de la libc (peut-être qu'il avait le soutien pour le c++). Il n'a pas de noyau, de tuyaux ou de l'un quelconque des autres choses que vous attendez d'un os. J'ai essayé de le chercher dans wikipedia , mais je n'ai pas vu sur la liste.

Un tel OS existent? Est-il un système d'exploitation qui prend en charge un terminal uniquement ou C/C++ + (tcp) douilles pour communiquer en dehors d'une VM? Ce serait utile pour moi comme un jouet.

38voto

Brooks Moses Points 6205

La raison pour laquelle vous n'êtes pas à trouver un nom pour ce qu'il n'est pas un système d'exploitation -- c'est l'absence d'un système d'exploitation. Souvent, cela est appelé quelque chose comme "bare-metal" de la programmation.

L'idée générale de "bare-metal" de la programmation est qu'il y a un petit peu de code, un "bootloader" -- qui met en place le contrôleur de mémoire et autres périphériques de choses sur le forum, et puis qui transfère le contrôle à votre programme. (Les systèmes d'exploitation ont également des chargeurs, dans ce sens, votre programme est de remplacer le système d'exploitation.) Uboot est assez open-source bootloader, donc cela pourrait être un bon endroit pour commencer à chercher de l'information.

L'un des passages techniques à propos de "bare-metal" de la programmation, c'est que, puisqu'il n'y a pas un système d'exploitation en place pour traiter de tout matériel de communication, vous devez penser "que fait un printf réellement dire aussi loin que ce que les données de ce périphérique?" et "comment puis-je le faire aller là-bas?" Encore une fois, certains chargeurs d'amorçage fournissent un support pour ce genre de chose, si ce n'est pas toujours trivial de le connecter à tout. Encore une fois, Uboot est un bon exemple.

Pendant ce temps, la bibliothèque C de lui-même, en réalité, va être fournis par votre compilateur, plutôt que le chargeur de démarrage.

(Je dois aussi ajouter, comme un nom de note: L'entreprise pour laquelle je travaille fait une série de nu-métal et Linux compilateurs, connu comme Sourcery CodeBench. Pour CodeBench, le nu-métal versions sont généralement nommé d'après ABI spécifications qu'ils utilisent pour la liaison des programmes, de sorte que le "ELFE" ou "EABI" les versions sont toutes en métal nu compilateurs, et je pense que c'est une jolie commune de la façon de se référer à ce genre de chose, de sorte que vous voyez ce genre de nom qui l'entourent.)

6voto

Mikhail Points 3262

Je pense qu'il y a un problème avec certains de vos hypothèses. Vous avez raison de dire que vous n'avez pas besoin d'un noyau pour un OS, mais tout ce qui peut exécuter des applications peut compiler en statique dans la libc.

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

Par exemple, il est possible d'utiliser printf aussi longtemps que vous compilez que la fonction de votre système d'exploitation. Ainsi, vous pouvez utiliser MenuetOS aussi longtemps que vous bâtir la libc pour elle.

Maintenant, il existe une petite version de la libc à http://pdclib.rootdirectory.de/ qui certains systèmes embarqués pouvez utiliser.

De cette façon, tout petit OS peut être considéré comme un système d'exploitation pour l'exécution de la libc.

6voto

Markus Points 73

Fondamentalement, un noyau n'est pas nécessaire, mais si vous êtes à la recherche pour un minimal os http://wiki.osdev.org/Projects pourrait être un point de départ. il ya beaucoup de passe-temps et semi projets professionnels leur appui choses de base et ont un faible encombrement. Il y a aussi quelques bons tutoriels pour l'écrire vous-même. Vous devez également considérer que les pilotes etc sont besoin pour des choses simples comme réseau ou d'e/S série .

Aussi Le noyau linux est toujours un bon début( il y a quelques temps il y avait une distro linux qui est seulement d'environ 20 mo)

5voto

starblue Points 29696

Il ya beaucoup de ceux-ci.

La plupart des professionnels de systèmes d'exploitation temps réel (RTOS) venir avec une plus ou moins complète de la mise en œuvre de la bibliothèque C, et souvent même pour le C++ (par exemple Keil MDK, µItron). Si, dans la pratique, vous avez souvent tendance à l'éviter, car il utilise trop de ressources disponibles.

Un RTOS a généralement un très petit noyau, sans le support pour les fichiers ou les tuyaux. Au lieu de cela, ils ont tendance à soutenir des tâches, des minuteries, des files d'attente d'événement et de drapeaux, avec très peu de frais généraux.

3voto

Austin Henley Points 2899

Libcc n'est pas un système d'exploitation. Bien que la définition du système d'exploitation soit quelque peu floue, elle comprend plus qu'une API. Cela nécessite une gestion de la mémoire, une planification des processus, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X