49 votes

Comment les systèmes d'exploitation sont-ils "fabriqués" ?

Créer un système d'exploitation semble être une massif projet. Comment quelqu'un pourrait-il même commencer ?

Par exemple, lorsque j'insère Ubuntu dans mon lecteur, comment mon ordinateur peut-il juste exécuter ça ? (C'est, je suppose, ce que j'aimerais vraiment savoir).

Ou, en regardant les choses sous un autre angle, quelle est la plus petite quantité d'octets qui pourrait se trouver sur un disque et continuer à être "exécuté" comme un système d'exploitation ?

(Je suis désolé si cela est vague. J'ai juste aucune idée sur ce sujet, donc je ne peux pas être très précis. Je prétends en savoir assez sur le fonctionnement des ordinateurs, mais je suis totalement désemparé sur ce sujet).

4 votes

Grr, vous avez supprimé votre première question ou quelque chose d'autre s'est produit. J'ai écrit une très longue réponse, mais j'ai obtenu une page "cette question n'existe plus" lors de la soumission et je n'ai pas pu revenir en arrière pour récupérer mon ancien texte :(

5 votes

C'est pourquoi je ne compose jamais directement dans une page de navigateur. J'ai entendu dire qu'Opera a résolu ce problème en mettant en cache les entrées de l'utilisateur.

0 votes

@TravisO : Voici votre réponse : pastebin.com/m517b4eb9

37voto

Roberto Russo Points 1130

Eh bien, la réponse se trouve dans les livres : Systèmes d'exploitation modernes - Andrew S. Tanenbaum est très bon. L'illustration de couverture ci-dessous.

Le noyau de système d'exploitation le plus simple mais complet, adapté à l'apprentissage ou à la curiosité, est le suivant Minix .
Aquí vous pouvez parcourir le code source .

Modern Operating Systems
(source : <a href="http://www.cs.vu.nl/~ast/books/mos2/big_cover.jpg" rel="nofollow noreferrer">cs.vu.nl </a>)

8 votes

+1 Ça valait la peine de regarder l'image juste pour tous les jeux de mots. J'aimerais bien aller à un cirque avec des zombies et des philosophes à table.

2 votes

J'ai eu envie d'applaudir certaines choses sur cette photo. Merci beaucoup ! Cela a fait ma journée ! =D

19voto

CMS Points 315406

Les systèmes d'exploitation sont un sujet énorme, la meilleure chose que je puisse vous recommander si vous voulez aller vraiment en profondeur sur la façon dont les systèmes d'exploitation sont conçus et construits, c'est un bon livre :

Operating System Concepts

Concepts des systèmes d'exploitation

4 votes

Je pense que j'ai peut-être utilisé ce livre à l'université. Mais une ancienne version avec moins de dinosaures dessus.

0 votes

J'ai également utilisé la 7e édition. Bien que j'ai aimé les dinos utilisant des ipods et autres ordinateurs de poche, je pense que je préfère la couverture de cette édition :)

0 votes

Ouais, des illustrations vraiment cool sur toutes les couvertures, codex.cs.yale.edu/avi/os-book/os8/covers-dir/index.html

12voto

Andrew Hare Points 159332

Si vous êtes vraiment curieux, je vous invite à consulter les sites suivants Linux from Scratch comme un bon endroit pour apprendre tous les tenants et aboutissants d'un système d'exploitation et comment toutes les pièces s'assemblent. Si c'est plus d'informations que ce que vous cherchez, alors cet article de Wikipedia sur les systèmes d'exploitation pourrait être un bon point de départ.

0 votes

Linux from Scratch n'est qu'un moyen d'assembler divers logiciels pour former un méta-système d'exploitation. Il ne vous apprend pas les principes fondamentaux des systèmes d'exploitation, comme la planification des tâches, le démarrage, la gestion de la mémoire, etc. - tout ce qui concerne l'informatique...

0 votes

Linux from Scratch n'est pas un "méta" système d'exploitation - êtes-vous sûr de le connaître ?

1 votes

LFS est un bon outil pour apprendre Linux. Mais juste Linux. Je ne pense pas que vous puissiez apprendre "tous les tenants et aboutissants d'un système d'exploitation" avec des trucs de si haut niveau. Haut niveau comme dans "distant du matériel". Je le sais, je l'ai fait sur une machine virtuelle =).

11voto

Doug T. Points 33360

