Pour coder un OS, il faut :
1.Comprendre comment fonctionne un OS, pour cela il y a beaucoup d'article sur le net.
2.Connaitre un langage de programmation compile(comme le C).
3.Connaitre l'ASM
4.Cliquer sur le lien qui est dans la signature.
Intéressant le tuto merci beaucoup. Juste une chose que je ne pige pas trop, c'est qu'il faut un langage de programmation pour développer un OS, or par exemple pour developpez des programmes en C, moi je code sous windows
Mais dans le temps quand il n' y avait pas d'OS, sur quoi ont -ils codés ?
Les premier programme étaient sur une plaque en metal que pouvait lire l'ordinateur.
Mais ces programmes contenait tous les drivers.
Alors un jour, un mec a eu l'idée de mettre tous les drivers dans la mémoire.
Cet ensemble de driver était l'embryon du premier OS.
Je t'invite a lire l'article "Système d'exploitation" sur wikipedia pour en savoir plus.
Ok d'accord, j'y vois plus clair. Le noyau sert donc à faire la communication entre le matériel et les applications.
Mais globalement, j'ai regardé vite fait combien de fichiers ça représentait un OS, et ça demande de très nombreuses années de travail. Mais ça c'est parce que l'OS a été créé pour être compatible sur tous les pc non ? Mais globalement, si on veut créer un petit OS vous faire tourner un vieux pc qui traine au fond de la cave, ça prendrait un peu moins de temps non ?
Si coder un OS était aussi simple, on en verrait à toutes les sauces
Je me permets de poster un autre lien expliquant également les concepts des OS.
On n'est plus dans l'explication "grosso modo" des fonctions des systèmes d'exploitations mais le site vaut tout de même la peine d'être survoler.
La partie téléchargement te montre tous les articles détaillés et te propose de coder le dit OS en même temps. Je recommande si tu es vraiment intéressé.
Si coder un OS était aussi simple, on en verrait à toutes les sauces ^^.
En même temps, réaliser un noyau de système d'exploitation, c'est à dire la partie qui fait le séquencement des tâches, ca prend environ 20H, tout seul, si on connais sa cible (ca peut être plus long sur un pc, vu que l'architecture est assez complexe).
De fait, des OS minimalistes on en trouve effectivement pas mal en systèmes embarqués (même si ca a tendance à devenir faux, les systèmes embarqués aussi tendent à s'uniformiser)
c'est pas une réponse mais une question comment font t'ils aux début quant on a pas d'os pour coder ils codent sur quoi moi on ma dit que ordinateur c'est juste quelque chose qui calcule et qui avait une machine qui permeter de partir a zéro s'est a dire de coder comme on veut et qu'ils coder directement dans le disc dur bon voila ce que je pense mais on pourat me dire comment il font moi j'aimerais apprendre le java et l'asm allors pour le java j'ais commencer avec internet mais c'est pas evidant et l'asm je n'ais trouver par contre je s'ait deja faire des petit programme en assembleur je bricole des machine et tout et tout et je travaille parfaitement avec l'editeur de registre et donc je connais pas mal de valeurs binaire moi ma passion et l'informatique et l'electronique et donc c'est de programmer diversse appareil merci de bien vouloir me repondre et m'aider
c'est pas une réponse mais une question comment font t'ils aux début quant on a pas d'os pour coder ils codent sur quoi moi on ma dit que ordinateur c'est juste quelque chose qui calcule et qui avait une machine qui permeter de partir a zéro s'est a dire de coder comme on veut et qu'ils coder directement dans le disc dur bon voila ce que je pense mais on pourat me dire comment il font moi j'aimerais apprendre le java et l'asm allors pour le java j'ais commencer avec internet mais c'est pas evidant et l'asm je n'ais trouver par contre je s'ait deja faire des petit programme en assembleur je bricole des machine et tout et tout et je travaille parfaitement avec l'editeur de registre et donc je connais pas mal de valeurs binaire moi ma passion et l'informatique et l'electronique et donc c'est de programmer diversse appareil merci de bien vouloir me repondre et m'aider
Je vais surement me tromper voire être très imprécis dans ma réponse, mais il me semble que sur le disque dur, y'a un programme appelé le MBR (Master Boot Record) qui lui permet d'amorcer le boot, donc tu ne pars pas non plus réellement de rien. Sinon en réalité voila le cheminement Langage de programmation > Binaire > Signaux électriques. Donc au départ j'en déduis que la base de la base, se déroule directement d'un point de vue électrique.
C'est à peu près ça.
Le BIOS initialise le matériel et le test et si c'est bon, il lis les données du MBR qui va lui permettre le lancement de l'OSS ou d'un chargeur d'amorçage comme GRUB pour lancer l'OS derrière.
Il faut savoir aussi un truc, c'est que pour coder ton OS, tu ne pars jamais à partir de rien. Ton OS, soit tu vas le coder à partir d'un autre OS, soit tu va le coder sur une autre machine et faire ce que l'on appelle du cross-compiling.
Si tu veux apprendre à construire ton propre OS, je te conseille de chercher aussi des info sur LFS (Linux From Scratch). Tu n'apprendra pas à faire ton OS, mais tu apprendra à construire une distribution Linux briques par briques. Donc tu va apprendre plein de choses sur le fonctionnement de cet OS.
Je suis juste étoné que personne n'ai proposé ce lien
Je pense que le contenu est très riche et il y a une belle communauté autour, ça fait partie des site incontournable... C'est une mine d'or pour tout ce qui concerne le fonctionnement d'un ordi au plus bas niveau!
Pour satisfaire ma curiosité, j'aimerai comprendre comment les informaticiens font pour créer un système d'exploitation.
Evidement, je ne demande pas qu'on m'apprenne comment faire
Juste m'expliquer en gros ce dont on a besoin de créer pour faire un OS. Je suppose que tout ça se fait en assembleur ? Il faut coder des drivers ?
Et puis surtout l'ultime question, qu'est-ce que le noyau d'un système d'exploitation ? A quoi sert-il excatement ? Je parle techniquement...
Bref voila quelques petites questions pour mieux comprendre.
Merci d'avance
Salut.
Alors, de façon générale pour coder un système d'exploitation on suit les étapes suivantes:
-coder un secteur d'amorçage ou on utilise un qui a déjà été crée (GRUB par exemple)
*connaissance requise: architecture de la plate-forme cible (si c'est un pc ou autre)
le langage d'assemblage (ASM) pour pouvoir utiliser directement les instructions du microprocesseur et aussi à cause de la taille stricte que doit faire un secteur d'amorçage
-coder un noyau. De façon vraiment basique, c'est un ensemble de fonction qui gèrent le matériel de la plate-forme cible tout en utilisant les ressources de façon responsable et en octroyant des privilèges d'accès évitant ainsi des plantages ou des chevauchement entre les programmes.
*connaissance requise : connaissance profonde des spécification du matériel cible pour la construction des drivers, d'un langage de programmation système comme le c pour l'allocateur de mémoire pour charger les programmes...
une bonne connaissance du langage c ou tout autre langage capable d'interagir avec un système au plus bas niveau devra être nécessaire.
-coder les programmes basiques comme le shell, l'éditeur de texte....
là une connaissance assez moyenne d'un bon langage de programmation comme le c ou tout autre devrait être amplement suffisant.
-coder l’interface graphique
beaucoup de connaisses des bibliothèques graphiques et de la théorie de leur implémentation (une bibliothèque multiplate-forme et facilement portable comme gtk+ devrait faire l'affaire) une connaissance sérieuse de certaine fonctions vidéo du BIOS et des algorithmes de dessin de formes basiques (cercles, rectangles....) est nécessaire.
- Edité par cotoporto 23 mars 2013 à 10:46:26
tu aimerais apprendre l'assembleur avec NASM depuis zéro ? clique ici suis le fil de discussions ici
-coder un secteur d'amorçage ou on utilise un qui a déjà été crée (GRUB par exemple)
Ce n'est en rien nécessaire, même sur un PC.
Un chargeur d'amorçage offre juste de la souplesse et de la puissance pour le démarrage de la machine. Exemple typique : gestion du multiboot ou changement de l'option de démarrage.
-coder l’interface graphique
beaucoup de connaisses des bibliothèques graphiques et de la théorie de leur implémentation ( une bibliothèque multiplate-forme et facilement portable comme gtk+ devrait faire l'affaire) une connaissance sérieuse de certaine fonctions vidéo du BIOS et des algorithmes de dessin de formes basiques (cercles, rectangles....) est nécessaire.
L'interface graphique n'est jamais considéré comme une part entière du système d'exploitation en dehors du marketing. C'est un composant logiciel bien trop lourd et haut niveau pour y être inclus d'autant que pratiquement tout se passe un mode utilisateur ce qui restreint sa proximité avec le noyau.
Un OS c'est juste un noyau avec les couches basses logicielles pour réaliser une abstraction matérielle aux logiciels, c'est un somme pour le programmeur une API générique pour la gestion du matériel.
Et pour cause, si on regarde POSIX par exemple qui est un ensemble d'API pour permettre la compatibilité des systèmes se voulant l'héritage d'UNIX. Dans cette norme il n'y a nulle trace de l'interface graphique qui est considéré comme un élément facilement interchangeable. de plus une GUI n'est en rien indispensable à l'utilisation de l'ordinateur alors qu'un ordinateur sans OS tu seras très très limité…
-coder un secteur d'amorçage ou on utilise un qui a déjà été crée (GRUB par exemple)
Ce n'est en rien nécessaire, même sur un PC. Un chargeur d'amorçage offre juste de la souplesse et de la puissance pour le démarrage de la machine. Exemple typique : gestion du multiboot ou changement de l'option de démarrage.
Au fait j’essayais de dire grossièrement les étapes de conception d'un système d'exploitation ; quant à la nécessité de coder soit même un secteur boot ou utiliser un qui est déjà tout fait, je crois que c'est tout à fait discutable. En effet du point de vue du programmeur je crois c'est un exercice qui paie plus tard car tu sais exactement comment ton noyau est lancé et si tu veux tu peux même lancé un second secteur à la suite du premier et avoir une vue complètement transparente sur chaque partie du code...Mais bon il est vrai qu'on est pas obligé de passé par cette étape mais je la trouve énormément didactique.
Cela dit, quant au fait que la partie graphique du système ne fait pas partie du système lui même c'est tout à fait vrai et je l'approuve même si pendant longtemps il y a eu assez de polémique autour de cela.... Mais étant donné que je me devait d’être plus ou moins exhaustif dans mes explications sans pour autant faire un cours j'ai jugé bon d'en parler c'est tout.
- Edité par cotoporto 7 mars 2013 à 23:11:43
tu aimerais apprendre l'assembleur avec NASM depuis zéro ? clique ici suis le fil de discussions ici
de plus une GUI n'est en rien indispensable à l'utilisation de l'ordinateur alors qu'un ordinateur sans OS tu seras très très limité…
Oui et non... Si on prends les premiers ordinateurs ils ne possédaient pas d'OS mais juste un langage de programmation (souvent le basic) implanté en ROM et les premiers OS se contentaient de gérer uniquement les disques. Ils s’appelaient d'ailleurs DOS.
Le problème c'est que sans OS les programmeurs doivent gérer tous les périphériques à la mains et dialoguer directement avec eux. Cela ne limite pas l'ordinateur mais cela complexifie énormément le travail de ce dernier. Et rends du même coup sont utilisation plus difficile (très souvent utilisateurs et programmeurs ne faisaient qu'un).
Des ordinateurs comme le C64 par exemple étaient de véritable bombes au vu des leur architecture.
Ouais mais vu la masse de travail nécessaire pour faire fonctionner le tout proprement, avoir un OS avec un noyau préemptif est aujourd'hui un minimum.
Le problème c'est que sans OS les programmeurs doivent gérer tous les périphériques à la mains et dialoguer directement avec eux. Cela ne limite pas l'ordinateur mais cela complexifie énormément le travail de ce dernier. Et rends du même coup sont utilisation plus difficile (très souvent utilisateurs et programmeurs ne faisaient qu'un).
Des ordinateurs comme le C64 par exemple étaient de véritable bombes au vu des leur architecture.
-
Je crois que c'est justement cette contrainte qui a donné naissance aux systèmes d'exploitation car de façon basique, un système d'exploitation est un détachement de toutes ces fonctions dont chaque programmeur devait se préoccuper à l'époque avant de faire un programme aussi basique que soit ce dernier. Donc le système rassemble dans un endroit le gestionnaire de mémoire, les drivers nécessaires pour la gestion de matériels... Et ainsi le programmeur (de logiciels applicatifs) se " contente" d'exploiter cela pour programmer plus facilement les programmes utiles à l'utilisateur finale
- Edité par cotoporto 23 mars 2013 à 10:48:45
tu aimerais apprendre l'assembleur avec NASM depuis zéro ? clique ici suis le fil de discussions ici
Travailler aujourd'hui comme on faisait à l'époque, sans os, serait de la folie pure au vu de la diversité et la complexité des machines actuelles. Je soulignais juste que cela à un jour existé et qu'on arrivait malgré tout à de très bon résultats.
J'ai justement parfois ce sentiment que les OS, s'ils simplifient le travail des programmeurs et des utilisateurs, ont tendance à les brider.
Aujourd'hui non seulement il est inutile d’accéder directement aux périphériques (ça c'est plutôt une bonne chose) mais l'OS empêche tout simplement toute action directe sur ceux-ci. Si bien que la plupart du temps notre matériel est sous exploité.
Fini par exemple le temps ou un programmeur de génie avait réussi l'exploit d'afficher 512 couleurs à la fois sur un appareil qui n'était censé en afficher que 16 en simultanée. (C'était sur Atari 520 ST).
Aujourd'hui si le constructeur n'a pas inclus la possibilité de le faire dans son driver et bien faut même pas compter pouvoir le faire.
/merci tout le monde et sinon vous aurez des contacte par email pour qu'ont m'aide explique et me faire des tutoriel particulier sur ce que je doit apprendre (l'asm,le C et visual basic et aussi bien m'apprendre le ms dos et le binnaire que je m'aitrise d'eja) et je s'ait aussi monter un pc fix et un pc portable)
voila merci beucoup de votre soutien sa fait plaisir
Par rapport à l'apprentissage du langage c je crois qu'il y assez de tutoriel sur ce site pour te faire un bon niveau. Quant à l'ASM j'écrivais justement un tutoriel dessus sur la V3 du site mais depuis la V4 je n'ai pas encore pu mettre à jour les dernières parties mais si cela t'intéresse je veux bien en exclusivité te livrer certaines parties pour t'aider et pour les autres langages je crois aussi avoir ce qu'il te faut. MP si cela t'intéresse
tu aimerais apprendre l'assembleur avec NASM depuis zéro ? clique ici suis le fil de discussions ici
/merci tout le monde et sinon vous aurez des contacte par email pour qu'ont m'aide explique et me faire des tutoriel particulier sur ce que je doit apprendre (l'asm,le C et visual basic et aussi bien m'apprendre le ms dos et le binnaire que je m'aitrise d'eja) et je s'ait aussi monter un pc fix et un pc portable)
voila merci beucoup de votre soutien sa fait plaisir
Par contre bizarrement je doute que le Visual Basic puisse t'aider à quelque chose dans ce cas.
Ce que je veux dire c'est que si tu as le niveau en C pour faire un OS, niveau performance je suis pas sûr que ça vaille le coup de faire les programmes natifs en VB...
Travailler aujourd'hui comme on faisait à l'époque, sans os, serait de la folie pure au vu de la diversité et la complexité des machines actuelles. Je soulignais juste que cela à un jour existé et qu'on arrivait malgré tout à de très bon résultats.
Sur un pc oui. Mais dans l'embarqué cela ce fait fréquemment.
15 mars 2013 à 10:48:56
- Message modéré pour le motif suivant : Message complètement hors sujet
comment font-ils pour créer un OS ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
zdimension - https://zdimension.fr/