Créer son système d'exploitation
Résolu
OSProgrammeur
Messages postés
127
Date d'inscription
Statut
Membre
Dernière intervention
-
Concepteur -
Concepteur -
Bonjour,
je voulais savoir quels sont les langages qu'il faut parfaitement maîtriser afin de créer un mini système d'exploitation qui s'améliorera de jour en jour.
Et je voulais aussi savoir si il y avait un ou plusieurs tutoriels pour créer son système d'exploitation (par quoi commencer, etc...)
Je sais que la création d'un système d'exploitation est fastidieuse et complexe mais j'aimerais quand même m'y lancer, parce que c'est très intéressant.
Merci à tous pour vos futures réponses :)
je voulais savoir quels sont les langages qu'il faut parfaitement maîtriser afin de créer un mini système d'exploitation qui s'améliorera de jour en jour.
Et je voulais aussi savoir si il y avait un ou plusieurs tutoriels pour créer son système d'exploitation (par quoi commencer, etc...)
Je sais que la création d'un système d'exploitation est fastidieuse et complexe mais j'aimerais quand même m'y lancer, parce que c'est très intéressant.
Merci à tous pour vos futures réponses :)
A voir également:
- Créer un système d'exploitation
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Restauration systeme windows 10 - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
19 réponses
Bonjour,
C'est long, fastidieux et très difficile effectivement...
Au niveau langage, je pense que le C et l'assembleur sont indispensables.
Il va aussi falloir que tu apprennes à gérer toute la partie matérielle et à créer tes propres drivers pour les périphériques...
Pour commencer, je pense qu'il faudrait décortiquer tous les éléments avec lesquels tu auras besoin d'interagir, comprendre comment communiquer avec eux, lister l'ensemble des protocoles qu'il faudra implanter et les jeux de transactions utilisés au niveau CM/CPU/CG/HDD/etc...
C'est long, fastidieux et très difficile effectivement...
Au niveau langage, je pense que le C et l'assembleur sont indispensables.
Il va aussi falloir que tu apprennes à gérer toute la partie matérielle et à créer tes propres drivers pour les périphériques...
Pour commencer, je pense qu'il faudrait décortiquer tous les éléments avec lesquels tu auras besoin d'interagir, comprendre comment communiquer avec eux, lister l'ensemble des protocoles qu'il faudra implanter et les jeux de transactions utilisés au niveau CM/CPU/CG/HDD/etc...
Comme l'a si bien dit MrYAU31, créer un système d'exploitation demande du temps, beaucoup de temps... Il t'est nécessaire de connaitre l'assembleur, le C++ (ou le C) mais aussi le binaire qui est fondamental pour pouvoir interagir avec les différentes composantes de l'ordinateur. Mais je trouve que le plus compliqué dans un OS, c'est le travail qu'il faut fournir afin d'assurer une bonne compatibilité des programmes. Bref, un travail hors-norme qui peut prendre des dizaines et dizaines d'années !
Je suis tombé par hasard sur un lien sympa qui va t'intéresser. Par contre, il est en anglais.
https://wiki.osdev.org/Expanded_Main_Page
https://wiki.osdev.org/Expanded_Main_Page
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
Je ne veux pas te démoraliser, mais je pense que tu te fais de fausses idées.
Je ne crois pas que tu imagines le travail que tu vas devoir réaliser. Vu que tu pars de 0 en connaissance informatique, tu vas déjà devoir connaître parfaitement les composants d'un ordinateur et savoir comment ils fonctionnent, et sache que deux cartes graphique peuvent fonctionner totalement différemment...
Ce tutoriel pourrait te donner les bases : https://openclassrooms.com/fr/courses
Comme tu peux le lire il te faudra en moyenne 33 jours pour le lire, on va dire 4-5 mois pour le comprendre.
Par la suite, tu vas devoir réfléchir à comment faire interagir tes composants, développer une interface graphique, développer des logiciels, etc. Rien que développé un logiciel doit te prendre dans les 6 mois pour qu'il soit correctement fonctionnel et si tu t'y connais, ce qui n'est pas ton cas.
Une question, pourquoi tu veux commencer cette énorme projet alors que tu n'as aucune connaissance en développement ?
@+
Je ne veux pas te démoraliser, mais je pense que tu te fais de fausses idées.
Je ne crois pas que tu imagines le travail que tu vas devoir réaliser. Vu que tu pars de 0 en connaissance informatique, tu vas déjà devoir connaître parfaitement les composants d'un ordinateur et savoir comment ils fonctionnent, et sache que deux cartes graphique peuvent fonctionner totalement différemment...
Ce tutoriel pourrait te donner les bases : https://openclassrooms.com/fr/courses
Comme tu peux le lire il te faudra en moyenne 33 jours pour le lire, on va dire 4-5 mois pour le comprendre.
Par la suite, tu vas devoir réfléchir à comment faire interagir tes composants, développer une interface graphique, développer des logiciels, etc. Rien que développé un logiciel doit te prendre dans les 6 mois pour qu'il soit correctement fonctionnel et si tu t'y connais, ce qui n'est pas ton cas.
Une question, pourquoi tu veux commencer cette énorme projet alors que tu n'as aucune connaissance en développement ?
@+
Ah!et moi qui pensait que je suis le seul a faire un reve pareil.lorsque je parle de ca les gens pensent que moi je suis fou.c est toujours mon reve de créer mon propre systeme d exploitation.
tu veus que je te dise je te souhaite bonne chance.que tu puisse accomplir ton reve. ne soit pas découragé.tout est possible a celui qui croit.
tu veus que je te dise je te souhaite bonne chance.que tu puisse accomplir ton reve. ne soit pas découragé.tout est possible a celui qui croit.
Bien sûr que c'est possible. On a jamais dit le contraire.
Et heureusement sinon, on ferait comment avec nos ordis ;-)
C'est pour ça qu'on lui a donné des conseils.
Il faut juste qu'il se rende compte que c'est un énorme travail pour qu'il ne baisse pas les bras au bout de 3 mois parce qu'il en aura pour des années en partant de rien.
Et heureusement sinon, on ferait comment avec nos ordis ;-)
C'est pour ça qu'on lui a donné des conseils.
Il faut juste qu'il se rende compte que c'est un énorme travail pour qu'il ne baisse pas les bras au bout de 3 mois parce qu'il en aura pour des années en partant de rien.
Pour répondre à SlyK, oui, j'ai des connaissances en développement, je sais programmer en css, en html, en php et je connais les bases du c++.
Re !
L'HTML et le CSS n'est pas vraiment des langages de développement, mais plutôt de mise en forme.
Le PHP est un langage très simple et de haut niveau. Je ne sais pas si tu comprends la différence entre le PHP et ce que tu vas devoir faire.
Connaître le PHP ne t'avance à rien. Il n'y a aucune gestion bas niveau. Dans ton OS, tu vas devoir gérer les bits, les transactions mémoires, les overflows, etc.
Bonne chance en tout cas, mais sache que pour faire un OS fonctionnelle, tu vas mettre dans les 5-10 ans.
@+
L'HTML et le CSS n'est pas vraiment des langages de développement, mais plutôt de mise en forme.
Le PHP est un langage très simple et de haut niveau. Je ne sais pas si tu comprends la différence entre le PHP et ce que tu vas devoir faire.
Connaître le PHP ne t'avance à rien. Il n'y a aucune gestion bas niveau. Dans ton OS, tu vas devoir gérer les bits, les transactions mémoires, les overflows, etc.
Bonne chance en tout cas, mais sache que pour faire un OS fonctionnelle, tu vas mettre dans les 5-10 ans.
@+
Est-ce que vous pourriez me donner une liste précise de tout ce que je dois savoir avant de commencer à programmer ???
Non, on ne peut pas.
Ce lien, qui t'a déjà été donné te donne une idée de l'ampleur des connaissances à intégrer https://wiki.osdev.org/Main_Page
Un bon moyen de saisir la complexité de la tâche est d'utiliser des docs avec une présentation plus séquentielle, comme celle-ci :
http://www.brokenthorn.com/Resources/OSDevIndex.html
qui te présentent les différentes étapes et problèmes à résoudre, en commençant par le début, pour être en mesure de créer un système d'exploitation rudimentaire.
Pour utiliser un tel document, il faut déjà commencer par apprendre le C et l'assembleur (puis ... les désapprendre dans une certaine mesure, car de nombreux concepts valides lorsque tu conçois des logiciels applicatifs ne sont plus applicables quant on développe un système d'exploitation, ou on utilise par exemple les interruptions du BIOS ou la programmation directe du matériel, sans disposer des bibliothèques standard).
C'est peut-être un document comme celui-là que tu cherches.
Bon courage :-)
Dal
Ce lien, qui t'a déjà été donné te donne une idée de l'ampleur des connaissances à intégrer https://wiki.osdev.org/Main_Page
Un bon moyen de saisir la complexité de la tâche est d'utiliser des docs avec une présentation plus séquentielle, comme celle-ci :
http://www.brokenthorn.com/Resources/OSDevIndex.html
qui te présentent les différentes étapes et problèmes à résoudre, en commençant par le début, pour être en mesure de créer un système d'exploitation rudimentaire.
Pour utiliser un tel document, il faut déjà commencer par apprendre le C et l'assembleur (puis ... les désapprendre dans une certaine mesure, car de nombreux concepts valides lorsque tu conçois des logiciels applicatifs ne sont plus applicables quant on développe un système d'exploitation, ou on utilise par exemple les interruptions du BIOS ou la programmation directe du matériel, sans disposer des bibliothèques standard).
C'est peut-être un document comme celui-là que tu cherches.
Bon courage :-)
Dal
Par contre, tu peux te tourner vers la création d'un WebOS : c'est un système d'exploitation disposé à être utilisé sur navigateur. C'est plus simple à mettre en oeuvre et ça prend moins de temps à le réaliser.
Peux-tu détailler ce que tu entends par "WebOS" ou ta définition de ce que tu considères comme étant un "système d'exploitation", donner des références, des liens ?
Un navigateur étant un logiciel applicatif, il a besoin lui-même d'un système d'exploitation pour fonctionner.
J'avoue ne pas bien comprendre.
https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation
Dal
Un navigateur étant un logiciel applicatif, il a besoin lui-même d'un système d'exploitation pour fonctionner.
J'avoue ne pas bien comprendre.
https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation
Dal
Salut
Ce n'est pas vraiment un système d'exploitation (vu que ça n'exploite rien du tout niveau matériel), c'est juste une interface graphique web imitant celles des OS.
Ca n'a strictement rien à voir au niveau de la démarche.
Mais c'est effectivement beaucoup (beaucoup beaucoup beaucoup) plus simple, tu passe de 10 ans de travailles à 1 mois. ;-)
Ce n'est pas vraiment un système d'exploitation (vu que ça n'exploite rien du tout niveau matériel), c'est juste une interface graphique web imitant celles des OS.
Ca n'a strictement rien à voir au niveau de la démarche.
Mais c'est effectivement beaucoup (beaucoup beaucoup beaucoup) plus simple, tu passe de 10 ans de travailles à 1 mois. ;-)
Salut
Pour comprendre comment fonctionne un OS, tu te lancer dans l'aventure linux from scratch, il parrait que c'est très formateur.
Pour comprendre comment fonctionne un OS, tu te lancer dans l'aventure linux from scratch, il parrait que c'est très formateur.
Salut,
Ton projet est clairement le rêve de beaucoup rien que pour l'expérience que l'on peut acquérir.
Comme ça été dit avant oui c'est possible, très long mais possible. Suffit de regarder le temps qu'a mis Linux a vraiment être fonctionnel et ensuite à être vraiment utilisable par des gens extérieurs sans trop de problème.
Comme l'a dit Alming un WebOS c'est déjà pas mal et plus "concret" à court terme du fait que les première base sont affichable au bout de quelques jours/semaines (en fonction de ce que tu veux faire, ta vitesse de programmation et de si t'es bien organisé) alors qu'un OS complet te faudra peut-être des mois pour affiché un "Hello World !" à l'écran. Mais par contre la tu pourras te dire maîtriser ton pc.
Honnêtement si tu veux mon avis commences par regarder du côté d'une installation Linux très basique, genre ArchLinux ou Ubuntu alternate. Avec ce genre de distro tu pars d'un live pour installer un noyau et tous les composants un par un à la main et ça te permet déjà de comprendre comment un OS fonctionne à haut niveau.
Ensuite si t'arrive à faire tourner un système complet comme ça, regarde du côté de Gentoo ou Slackware qui sont fourni à l'état de source ou un Linux From Scratch (rien de fourni faut se débrouiller à partir d'une documentation), donc faut compiler chaque paquet individuellement, ce qui te donnera une vue plus précise encore qu'avec Archlinux. Si t'arrives à poser un système entièrement fonctionnel là t'auras appris beaucoup de chose encore.
Franchement j'ai jamais fait de Linux From Scratch mais rien qu'en lisant une bonne partie de la docuementation c'est fou ce que j'ai appris.
Une fois que t'auras fait ça je pense que déjà t'auras une meilleurs vue d'un point de vue logiciel de ce qu'est un système d'exploitation. Ensuite tu sauras un peu plus ce dont t'auras besoin pour créer un mini OS.
Clairement si tu te lances, fait un blog ou un site pour suivre le projet parce que franchement je veux suivre (et pourquoi pas te filer un coup de main si besoin) !
Ton projet est clairement le rêve de beaucoup rien que pour l'expérience que l'on peut acquérir.
Comme ça été dit avant oui c'est possible, très long mais possible. Suffit de regarder le temps qu'a mis Linux a vraiment être fonctionnel et ensuite à être vraiment utilisable par des gens extérieurs sans trop de problème.
Comme l'a dit Alming un WebOS c'est déjà pas mal et plus "concret" à court terme du fait que les première base sont affichable au bout de quelques jours/semaines (en fonction de ce que tu veux faire, ta vitesse de programmation et de si t'es bien organisé) alors qu'un OS complet te faudra peut-être des mois pour affiché un "Hello World !" à l'écran. Mais par contre la tu pourras te dire maîtriser ton pc.
Honnêtement si tu veux mon avis commences par regarder du côté d'une installation Linux très basique, genre ArchLinux ou Ubuntu alternate. Avec ce genre de distro tu pars d'un live pour installer un noyau et tous les composants un par un à la main et ça te permet déjà de comprendre comment un OS fonctionne à haut niveau.
Ensuite si t'arrive à faire tourner un système complet comme ça, regarde du côté de Gentoo ou Slackware qui sont fourni à l'état de source ou un Linux From Scratch (rien de fourni faut se débrouiller à partir d'une documentation), donc faut compiler chaque paquet individuellement, ce qui te donnera une vue plus précise encore qu'avec Archlinux. Si t'arrives à poser un système entièrement fonctionnel là t'auras appris beaucoup de chose encore.
Franchement j'ai jamais fait de Linux From Scratch mais rien qu'en lisant une bonne partie de la docuementation c'est fou ce que j'ai appris.
Une fois que t'auras fait ça je pense que déjà t'auras une meilleurs vue d'un point de vue logiciel de ce qu'est un système d'exploitation. Ensuite tu sauras un peu plus ce dont t'auras besoin pour créer un mini OS.
Clairement si tu te lances, fait un blog ou un site pour suivre le projet parce que franchement je veux suivre (et pourquoi pas te filer un coup de main si besoin) !
Merci beaucoup pour ta réponse, mais pour l'instant, je viens d'apprendre le binaire, je suis loin de tout savoir, pour l'instant, ça reste un projet mais je pense qu'il va se réaliser et quand j'aurai commencé à coder, quand j'aurai finit d'apprendre, là, je chercherai un nom et je créerai un site web. Et sinon, j'aimerais bien que tu m'aides :) on se reparle en message privé ?
L'aide sur les forum se fait sur les forums, pour que cela profite à tout le monde. ;-)
Et presque plus important que la programmation, c'est surtout l'architecture d'un OS qu'il faut que tu comprenne, pour cela debian, gentoo et LFS (dans ordre de difficulter croissant) peuvent vraiment t'aider.
Sinon, si tu veut prendre peut tout de suite, tu peut jeter un oeil sur les sources de linux en les téléchargeant sur le site https://www.kernel.org/
Et presque plus important que la programmation, c'est surtout l'architecture d'un OS qu'il faut que tu comprenne, pour cela debian, gentoo et LFS (dans ordre de difficulter croissant) peuvent vraiment t'aider.
Sinon, si tu veut prendre peut tout de suite, tu peut jeter un oeil sur les sources de linux en les téléchargeant sur le site https://www.kernel.org/
Donc le mieux serait, pour m'entraîner, que je fasse un WebOS ?
En dehors du système d'exploitation de HP, je ne vois pas ce que l'on entend par WebOS.
Si les mots ont un sens, un système d'exploitation est une couche logicielle permettant aux logiciels applicatifs d'utiliser les ressources de la machine, sans avoir à programmer directement le matériel, ou utiliser directement le BIOS.
Les tâches d'un système d'exploitation au sens strict sont donc, notamment : gérer l'affichage à l'écran de caractères et de graphiques, gérer la mémoire vive, la mémoire de masse, y compris le(s) système(s) de fichie(s) supportés, l'ordonnancement des tâches, etc.
Si ce que tu te proposes de faire ne comprend pas cela, tu ne fais pas un système d'exploitation. Tu fais autre chose, et tu t'es trompé dans la formulation de ta question.
Le terme "WebOS" est l'appellation commerciale utilisée par Palm, puis par HP, pour désigner un système d'exploitation pour téléphone mobiles se basant sur un noyau Linux. Il est incorrect de dire "un WebOS". "WebOS" est une marque.
C'est désormais sous licence Apache, donc tu peux t'amuser avec si tu veux.
http://www.openwebosproject.org
Dal
Si les mots ont un sens, un système d'exploitation est une couche logicielle permettant aux logiciels applicatifs d'utiliser les ressources de la machine, sans avoir à programmer directement le matériel, ou utiliser directement le BIOS.
Les tâches d'un système d'exploitation au sens strict sont donc, notamment : gérer l'affichage à l'écran de caractères et de graphiques, gérer la mémoire vive, la mémoire de masse, y compris le(s) système(s) de fichie(s) supportés, l'ordonnancement des tâches, etc.
Si ce que tu te proposes de faire ne comprend pas cela, tu ne fais pas un système d'exploitation. Tu fais autre chose, et tu t'es trompé dans la formulation de ta question.
Le terme "WebOS" est l'appellation commerciale utilisée par Palm, puis par HP, pour désigner un système d'exploitation pour téléphone mobiles se basant sur un noyau Linux. Il est incorrect de dire "un WebOS". "WebOS" est une marque.
C'est désormais sous licence Apache, donc tu peux t'amuser avec si tu veux.
http://www.openwebosproject.org
Dal
Ouais, donc avant de te lancer de la programmation, commence déjà par étudier le fonctionnement, puis l'architecture de différents OS.
Si tu t'y met de façon intensive, dans 10 / 15 ans, tu devrais avoir le niveau de faire un noyau basique avec pourquoi pas une interface texte.
Tu est allez voir les sources linux ?
Si tu t'y met de façon intensive, dans 10 / 15 ans, tu devrais avoir le niveau de faire un noyau basique avec pourquoi pas une interface texte.
Tu est allez voir les sources linux ?
Salut,
tu n'es pas le premier à vouloir faire ce genre de choses.
Regarde ce qui a été fait avec bosokernel, par exemple...
tu n'es pas le premier à vouloir faire ce genre de choses.
Regarde ce qui a été fait avec bosokernel, par exemple...
Et encore, une dérnière question, après je met je sujet en résolu :
Est-ce qu'avec des études, on peut apprendre ça ? Ou à l'école, quoi.
Est-ce qu'avec des études, on peut apprendre ça ? Ou à l'école, quoi.
Avec des études, tu peut avoirs les bases de programmation et d'apprentissage sur le fonctionnement d'un PC ou d'un OS qui te permettrons 'y voir plus clair.
Tu peut regarder du coté des masters info, des DUT ou encore des école d'ingénieurs dans le domaines.
Renseigne toi dans un CIO ou à l'onisep.
Mais ca ne remplacera pas une formation personnel et une curiosité de tout les instants.
Tu peut regarder du coté des masters info, des DUT ou encore des école d'ingénieurs dans le domaines.
Renseigne toi dans un CIO ou à l'onisep.
Mais ca ne remplacera pas une formation personnel et une curiosité de tout les instants.
Mais il n'y aura pas besoin de c++ par hasard aussi ?
Et aussi, vous n'auriez pas un bon tutoriel pour le langage assembleur ?
Et je pense que tu commences mal. Avant d'apprendre les langages de programmation, commence par lister toutes les tâches que tu auras à accomplir et tous les éléments avec lequel ton OS devra dialoguer pour comprendre comment ils interagissent entre eux. Tu te rendras peut-être compte que du langage machine sera nécessaire (plus que le binaire comme le dit Alming mais je pense que son idée était celle-ci) ou que tu auras d'autres besoins...