2008-12-04 15 views
18

Il me semble que le projet le plus commun et le plus ambitieux que les programmeurs (en particulier les diplômés en informatique) tentent de résoudre est la construction de leur propre système d'exploitation. (Essayez de créer votre propre langage de programmation + compilateur est probablement encore plus commun, mais loin d'être aussi ambitieux.)Roadblocks dans la création d'un système d'exploitation personnalisé

Pour ceux (comme moi) assez fou pour essayer: en dehors de la taille pure, ce sont les plus gros Gotcha s ou des roadblocks inattendus que vous avez rencontrés en essayant de créer votre propre système d'exploitation à partir de zéro?

Edit: Un grand OS question: What are some resources for getting started in operating system development?

+0

Avant, votre propre éditeur de texte était assez bien classé. :) – unwind

+3

Je pense que les plus grands obstacles sont la peur et le doute Si vous pouvez vous en débarrasser ... – THEn

Répondre

18

Être capable de parler d'une expérience réelle (AROS, les plus grands obstacles sont:

  • poule et de l'oeuf (pas os < -> pas apps < -> pas d'utilisateurs < -> ne peut pas attirer les développeurs)
  • Pourquoi même essayer de rivaliser avec Windows? Apple ne réussit pas et ils ont beaucoup d'argent et Linux ne réussit pas malgré une communauté énorme et enthousiaste.
  • Les grandes entreprises ne sont pas intéressées du tout à apporter leurs applications à votre système d'exploitation (Adobe Acrobat Reader, MS Office, Macromedia Flash, Java à partir de Sun). Sans ceux-ci, et pas de bonnes alternatives OSS, vous ne pouvez pas attirer les utilisateurs.
  • Cela prend très longtemps. Dans mon cas, il a fallu environ 15 ans pour obtenir un 1.0 (et nous ne sommes pas encore à 100%).
  • Compatibilité. Pour obtenir des utilisateurs, vous devez être compatible avec quelque chose qui existe (pour que les utilisateurs puissent continuer à utiliser leurs données, etc.). Si vous êtes compatible, pourquoi passer à votre OS?

Donc, si vous prévoyez d'écrire votre propre système d'exploitation, vous devriez considérer ceci:

  • Il faudra beaucoup de temps
  • Pendant longtemps, vous serez seul. J'ai eu de la chance parce que j'avais cette communauté Amiga extrêmement fanatique et dévouée qui ne voulait tout simplement pas laisser tomber.
  • Vous devez trouver un créneau où vous pouvez offrir un service qu'aucun autre système d'exploitation ne peut offrir.
  • Les gens qui peuvent le faire obtiennent souvent de meilleures offres d'emploi parce que la perception est «écrire des OS est difficile» :)
  • Vous ferez partie d'un très petit groupe de programmeurs d'élite qui peut dire: «J'ai écrit le mien OS et il peut faire plus que d'imprimer 'Bonjour tout le monde!' "
+3

"Apple ne réussit pas"? Ils font des milliards de dollars par année.Cela me semble assez réussi. –

+2

Ils ont juste 10% de part de marché (http://www.tuaw.com/2009/01/02/apple-market-share-tops-10-windows-share-lowest-since-tracking/). C'est beaucoup d'argent, mais ils ne prennent certainement pas le dessus. Alors oui, dans leur créneau, ils ont du succès. Dans l'ensemble, ils ne peuvent tout simplement pas déranger le dinosaure Windows. Nous devrons attendre jusqu'à ce qu'il s'effondre sous son propre poids;) –

+0

Des défis techniques spécifiques en plus de la simple taille? – mudge

0

L'écriture d'un système d'exploitation rencontre les mêmes problèmes que d'autres grands projets de logiciel.

Il manque des objectifs clairement définis, et a des problèmes de chronologie/estimation en raison du manque d'expérience.

En outre, il serait utile pour le programmeur premier à créer un système d'exploitation de type « Bonjour tout le monde », de sorte qu'il/elle apprend les concepts du développement du système d'exploitation, et peut alors se concentrer sur le développement d'un système d'exploitation (non l'apprentissage des concepts OS) .

+0

Je pense que c'est plus difficile, il n'y a pas de fonctions de bibliothèques, etc. Vous devez tout faire à partir de zéro. – les

