1890-1950 - Fonctionnement inhérent au système
Les ordinateurs les plus anciens avaient l'équivalent de ce qu'un système d'exploitation intégré les intègre maintenant. Vous (l'opérateur) faites également partie du système d'exploitation. Vous avez basculé les commutateurs de registre (ou utilisé une carte perforée) et échangé des câbles de bus (pensez au poste de téléphoniste de l’ancienne mode) et la mémoire était reliée (via des câbles physiques) directement à une ampoule (le moniteur du jour) et à des imprimantes ( stockage à long terme) de telle sorte que la sortie du programme s’éclaire et s’imprime directement sur l’appareil lorsqu’il est placé dans la mémoire tampon de sortie. Il n'y avait aucun pilote nécessaire pour ces choses parce que (en raison de la façon dont les câbles physiques étaient exécutés), ils "travaillaient" (il n'y avait pas non plus de moniteur en ces jours-ci). En fait, il resterait encore quelques décennies avant qu'un écran numérique soit inventé afin que vous puissiez voir les nombres que vous aviez déjà entrés dans le registre et la sortie sous forme de nombres décimaux; les imprimeurs ont régné toute cette époque jusqu'à ce que les écrans soient. Ils ont été câblés exactement comme ils le devaient pour fonctionner correctement. Aucune partie de cette partie n'a vraiment beaucoup changé avec le passage de la mécanique (années 1890) à l'analogique électrique (années 1910) au numérique (années 1930). Cette architecture «Plug N Play» a été remplacée par le système d’interruption pendant cette période et ne refait surface que vers la fin des années 90; bien sûr, à ce moment-là, il y aurait beaucoup moins de problèmes. Avec les interruptions, les périphériques étaient autorisés à prendre du temps de calcul, ce qui permettait à des architectures qui t directement lié au matériel, mais il a fallu plusieurs générations pour que ce soit vraiment le processus simplifié que nous voyons dans x86 arch (et plus récent); Les premiers systèmes étaient souvent confrontés à des conditions de concurrence horribles, à des problèmes de délai de compatibilité matérielle et de compatibilité matérielle, ainsi qu'à d’autres comportements anormaux en matière d’interruption. Parce que chaque machine utilisait des architectures radicalement différentes (expérimentales) au cours de cette période; presque tous les appareils ont été conçus sur mesure pour la machine sur laquelle ils ont travaillé.
1950-1973 - Fonctionnement dans un système
Cette époque a vu l'avènement de la plupart des fonctionnalités auxquelles nous pensons lorsque nous parlons d'un véritable système d'exploitation. Le débogage, les langages de programmation, les utilisateurs multiples, les tâches multiples, les terminaux, les disques durs, les réseaux, la normalisation des composants, etc. ont tous été introduits à cette époque. Cette fois, nous avons assisté à un pas de géant en matière de normalisation, ce qui signifie que nous avions davantage de périphériques normalisés, mais que chaque système d'exploitation était conçu à la main pour chaque machine, ce qui signifiait que la fonctionnalité du système d'exploitation était sévèrement limitée par les ingénieurs qui avaient conçu ce système particulier. . Pendant ce temps, il y avait une zone grise substantielle dans ce qu’était un système d’exploitation car les différentes architectures géraient les choses très différemment et une machine à usage général aurait besoin de beaucoup plus de système d’exploitation que d’une machine comprenant du matériel pour gérer les mêmes tâches. Le fait est que le matériel va toujours être plus rapide qu'un logiciel et que pratiquement tout ce qui est fait en logiciel peut théoriquement être fait en matériel (c'est le coût \ flexibilité \ taille \ temps \ etc. qui nous empêche de créer des versions matérielles presque pures de tout journée). Un système d'exploitation a été conçu pour un ordinateur ou un type d'ordinateur particulier; ça ne marcherait pas ailleurs. Chaque nouvelle conception informatique nécessitait que tous les logiciels de bas niveau soient réécrits à partir de zéro pour fonctionner avec un modèle de machine particulier. Vers la fin de cette période, un nouveau système d'exploitation est apparu qui allait bientôt changer ce paradigme, UNIX écrit aux Bell Labs par Ken Thompson et Dennis Ritchie.
1973 - Fonctionnement entre systèmes
Un seul programme a changé tout cela, mais ce n'était pas UNIX. C'était le compilateur C (qui avait été créé dans un garage par Ken Thompson et Dennis Ritchie après que Bell Labs l'ait coupé). Jusque-là, chaque fois que vous écriviez du code, il s'agissait soit d'un code machine (code que la machine comprend directement mais n'est pas portable), soit écrit dans un langage compilant votre code en code octet (code interprété par un autre programme fonctionne). La grande différence pour les systèmes d’exploitation apportés par C était la possibilité de faire ce que l’on appelle la compilation croisée en code machine. Cela signifiait que le code pouvait être écrit une fois et compilé pour fonctionner de manière native sur de nombreux types de machines différents tant qu'un compilateur avait été écrit pour cette machine. Les systèmes d'exploitation doivent être écrits en code machine car ce dernier est littéralement le seul code connu de la machine.
Je dirais que ce n’est que lorsque Ken et Dennis ont compilé pour la première fois le noyau UNIX avec un compilateur C qu’un véritable système d’exploitation est né. Auparavant, un système d'exploitation était soit un objet physique, soit simplement un bloc d'espace mémoire pré-initialisé conçu spécifiquement pour une machine particulière. L'ajout de nouveaux périphériques au système nécessitait littéralement que le code "noyau" soit réécrit. Maintenant, le système d'exploitation UNIX qu'ils avaient conçu pour une machine particulière pouvait être recompilé et exécuté sur d'autres machines sans réécrire TOUT (tant que cette machine était capable de compiler un compilateur C à partir d'un environnement bootstrap, le reste du système d'exploitation pouvait être écrit). le code C relativement élevé).