30 votes

Comment dois-je procéder pour développer le système d'exploitation pour l'architecture X86?

Je veux créer mon propre système d'exploitation pour l'architecture X86.

Quelle serait la meilleure langue à utiliser? (Avec assem bien sûr)

Quel serait le meilleur compilateur pour la langue dans un environnement Windows?

Existe-t-il de bons tutoriels sur ce sujet?

Est-il préférable de le tester à l'aide d'un émulateur ou d'un PC physique?

39voto

QAZ Points 2544

Pour mon dernier projet de l'année pour le collage, j'ai développé un petit OS x86 avec un gestionnaire de mémoire virtuelle, un système de fichiers virtuel et entièrement multitâche préemptif. J'en ai fait de l'open source et le code est très bien commenté, découvrez sa source forge page à:

https://github.com/stephenfewer/NoNameOS

De mon expérience, je peux vous recommander le suivant:

Vous aurez besoin x86 langage d'assemblage pour les différentes parties, ce inévitables, mais peuvent être maintenus à un minimum. Assez rapidement, vous obtiendrez l'exécution de code C, qui est un choix prouvé pour l'OS de développement. Une fois que vous avez une sorte de gestionnaire de mémoire disponible, vous pouvez aller en C++ si vous le souhaitez (vous besoin d'une sorte de gestionnaire de mémoire pour des choses comme new et delete).

Quelle que soit la langue que vous choisissez, vous aurez toujours besoin pour l'assemblage et C pour amener un système de démarrage où le BIOS feuilles dans une forme utilisable.

En fin de compte, la langue principale que vous choisirez dépendra du type de système d'exploitation que vous souhaitez développer.

Mon environnement de développement a été le port Windows GNU outils de développement DJGPP avec les MSNA assembleur. Pour mon IDE que j'ai utilisé IBM Eclipse avec le CDT plugin qui fournit un C/C++ environnement de développement Eclipse.

Pour les tests je recommande BOCHS, open source x86 émulateur de PC. Il vous permet de démarrer votre système d'exploitation très rapidement, ce qui est très utile pour tester et peut être intégré dans eclipse, de sorte que vous pouvez créer et exécuter votre OS à la simple pression d'un bouton. Je vous recommande également à l'aide de VMWare et un PC physique de temps en temps car vous pouvez vous procurer sur certains bogues subtils de cette façon.

P. S. OS de développement est vraiment amusant, mais c'est très intensif, la mienne a pris la meilleure partie de 12 mois. Mon conseil est de bien planifier et votre design est la clé! enjoy :)

4voto

Darcy Casselman Points 1498

Le langage et le compilateur dépendent entièrement de ce que vous tentez d'accomplir. Je dirais, cependant, que vous pourriez être en train d'approcher le problème d'un trop faible niveau.

Il y a des documents sur le système d'exploitation fondamentaux. MIT a OpenCourseware sur le sujet. Lire par Andrew Tannenbaum's les Systèmes d'Exploitation de la série, et regarder les choses comme Minix.

Avoir une idée de ce qui existe. Commencer à bricoler avec des choses. Emprunter des idées, et de voir où ils vont. Vous pouvez réinventer la roue si vous voulez vraiment, mais vous allez en savoir plus en s'appuyant sur les travaux des autres.

4voto

Jörg W Mittag Points 153275

Il n'a pas vraiment d'importance, ce que la langue que vous choisissez. Si la langue est Turing-complet, alors vous pouvez écrire un OS en elle.

Cependant, l'expressivité de la langue de certains types de conceptions très facile ou très difficile à mettre en œuvre. Par exemple, la "vivacité" et le dynamisme de l'ancien Smalltalk OSs dépend du fait qu'ils sont mis en œuvre dans Smalltalk. Vous pourriez le faire en C, trop, mais il serait sans doute si fort que vous ne serait même pas penser. JavaScript ou Ruby otoh, que serait probablement un ajustement parfait.

Microsoft Recherche de la Singularité est un autre exemple. Il ne pouvait tout simplement pas être mis en œuvre à rien d'autre que de Chanter#, Spec# et C# (ou similaire langues), car une grande partie de l'architecture dépend du type statique de la sécurité et de la statique de la vérifiabilité de ces langues.

Une chose à garder à l'esprit: la conception d'espace pour OSs implémenté en C est à peu près entièrement exploré. Il ya littéralement des milliers d'entre eux. Dans d'autres langues, cependant, vous pouvez réellement découvrir quelque chose que personne n'a découvert avant! Il n'y a qu'une douzaine environ de l'OSs, écrit en Java, à environ une demi-douzaine en C#, quelque chose de l'ordre de deux OSs en Haskell, seulement un en Python et aucun dans le Rubis ou le JavaScript.

Essayez d'écrire un OS en Erlang ou Io, et de voir comment cela influence votre façon de penser au sujet de Systèmes d'Exploitation!

3voto

posulliv Points 194

Il y a un OS cours offert à l'Université du Maryland, qui utilise GeekOS. C'est un petit commenté OS conçu pour des buts éducatifs qui peuvent être exécutées à l'aide de la Bochs ou QEMU émulateurs.

Pour un exemple de la façon dont il est utilisé dans un cours, découvrez une précédente offre de cours à la classe de la page web. Là, vous trouverez des affectations où vous devez ajouter différentes fonctionnalités de GeekOS.

C'est un excellent moyen de se familiariser avec un petit et simple du système d'exploitation qui s'exécute sur l'architecture x86.

2voto

shoosh Points 34322

Vous voudrez peut-être rechercher XINU. c'est un petit système d'exploitation pour x86 qui n'est pas vraiment utilisé pour autre chose que pour être disséqué par les étudiants.

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