Un PC sait qu'il doit chercher les instructions de démarrage dans un secteur spécifique du disque. Ces instructions indiquent ensuite au processeur qu'à certaines interruptions du processeur, un code spécifique doit être appelé. Par exemple, lors d'un tic périodique, il faut appeler le code du programmateur. Lorsque je reçois quelque chose d'un périphérique, appelez le code du pilote du périphérique.

Maintenant, comment un système d'exploitation configure-t-il tout avec le système ? Le matériel a aussi des API. Elles sont écrites en pensant au programmeur de systèmes.

J'ai vu beaucoup de systèmes d'exploitation de base et celui-ci est vraiment le noyau absolu. Il existe de nombreux systèmes d'exploitation maison intégrés qui ne font que cela et rien d'autre.

Des fonctionnalités supplémentaires, telles que l'obligation pour les applications de demander de la mémoire au système d'exploitation, ou l'obligation d'obtenir des privilèges spéciaux pour certaines actions, voire les processus et les threads eux-mêmes, sont réellement facultatives, bien qu'elles soient implémentées sur la plupart des architectures de PC.

10voto

Will Hartung Points 57465

Le système d'exploitation est, tout simplement, ce qui permet à votre logiciel de gérer le matériel. Il est clair que certains systèmes d'exploitation sont plus sophistiqués que d'autres.

À la base, un ordinateur commence à s'exécuter à une adresse fixe, ce qui signifie que lorsque l'ordinateur démarre, il place le compteur de programme à une adresse prédéfinie et commence simplement à exécuter le code machine.

Dans la plupart des ordinateurs, ce processus de "démarrage" initialise immédiatement les périphériques connus (comme, par exemple, un lecteur de disque). Une fois initialisé, le processus d'amorçage utilise une séquence prédéfinie pour exploiter ces périphériques. En utilisant à nouveau le pilote de disque, le processus peut lire le code du premier secteur du disque dur, le placer dans un espace connu de la RAM, puis sauter à cette adresse.

Ces séquences prédéfinies (le démarrage de l'unité centrale, le chargement du disque) permettent aux programmeurs de commencer à ajouter de plus en plus de code au début du démarrage de l'unité centrale, ce qui, avec le temps, permet de lancer des programmes très sophistiqués.

Dans le monde moderne, avec des périphériques sophistiqués, des architectures de CPU avancées et de vastes, vastes ressources (Go de RAM, To de disque et CPU très rapides), le système d'exploitation peut supporter des abstractions assez puissantes pour le développeur (processus multiples, mémoire virtuelle, pilotes chargeables, etc.)

Mais pour un système simple, avec des ressources limitées, vous n'avez pas vraiment besoin de beaucoup de choses pour un "OS".

Pour prendre un exemple simple, de nombreux petits ordinateurs de contrôle ont des "systèmes d'exploitation" très petits, et certains peuvent être simplement considérés comme un "moniteur", offrant un peu plus qu'un accès facile à un port série (ou un terminal, ou un écran LCD). Il est certain qu'il n'y a pas beaucoup de besoins pour un grand OS dans ces conditions.

Mais envisagez aussi quelque chose comme un système Forth classique. Ici, vous avez un système avec un "OS", qui vous donne les entrées/sorties disque, les entrées/sorties console, la gestion de la mémoire, plus le langage de programmation proprement dit ainsi qu'un assembleur, et tout cela tient dans moins de 8K de mémoire sur une machine 8 bits.

ou les vieux jours de CP/M avec son BIOS et BDOS.

CP/M est un bon exemple de cas où un simple système d'exploitation fonctionne bien comme couche d'abstraction pour permettre à des programmes portables de fonctionner sur une vaste gamme de matériel, mais même à cette époque, le système nécessitait moins de 8K de RAM pour démarrer et fonctionner.

On est loin des Mo de mémoire utilisés par les systèmes d'exploitation modernes. Mais, pour être juste, nous AVONS des Mo de mémoire, et nos vies sont BEAUCOUP plus simples (la plupart du temps), et beaucoup plus fonctionnelles, grâce à cela.

L'écriture d'un système d'exploitation est amusante parce qu'il est intéressant de faire en sorte que le HARDWARE imprime "Hello World" en envoyant des données d'un octet à la fois par un obscur port d'entrée/sortie, ou en les fourrant dans une adresse mémoire magique.

Prenez un émulateur x86 et faites la fête pour obtenir un secteur de démarrage qui dise votre nom. C'est un régal pour les yeux.

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