# Les systèmes d'exploitation
## Petite histoire des systèmes d'exploitation
### Avant les systèmes d'exploitation
Pour rappel :
* les premières machines étaient programmées à la main en déplaçant des rotors, des câbles etc. par des personnels formés à cette tâche (des opérateurs) ;
* d'autres machines exécutent des programmes encodés sur des cartes perforées ; le programmeur n'est plus nécessairement un opérateur ;
* l'accès aux informations de ces cartes perforées était particulièrement lent par rapport à la vitesse de l'unité de commande ; celui-ci restait inoccupé une grande partie du temps ;
* les premiers ordinateurs tels que Mark I (1944) ou l'ENIAC (1945) ne disposaient pas de système d'exploitation pour partager les ressources entre les différents programmes. De ce fait, un seul programme bénéficiait de l'intégralité des ressources de la machine.
## Les systèmes d'exploitation modernes
### Multics et Unix
Dans les années 1960 apparaissent les mini-ordinateurs : ce sont des machines moins puissantes mais aussi bien moins chères, telles que le PDP 8, développé en 1965 par Digital Equipment.
Ces machines étant moins puissantes, il a fallu élaborer des systèmes d'exploitation (ou OS : "Operating System") plus efficaces.
Descendant de CTSS, le projet Multics (MULTiplexed Information and Computing Service) a été lancé en 1964, par Fernando Corbató et Jerry Saltzer. Il apporte de nombreuses nouveautés : système de fichier hiérarchique, temps partagé, multitâche préemptif, multiutilisateur, sécurité. Néanmoins, il n'aboutira pas complétement, étant trop lourd et pas assez efficace.
Par la suite, deux ingénieurs qui travaillaient sur Multics (Ken Thompson et Dennis Ritchie) lancent en 1969 leur propre projet baptisé initialement UNICS (UNiplexed Information and Computing Service). Le nom fut ensuite modifié en [UNIX](red).
D'abord programmé en assembleur, Unix sera ensuite développé en langage C, inventé pour cette occasion par Dennis Ritchie (et qui succède au langage B de Thompson).
Unix a eu plusieurs dérivés :
* des versions créées par IBM, Sun ou HP ;
* d'autres issues du monde universitaire ou de programmeurs indépendants dans les années 1990 :
* les BSD (utilisés par macOS X et suivants) : NetBSD, FreeBSD, OpenBSD ;
* Linux.
Ces systèmes de type Unix sont réputés pour leur fiabilité et encore utilisés dans l'industrie.
## Systèmes d'exploitations et logiciels libres
Avec l'essor de la micro-informatique viennent des enjeux financiers importants ; les logiciels, qui s'échangeaient alors librement deviennent payant et leur code source n'est alors plus accessible (on parle de logiciels *propriétaires* ou *privateurs*).
Richard Stallman, chercheur au MIT, ressent ce changement chez ses collègues, avec qui il travaillait et échangeait des logiciels jusqu'ici mais qui sont engagés pour produire des logiciels propriétaires.
Confronté à une imprimante laser qui fonctionnait irrégulièrement et dont il ne pouvait plus modifier le pilote, il décide, en 1984, de créer le projet GNU (GNU is Not Unix !), qui a pour objectif de construire un système d'exploitation compatible avec Unix, et dont la totalité des logiciels est libre.
Un logiciel est dit libre s'il accorde les libertés suivantes :
* la liberté d'exécuter le programme, pour tous les usages ;
* la liberté d'étudier le fonctionnement du programme et de l'adapter à ses besoins ;
* la liberté de redistribuer des copies du programme (ce qui implique la possibilité aussi bien de donner que de vendre des copies) ;
* la liberté d'améliorer le programme et de distribuer ces améliorations au public, pour en faire profiter toute la communauté.
L'accès au code source est une condition d'exercice des trois dernières libertés.
Les logiciels propriétaires sont par contre en général non ouverts, il est donc plus difficile (voire illégal) de les modifier. Les logiciels libres sont souvent maintenus par une communauté, mais peuvent aussi l’être par des entreprises qui les utilisent. Les logiciels propriétaires quant à eux sont essentiellement développés et mis à jour par l’entreprise qui les possède et qui peut décider d’arrêter de les maintenir.
De nombreux logiciels libres très populaires existent maintenant, citons entre autres Libreoffice, Firefox, VLC, Gimp, etc.
La philosophie du logiciel libre s'est étendue à d'autres domaines, il existe maintenant des images, des musiques, des livres ou des encyclopédies libres de droit.
Vous pouvez visionner [le documentaire "La bataille du libre"](https://peertube.fr/videos/watch/47e8c64d-234f-4b73-a3db-25eec1a88f43).
L'essentiel du projet GNU est mené à bien mais le noyau nommé *Hurd* du système n'avance pas assez.
En 1991, un étudiant finlandais, Linus Torvalds, créé un clone libre d'Unix, qui sera appelé Linux.
Ce noyau, associé aux logiciels GNU, donnera le système d'exploitation [GNU/Linux](red). Il existe aujourd'hui une multitude de distributions de Linux, pour les serveurs, pour les ordinateurs des particuliers et pour les smartphones (Android/Linux).
### Les prémices des systèmes d'exploitation
Les premiers ordinateurs coûtait très cher, il fallait donc optimiser leur utilisation par les entreprises.
Pour réduire le coût d'utilisation des machines, plusieurs avancées ont lieu, citons par exemple le traitement par lots et le temps partagé.
#### Le traitement par lots
Les programmes des utilisateurs sont regroupés en lots (en anglais batch), pour les traiter en série, sans transitions. L’enchaînement des travaux était réalisé par un programme appelé **moniteur**, qui fut la première forme de système d’exploitation. Le premier système fonctionnant sur ce principe, GM-NAA I/O, a été développé en 1955/1956 sur IBM 704 par General Motors et North American Aviation, et non par IBM.
#### Le temps partagé
Afin de permettre à plusieurs utilisateurs d'exploiter la même machine, il a fallu faire en sorte que la machine puisse gérer au mieux leurs différentes requêtes, en mettant en place un système en **temps partagé**. Le pionnier fut CTSS (Compatible Time-Sharing System), qui fonctionnait en 1961 au MIT sur un ordinateur IBM 7094.
* encyclopédie Universalis ;
* [document de Sacha Krakowiak](https://www.societe-informatique-de-france.fr/wp-content/uploads/2016/04/1024-no8-histoire-SE.pdf) ; vous y trouverez des explications bien plus détaillées.
### CP/M, MSDOS, Windows
Au début des années 1970 apparaissent les micro-ordinateurs, qui marqueront la diffusion de l'informatique dans le grand public.
Le système [CP/M](red) est inventé en 1973 par Gary Kildall, c'est le premier OS pouvant tourner sur différents microprocesseurs. C’est un franc succès.
En 1981, la société IBM invente le concept de PC. Peu convaincue par la réussite de ce projet (!), IBM ne souhaite pas développer un OS maison et fait appel à Kildall, son CP/M étant l’OS le plus répandu sur micro-ordinateur. Les négociations entre IBM et la société de Kildall, n’aboutissent pas et IBM se tourne vers la société Microsoft qui rachète un OS inspiré de CP/M, le MS-DOS.
Le contrat entre IBM et Microsoft fit bien sûr la fortune de ce dernier (lors de son introduction en bourse, des milliers d'employés devinrent millionnaires et certains milliardaires !).
Résumons :
* IBM contacte la société de Gary Kildall, mais il n'y aura pas de contrat signé ; diverses versions existent à ce sujet mais la plus vraisemblable est que :
* Kildall et son épouse Dorothy McEwen auraient refusé de signer un accord de confidentialité ;
* ils auraient demandé une redevance plus élevée ;
* ils n'auraient pas voulu qu'IBM puisse modifier le code de CP/M.
* IBM contacte alors Microsoft, qui lui fourni déjà des licences d'Altair Basic ;
* Microsoft achète pour 25 000 $ une licence QDOS ("Quick and Dirty Operating System" !) ou "86-DOS" à Seattle Computer Products ;
* Microsoft embauche Tim Paterson pour en faire une version pour le processeur 8088, Microsoft achète ensuite pour 50 000 $ tous les droits du 86-DOS et en vend une licence non-exclusive à IBM sous le nom de PC-DOS 1.0, renommé ensuite MS-DOS (SCP accusera plus tard Microsoft d'avoir dissimulé son contrat avec IBM pour acheter le 86-DOS moins cher et obtiendra 1 million de dollars de dédommagements) ;
* le système MS-DOS verra sa part de marché augmenter, suite à une politique commerciale aggressive ;
* encore de nos jours, les micro-ordinateurs PC sont majoritairement équipés de Windows (très difficile d’acheter un PC sans Windows : pratique dite de vente liée ou «taxe Microsoft»).
En 1973, la société Xerox développe le Xerox Alto, premier odinateur muni d'une interface graphique utilisable avec une souris. Les dirigents de Xerox n'y auraient pas vu un grand intérêt et, suite à une démonstration, la société Apple adoptera ces idées pour son ordinateur Lisa en 1983 puis pour son Macintosh en 1984.
Microsoft dotera également en 1985 son système MS-DOS d'une interface graphique, appelée [Windows](red), qui deviendra ultérieurement un système d'exploitation à part entière.
## A quoi servent les systèmes d'exploitation ?
* le système d’exploitation fournit aux utilisateurs et aux applications un accès simplifié aux ressources de la machine, à travers des interfaces de programmation (API) et éventuellement une interface graphique ;
* il s'occupe :
* de la gestion de l'ordre d'exécution des processus ;
* de la gestion de la mémoire (pour éviter par exemple que deux processus travaillent sur le même emplacement mémoire) ;
* de la gestion des fichiers (gestion de l'arborescence, accès, suppression, création d'un fichier ou d'un dossier) ;
* des communications avec les dispositifs d'entrées et sorties ;
* des communications avec le réseau ;
* de la gestion des utilisateurs multiples.
Pour aller plus loin, vous pouvez consulter ces deux vidéos :
* [une simple mais qui n'entre pas trop dans les détails](https://www.youtube.com/watch?v=4OhUDAtmAUo)
* [une autre plus détaillée](https://www.lumni.fr/video/comprendre-ce-qu-est-un-systeme-d-exploitation).
Enfin, [cet ouvrage de Laurent Bloch](http://iamjmm.ovh/NSI/os/site/images/LBloch.pdf) couvre le sujet des systèmes d'exploitation de façon claire et détaillée.