4

Bien que le titre fasse partie de ma question, la deuxième partie ne sera pas aussi simple. La première partie: Disons que je veux créer mon propre système d'exploitation. Comment puis-je même faire cela? Je comprends que je dois créer un bootloader. Mais où vais-je à partir de là? Je devrais l'envoyer à un autre programme, mais pour ce faire, ce programme doit déjà être là, et je dois savoir exactement où il se situe dans l'espace mémoire. Des astuces/tutoriels?OS de Scratch

La deuxième question. J'étudie actuellement la gestion de la mémoire, et je pense avoir une théorie sur une meilleure implémentation pour un algorithme de placement, mais je n'ai aucun moyen de vraiment la tester sauf en théorie. Une fois que je peux créer le système d'exploitation (donc c'est pour référence future), comment puis-je jouer avec la mémoire principale et déplacer les processus?

P.S .: Aussi, devrais-je écrire mon propre système de fichiers?

Edit: Après avoir lu sur les commentaires actuels je veux revoir ce que je disais. Quand j'ai dit "la deuxième partie ne sera pas aussi simple", cela semble être un mauvais choix de mots. Je sais que les deux seront des entreprises très difficiles, mais cela n'a pas d'importance pour moi. J'aime juste apprendre de nouvelles choses. Et je ne voulais pas que quelqu'un m'écrive un tutoriel, juste pour me diriger dans la bonne direction.

+5

Quelle sorte d'expérience de codage avez-vous? – Varriount

+0

J'ai codé pendant plusieurs années, et je peux coder couramment en C++ et assez couramment (enregistrer quelques choses) en Java. Et j'ai fait un peu de travail en montage (bien que j'aimerais en faire plus, c'est tellement amusant.). –

Répondre

5

Oeuf. Maintenant, c'est une question! Je ne pense pas que toute réponse que vous obtiendrez ici couvrira un si grand terrain (à moins que quelqu'un ne s'assoit pour écrire et réviser pendant une heure ou deux).

Je vous suggère de lire d'abord les systèmes d'exploitation - essayez les livres de Tanenbaum, et OSDev.org pour des références rapides.

Vous pouvez utiliser GRUB comme bootloader - qui devrait simplifier les choses.

+0

Nous allons certainement utiliser le bootloader GRUB. –

0

Un livre théorique sur les systèmes d'exploitation Operating System Concepts serait vraiment vous aider. Tout système d'exploitation aura besoin d'un planificateur qui va gérer la commutation de tâches, la commutation de contexte, les pièges et autres.

1

Ce n'est pas une entreprise simple mais dans laquelle vous apprendrez beaucoup. Je recommande de se diriger vers http://wiki.osdev.org/Main_Page car ce site a de nombreux tutoriels et vous aidera à démarrer.

+0

Merci, je vais certainement donner un coup d'oeil. –

3

Je ne suis pas d'accord que le titre est la partie simple. Vous pouvez envisager d'étudier minix

+0

ou essayez Xinu (n'est pas Unix) – KevinDTimm

+0

Eh bien, ha ha, je suppose que simple serait un terme relatif ici. –

+1

Mon conseil est d'apprendre de Tanenbaum (ast), il est de loin l'auteur le plus compréhensible. Si vous voulez vous mouiller les pieds rapidement voici un lien vers les examens avec les réponses de mon professeur OS, http://ece.uprm.edu/~noack/icom5007/exams/ –

1

La plupart des composants que vous avez décrits (gestionnaire de mémoire, FS) peuvent être implémentés, testés et utilisés sans écrire de système d'exploitation pour eux.

En outre, le chargeur de démarrage n'est pas vraiment la première chose que vous devriez commencer. Vous voyez, il devrait y avoir quelque chose qui serait chargé par lui. Et ce quelque chose (qui doit être développé et testé) serait beaucoup plus difficile qu'un bootloader.

Il semble que vous sous-estimez la quantité de travail (et de connaissances!) Nécessaire pour le faire. Le mieux que vous pouvez faire est de trouver un ami qui est prêt à vous l'expliquer, et discuter une heure avec lui.

+0

Comment testeriez-vous un gestionnaire de mémoire dans le cadre d'un système d'exploitation déjà en cours d'exécution? Cela ne serait-il pas en conflit avec le gestionnaire du système d'exploitation? Ou est-ce que je vais juste dans le mauvais sens? En outre, comment ajoutez-vous des ruptures aux commentaires? J'ai essayé shift + entrer et une pause html, mais ni travaillé. –

+0

Vous voulez dire le gestionnaire de mémoire virtuelle? Eh bien .. en démarrant en DOS dans une VM et en effectuant un saut en mode protégé, vous pouvez aussi jouer avec. Le problème est que vous aurez besoin de ** lots ** de code soigneusement écrit pour cela. – ruslik

+0

@Nicholas: Je suppose que vous pouvez créer une machine virtuelle très simplifiée qui vous permet de tester différents schémas de gestionnaire de mémoire et d'extraire des statistiques. En outre, vous ne pouvez pas ajouter de sauts de ligne dans les commentaires. – Cameron

0

Un autre bon livre de référence que vous voudrez peut-être envisager une révision est:

  • Operating Systems par William Stallings. Je crois que la dernière édition est la 6ème édition.
  • Un site pour le 5th edition pourrait également aider certains.

Bonne chance avec cette entreprise.Je le pense, bonne chance.

3

Vous pouvez envisager de simuler (en totalité ou en partie) un système d'exploitation, plutôt que d'en écrire un. Selon le modèle, il peut en tirer davantage en moins d'efforts. Je sais que dans mon premier cycle, nous avons écrit des algorithmes de balayage de disque en Java; c'était tout Java avec quelques classes et interfaces. Il n'a pas vraiment analysé le disque, mais a fait un travail assez décent que nous avons pu mesurer, tester et modifier l'algorithme pour voir comment cela a changé. Donc je propose quelque chose de plus simple: si vous êtes juste après les algorithmes de mémoire, peut-être que vous pouvez écrire une petite application testable et modifiable qui vous permettrait d'aller directement à ce que vous voulez faire, et ne pas vous inquiéter de "cet autre OS des choses "vous auriez à écrire autrement. Alternativement, jouer avec un système d'exploitation (UNIX/Linux) existant peut être un effort moindre que d'écrire quelque chose de nouveau à partir de zéro.

+0

Hrm ... Vous êtes post m'a donné un peu d'une idée (ce qui peut être ce que vous obtenez). Je peux être capable de créer un programme en réservant une bonne quantité d'espace en mémoire, puis en utilisant la directive __asm ​​{}, je pourrais utiliser la mémoire que j'ai allouée et jouer avec ça. –

+0

Droite. L'autre avantage de la simulation est de tester différents types d'applications (avec différents profils d'utilisation de la mémoire). Vous pouvez simplement coder une application simulée avec l'utilisation. Mais l'inconvénient de la simulation est qu'elle n'est pas testée avec des applications réelles. Là encore, si vous comparez vos résultats, cela suffira peut-être pour prouver l'amélioration (ou la non-amélioration) de votre algorithme. – ashes999

0

Etudiez Linux, et les meilleurs bits de Minix, et si vous y allez avec un bootloader prêt à l'emploi comme certains l'ont suggéré, j'irais avec LILO sur GRUB (ce sont juste des préférences personnelles, bien sûr).