03
janvier 2011
INSIA - Technologies UNIX : Cours N°1
Rédigé par Matthieu CERDA Aucun commentaire Mis à jour le 03/01/2011
On fait un petit topo sur l'historique de la micro informatique : Les premiers ordinateurs de Bell Labs de 1955, l'IBM 360 de 1964, les languages utilisés (COBOL/FORTRAN/ALGOL/ASM) non intéropérables.
Alors qu'IBM était roi du marché, DEC cherche a devenir "calife a la place du calife" et lance le VAX et la série PDP (7/10/11) utilisant LISP.
DEC a alors l'idée de proposer aux universités leurs ordinateurs (l'utilisateur de demain ce sont les étudiants), ce qui était très malin car ils y gagnaient un parc d'utilisateurs compétents qui débuggaient leurs utilisateurs et quelques contrats de maintenance.
L'intelligence artificielle, c'est une manière que modéliser les décisions d'un expert.
C'est alors que Ken Thompson, employé de Bell Labs, cherche a créer un ordinateur pouvant concurrencer Gary Kasparov aux échecs, et le nomma "Belle". Il crée alors Space Travel, programme pour se promener dans l'arborescence de l'ordinateur.
Chez General Electric, MULTICS est créé, mais en raison de la loi AntiTrust ils ne pouvaient pas faire de la micro informatique et le budget s'épuise. Dennis Ritchie cherche donc a récupérer le projet.
Niklaus Writh créé le PASCAL.
Le métro 14 est basé sur les théories de Dijkstra (preuves de programme) ? a approfondir !
Dijkstra a crée l'algorithmique qui a aidé a créer les languages récents
Dennis Ritchie trouve que le BCPL de l'époque ("B") était trop étriqué et cherche donc a créer le C.
Il se dit aussi qu'il fallait faire un language clair, portable, permettant d'utiliser les interfaces de la machine.
Une alliance se forme entre les universitaires, Ken Thompson, et Kernighan / Ritchie qui connaît les gens de Berkeley et les créateurs de MULTICS.
Ken Propose alors de créer UNICS.
Compilation en C :
- Analyse lexicale
- Analyse syntaxique
- Analyse contextuelle
- Compilation
- Edition de liens
Dennis voit que sur tous les PC de l'époque, très différends, il y avait le même type de programmes : compilateurs et éditeurs de liens.
Il se dit alors : Si mon compilateur C sort de l'assembleur au format local, c'est tout bon !
En 1969, UNIX Time Sharing System v1 sort sous le giron d'AT&T.
Bill Gates pompe UNIX et crée SCO-Unix via SCO.
Xerox fabrique le Star 8010, truc qui coûte un bras mais disposant de technologies révolutionnaires (Mail, Ethernet, GUI, souris), mais ça marche pas car trop cher, et IBM sort l'IBM PC.
Billou crée Xenix, c'est un échec car Xerox a déja Star.
Il se fait aussi jeter par IBM.
(et donc cela aboutit a DOS et la série Windows).
1981 , date importante : Abrogation de la loi antitrust (élection de Reagan).
Les entreprises veulent faire du pognon, et donc Bell/AT&T, bon prince, décide que Berkeley a aussi des droits sur les sources d'UNIX.
Deux branches se créent : BSD v1,2,3,4 et UNIX System V de Bell.
IBM réclame la paternité d'UNIX et lance AIX.
C'est donc la foire et 5 branches d'UNIX sont là.
Les entreprises, qui ont l'argent, créent donc des organisation de normalisation, ce qui donne POSIX pasque la non opérabilité y'en a marre.
Ils normalisent donc le shell bourne, la libc compatible ANSI pour UNIX ...
AT&T crée le Korn shell.
Novell crée NetWare (IPX/SPX, Novell DOS7) puis UnixWare.
UNIX intègre TCP/IP en standard car ils ont bossé sur ARPANET.
--- Fin de la partie historique
On repasse a une vision plus technique des systèmes UNIX : On va s'intéresser aux noyaux monolithiques.
- Un processus est une instance d'exécution d'un programme
- Il se compose de :
- 1 Segment de texte
- 1 Segment de data : fct programme => Variables globales, fct programme => environnement, TFO (Table des Fichiers Ouverts), Table des signaux
- 1 Segment de stack +1 pour chaque thread
On aborde le déroulement d'un programme et le fonctionnement des fonctions réentrantes par interruption (variable global = mal = bug), et le fonctionnement et état des processus présent => prêt => actif => présent / absent.