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.
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
4 votes
La dernière fois que j'ai vérifié, c'était en écrivant du code.
2 votes
TravisO, nous ressentons tous votre douleur. ericsink.com/entres/TellYourGeekStory.html
0 votes
Vote de clôture car trop large. Similaire : stackoverflow.com/questions/130065/