Re: [SOS] Petit OS à la Linux en C++

David MENTRE david.mentre at gmail.com
Ven 16 Juin 14:28:42 CEST 2006


Salut,

Mes quelques réponses :

Le 16/06/06, Bombela<bombela at free.fr> a écrit :
> Vaut-il mieux faire son noyau en C++ ou en C ?

Les parties basses seront toujours en C et en assembleur. Par contre,
je vois un réel intérêt pour le C++ (ou autre langage) pour tout le
reste.

> Il est évident que le C++ apporte une facilitée de programmation
> indéniable avec la programmation objet,
> les allocations dynamiques etc.

Et surtout une abstraction et une moyen de faire du code propre. C'est
à la fois un avantage et un inconvénient. Avantage parce qu'en faisant
des abstractions on maitrise mieux la complexité du système (c'est
pour ça qu'on a inventé fonctions, objets, modules, ...). Un
inconvénient parce que parfois on oublie comment fonctionne réellement
le système et qu'on peut avoir de la complexité induite cachée (cf.
temps de boot d'OOo).

> En fait, tout ce qui permet au C++ de faire plus avec moins de code que
> le C.

Et que ce soit du C++, de l'Ada ou du Haskell, c'est déjà un gros avantage.

> Mais cela est-il bon pour un noyau monolithique ?
> Enfin, le C++ ne risque pas d'alourdir le code noyau et de le rendre
> plus lent ?

À mon avis, le critère de vitesse arrive bien loin derrière les autres
critères. Et si ça t'inquiète vraiment : BeOS était écrit pour une
bonne part en C++ et il me semblait plutôt réactif.

> Pour les noyaux modulaire, la programmation objet du C++ semble déjà
> plus "approprié".
> N'empêche qu'il reste quand même difficile d'utiliser l'ABI objet du
> C++, étant donnée qu'il
> change souvent.

Le changement d'ABI, ce n'est pas un problème pour un noyau vu qu'il
n'est pas lié à autre chose (hormis des modules, mais dans ce cas de
toute façon l'API a tendance à changer, cf. modules de linux).

> Alors avantages, ou inconvénients ?

Je ne suis pas un fan du C++. Mais pour moi, tout langage qui permet
de gagner en simplicité de programmation (exceptions, modules, objets,
abstractions, ...) est nécessaire pour maitriser la complexité d'un
projet aussi complexe qu'un OS.

> Voilà, si vous voulez bien débattre un peux de tout cela...

Voilà mes trois cailloux à l'édifice. ;-)

Amicalement,
d.


Plus d'informations sur la liste de diffusion Sos