3

Je pense qu'aujourd'hui beaucoup de gens qui sont par ailleurs de bons programmeurs ne savent pas à quel point ils savent comment fonctionnent les ordinateurs. Vous aurez besoin d'une prise en main sérieuse sur les principes de base pour obtenir une machine pour démarrer votre système d'exploitation à partir d'un disque, et ce type de connaissances est réparti assez fin de nos jours. Vous ne trouverez pas non plus d'étagère de livres à ce sujet de nos jours. Fait intéressant, j'ai posé une question sur SO il y a quelques semaines qui portait sur le type de connaissances qui était le pain et le beurre de la programmation PC sérieuse il y a 10-15 ans, et un intervenant a dit qu'ils considéraient que c'était un matériel question. Je ne les frappe pas du tout, mais je pensais que c'était une réflexion intéressante sur la façon dont les compétences ont changé.

4

Le plus gros roadblock? Je pense que c'est quand vous découvrez combien il y a de lacunes dans les spécifications et combien de bogues il y a dans les différentes implémentations. Sérieusement, même si vous aviez toutes les spécifications pour tous les composants (c.-à-d. USB, DMA, IRQ, votre CPU ...), vous constaterez que a) certaines choses ne sont pas spécifiées (ce qui se passe si vous envoyez b) certaines choses sont juste buggées et vous devez les contourner (c'est-à-dire les douzaines de Bugs dans le CPU qui sont détaillés dans les CPU Urata qu'Intel et AMD publient)

Je ne sais pas combien de solutions existent pour les bogues dans un système d'exploitation moderne, mais depuis Linux et * BSD est open source, leurs pilotes vous en disent beaucoup, à savoir this one. Et attendez-vous à avoir des effets secondaires sérieux comme this one.

Alors oui, si vous essayez d'écrire un système d'exploitation, être prêt à maudire beaucoup à des fabricants de matériel et commencer à perdre votre foi en la qualité des PC modernes :-)

+0

"Soyez prêt à ... commencer à perdre votre foi dans la qualité des PC modernes" Pas de doute! Cela me rappelle quelque chose que j'ai lu une fois à l'effet de: si vous ne voulez pas voir un hack, ne creusez pas à travers le code. C'est à dire: une fois que vous connaissez les internes les plus profonds, vous verrez à quel point tout est mal fait. – Dinah

9

Been there, done that. Le plus gros obstacle, pour moi au moins, était les pilotes de périphériques. Le codage du cœur de l'OS est la partie "fun", mais il est inutile de pouvoir faire des E/S (disque, clavier, vidéo, réseau, au moins). Aujourd'hui, si j'avais encore le temps et la volonté de m'engager dans un tel projet, je ciblerais probablement Xen VM au lieu du matériel brut - si ce n'est pour rien d'autre, car il cache de nombreuses idiosyncrasies moche de x86 ainsi que du matériel. Xen présente une belle vue uniforme et indépendante du matériel des périphériques d'E/S, et vous donne toujours assez de liberté pour jouer avec les parties de système d'exploitation "intéressantes" (mm, gestion de processus, synchronisation, interruptions, etc.).

+0

oui je suis coincé à ce point même c'est mon premier: c –

2

Je pense que de loin le plus gros obstacle réside dans le fait que les utilisateurs - jusqu'à ce que vous ayez construit la majorité d'un système opérationnel, vous avez très peu de chances d'avoir des utilisateurs. Sans utilisateurs, vous n'avez pas de demandes de fonctionnalités, de rapports de bogues et, par conséquent, la motivation est limitée. Cependant, même si vous construisez un système d'exploitation fonctionnel, il n'y a aucune garantie que vous obtiendrez une base d'utilisateurs à moins que vous ne trouviez un point d'ancrage qui attire les utilisateurs - ce qui différencie votre système d'exploitation des versions bêta.

SkyOS - il a été développé en grande partie par un seul développeur (maintenant une petite équipe de développement). Le Wikipedia article a également un bon résumé. Je pense que c'est un bon exemple de la façon dont une tâche si décourageante peut être entreprise et se révéler plutôt bien. Ils ont fait des choses intéressantes avec SkyOS, et c'est particulièrement cool de voir que cela vient en grande partie des efforts d'une seule personne dans leur temps libre.