K
PROS
INFORMATIQUE
Vous trouverez ici des petits articles
sur les techniques utilisés en informatique et éventuellement
celle à venir.
INTRODUCTION
Les techniques évoluent. Comment fonctionne une base de données, un compresseur de fichier ou un ordinateur ? Vers quoi vont ils évoluer ?
TABLE DES MATIERES
LE PRINCIPE DU MICROPROCESSEUR
Un ordinateur est constitué schématiquement :
D'organes de saisie ou d'entrée
( clavier, souris, scanner, etc. )
D'organes d'affichage ou de sortie ( Ecran, imprimante, e-mail, etc. )
D'une unité centrale ( microprocesseur, disque dur , mémoire,
etc )
Cette description classe simplement
les différents éléments d'un ordinateur.
Nous ne parlerons ici que de l'unité centrale (UC).
Que se passe-t-il quand on allume un ordinateur :
Un tout petit programme, l'amorce, est activé par le processeur qui teste le matériel, il lance ensuite un autre programme appelé Système d'Exploitation (SE) par exemple windows, ce dernier va mettre en mémoire vive toute une série de petits logiciels appelés pilotes qui permettront l'utilisation des différents matériels installés sur l'ordinateur ( un pilote est un 'traducteur', imaginez un SE français voulant discuter avec un imprimante allemande, mais chacun ne connaît que sa propre langue, il faut faire alors appel à un traducteur : le pilote ou driver). Ensuite l'ordinateur se met en attente afin d'exécuter les programmes (logiciels).
C'est une série d'instructions successives que l'on demande à un ordinateur d'exécuter, par exemple le SE est un programme qui est développé pour gérer, exécuter d'autres programmes tel qu'un jeu, un traitement de texte ect.
LUC coeur de l'ordinateur, est constitué d'un boîtier contenant essentiellement:
Un processeur : l'élément essentiel, c'est lui qui calcule, traite les informations.
Une Carte mère : c'est le composant auquel on relie l'ensemble des composants de l'UC et qui va gérer le trafique des informations envoyées ou reçues par les différents périphériques ( entrée et sortie, mémoire, disque dur) sous les ordres du processeur à travers les Bus (AGP pour les cartes graphiques et PCI pour les autres périphériques).La mémoire de masse: En général un disque dur, Lecteur/graveur CD-ROM, il y a quelques années, on était heureux d'avoir deux lecteurs de disquettes. On y stocke l'information de manière permanente (PC éteint): les programmes, les données.
La mémoire vive ou volatile: quand on éteint son PC, Elle se vide. A quoi sert elle?
L'accès au disque dur, CD, disquette est très lent, mais la mémoire vive est nettement plus rapide, on transfert alors le programme et parfois les données de la mémoire de masse à la mémoire vive pour que les programmes s'exécutent plus rapidement.La carte graphique : ce que vous voyez à l'écran est généré par celle ci. Elle transforme les données (images) en un signal vidéo compréhensible par votre écran d'ordinateur. Elle représente l'écran en une grille, une page d'un cahier quadrillé. Il suffit de placer un 'A' dans la mémoire de la carte graphique pour qu'apparaisse un A sur l'écran de votre ordinateur à la même position.
La taille d'un carreau dépend de la résolution, exemple :1024 points par ligne X 768 points par colonne représente le nombre de carreaux (pixel) par colonne et ligne de la carte graphique. En mode texte, l'écran est découpé en sous groupes de 8X8 points, un 'A' sera dessiné dans un carreau 8X8 si l'on place un 'A' en mémoire. A l'époque où les ordinateurs étaient moins rapide, cette technique soulageait la carte graphique du dessin complet de la lettre.
Le mode graphique lui, utilise la feuille point par point et non plus 8x8, un logiciel envoit la matrice de la lettre à dessiner, ce qui est beaucoup plus lent. Chaque point est codé par un nombre qui indique sa couleur. On peut stoker une image sur 2, 8, 16, 24, 32 bits de couleurs, plus on utilise de bits, plus le fichier occupe de la place, en générale 16 bits est une coloration trés riche.
Lorsque l'on veut affiché une photo, une grande quantité de couleur est nécessaire pour un rendu réaliste : 16 bits.
Il est composé de plusieurs disques magnétiques superposés qui tournent autour d'un axe (plus la vitesse de rotation est élevé, plus l'accès aux donnée est rapide) des têtes se déplacent le long du rayon du disque, placées des deux côtés des disques inscrivent et effacent les données comme un lecteur de bande magnétique.
Les données sont stockées
digitalement: le disque est marqué( formaté) en petits points
(bit), chaque point peut prendre la valeur 0 ou 1. Pratiquement on regroupe
ces paquets en huit points (Octet ou Byte) puis ces paquets en secteur de 512
Octets, puis en super paquets : les clusters, leur taille dépend du disque.
C'est sous cette dernière forme qu'est gérer un disque. Ainsi
du point de vue du gestionnaire du disque dur seul le cluster existe. Si vous
faites l'expérience suivante :
notez l'espace libre de votre disque dur, puis stockez un fichier sur votre
disque (avec blocnote) d'un octet (une lettre), vous constaterez que vous perdrez
d'un coup, quelques milliers d'octets. C'est parce que votre disque dur ne gère
que des clusters.
En fait, il existe une table des matières contenant les noms des dossiers (répertoires) ou fichiers, leur tailles leur date de création et un pointeur indiquant l'adresse du premier cluster d'un fichier. Mais si on est présence d'un gros fichier, un cluster ne suffira pas pour stocké le fichier.
Le pointeur ne pointe pas directement sur ce cluster, on construit un tableau où chaque case correspond à un cluster du disque par convention, en pointant sur une de ces cases, on indique ainsi le premier cluster du fichier (adressage indirect). Ainsi si le fichier ne contient qu'un seul cluster, on place -1 dans la case du tableau, sinon on indique dans cette case l'adresse de la case suivante où il faut aller et ainsi de suite jusqu'à rencontrer un -1. Ainsi un fichier peut atteindre plusieurs clusters. Quand on parle de formatage 16 bits ou 32 bits , on définit la largeur (2 ou 4 octects) de ces cases. C'est pourquoi MSDOS (16 bits) ne peut gérer des disques de plus de 2 GO car on ne dispose au plus que de 65536 cases pour la gestion des clusters, au delà (disque de 40 GO par exemple) , les clusters seraient tellement gros qu'il faudrait pour l'exemple d'avant renoncer à 400 000 octects pour 1 octet stocké réellement. Le mode 32 bits permet lui ( 4 octects) de définir un gros disque en un seul disque C pour l'utilisateur.
Remarquons qu'un fichier n'est pas forcément stocké sur le disque de manière contigue puisque le système utilisent les clusters libres et des trous sont créés lors des effacements de fichiers d'où l'intérêt d'utiliser un défragmenteur de disque : il rassemble les clusters d'un fichier et évite aux têtes de votre disque d'être baladées dans tous les sens -> usure mécanique et temps d'accès aux données sont réduits.
LE PRINCIPE DU MICROPROCESSEUR
Dans le principe, il n'y a pas de
grandes différences entre un microprocesseur et une puce de calculatrice.
On a une série de données et on veut appliquer une opération
sur cette dernière. Exemple une addition : (2 , 5) forme la série,
l'opération: l'addition, le résultat est 7, en terme informatique,
il nous faut un octet pour stocker 2 un autre pour 5, un dernier pour le résultat
7, ces octets sont stockés dans la mémoire vive. L'addition elle
fait parti du système, un processeur sait faire des additions élémentaires,
c'est lui qui par un mécanisme va effectuer l'addition et qui va en mémoire
chercher les données puis stocker le résultat. Bien sûr,
un processeur est capable d'opérations plus complexes, mais le principe
reste le même.
Il ne "raisonne" pas comme nous. Par exemple : obtenir 10.37+ 4.56
n'est pas effectuer directement par le processeur. Un traitement (logiciel)
doit être appliqué aux données. Elles sont transformées
en entiers, soit 1037 et 456 que la puce sait additionner, puis le programme
présentera à l'écran le résultat divisé par
100.
Une petite partie de ce qui mijote dans les laboratoires des chercheurs.
Les puces pour l'instant ne savent qu'exécuter une série d'instruction les unes après les autres (ou presque) . Ce qui caractérise un puce est sa vitesse d'exécution exprimé en MIPS (millions d'instructions exécutées par seconde), cette vitesse est lié à la fréquence d'horloge du processeur, ainsi un Pentium 200MHZ travaille deux fois moins vite qu'un Pentium 400MHZ, nous ne tenons pas compte ici des améliorations de traitements spécifiques au type de processeur qui fait que le rapport n'est pas exactement deux. Mais dans le principe la même instruction élémentaire s'exécutera deux fois moins vite.
Supposons l'addition de deux entiers (qu' un processeur sait faire intrinsèquement) soit à additionner 252 et 20, en terme de processeur , il faut charger 252 dans un registre ( un octet particulier du processeur) , 20 dans un autre, et demander au processeur d'effectuer l'addition, le résultat sera stocké dans un registre double ( 2 octets ).
On a là 3 opérations
élémentaires. Chaque opération utilisera un certain temps
exprimé en nombre de cycle : le cycle dépend de la fréquence
du processeur. Un P400 aura un cycle durant deux fois moins de temps qu'un P200
le temps d'un cycle est de l'ordre du micro seconde voir plus petit. Ainsi il
faudra 4 cycles pour exécuter l'exemple ci-dessus, 1+1 pour charger les
valeurs et 2 pour faire l'addition sur deux octets.
Les programmeurs en "langage machine" cherchent à diminuer
le nombre de cycle pour une opération donnée, la puissance du
processeur agit elle sur la durée du cycle.
Ainsi changer votre P600 pour un P700 ne vous apportera pas un gain significatif de la vitesse de votre PC pour un même logiciel.
Les physiciens ont longtemps débattus
avant que l'expérience donne raison à ceux qui affirmaient qu'au
niveau des particules élémentaires, les lois de la physique différent.
Ainsi une particule n'est à un endroit donné avec des caractéristiques
données que selon une loi de probabilité tant que l'on ne l'interroge
pas sur ses propriétées, plus exactement cette particule n'est
matérialisée pas tant que l'on n'effectue pas une mesure sur elle
(vitesse, position: une interaction avec le monde macroscopique) mais elle existe
selon une probabilité spatiale donnée.
Ses propriétés, peuvent également être dans différents
états simultanément, peuvent être modifiées par interaction
avec d'autres particules quantiques (y compris elle même ) sans obliger
ces particules à se définir dans le monde macroscopique (on appelle
l'obligation à définir à ses propriétés la
décohérence quantique : la particule cesse d'être indéfini
le temps de l'interaction où plus exactement ce que l'on veut ou peut
en voir).
L'idée est alors d'exploiter le phénomène.
Imaginons une particule quantique capable d'occuper plusieurs états en
même temps, symbolisant des chiffres 0,6,2,9,4 ..... en "mélangeant"
deux de ces particules on obtient quelque chose qui peut être assimilé
à une addition, l'avantage est que toutes les additions de deux séries
ont lieu en MËME TEMPS.
Sans entrer dans les méandres de la programmation, on comprend bien qu'un
ordinateur qui fait une addition l'une après l'autre est bien moins rapide
qu'un autre qui fait des additions simultanés.
Exemple : la recherche dans une grosse base de donnée s'effectueraità
une vitesse fulgurante.
La technologie informatique actuelle est sur le point d'atteindre sa limite,
selon les experts, d'ici 10 à 20 ans. C'est beaucoup et peu car on imagine
que si la technologie qui lui succède est radicalement différente,
cette dernière demandera du temps pour devenir performante.
Des ordinateurs quantiques expérimentaux rudimentaires ont été
réalisés.
L'invention de l'ordinateur vient
certainement de l'idée de vouloir copier le cerveau humain, comme l'avion
vient de l'idée de copier les oiseaux.
Si dans ce cas, le métal remplace avantageusement la plume, il est clair
que l'informatique actuelle n'est qu'une pâle copie de l'intelligence
humaine (pour l'instant).
Même si un ordinateur sait effectuer des calculs très complexes
avec un justesse rigoureuse et indiscutable, il n'en reste pas moins une création
limitée de l'esprit humain. Il a bien du mal à intégrer
les paramètres complexes qu'un cerveau ingurgite naturellement.
Conceptuellement, on sait que l'OB est possible: l'homme en est la preuve. Sans
se donner comme objectif un androïde dont sont friands les auteurs de sciences
fictions, on peut supposer qu'un jour nos ordinateurs seront biologiques.
La technologie d'aujourd'hui utilise l'électron. Plus on miniaturise,
plus les éléments chauffent. Le transistor ne traduit que du binaire
(ce qui implique un traitement complexe de l'information). L'ordinateur biologique
nous affranchi au moins de ces problèmes. Notre manière de concevoir
les algorithmes sera bouleversée.
Bien que les recherches menées dans ce domaine soient complexes, quelques
expérimentations sont déjà tentées: l'utilisation
d'une bactérie comme un transistor. Des neurones de sangsue formant une
"calculatrice" rudimentaire.
Cette technologie pourrait succéder
à la technologie actuelle. La photonique est déjà utilisée
en connectique, la fibre optique.... Le développement de transistors
photoniques présente beaucoup d'intérêts: les transistors
actuels sont traversés par des électrons se déplaçant
à 1/3 de la vitesse de la lumière. Les photons se déplacent
trois fois plus vite et leur masse est nulle (en théorie). deux photons
interagissent beaucoup moins que deux électrons, un avantage pour la
miniaturisation. Ily a peu d'échauffement: un obstacle important aux
puces d'aujourd'hui. Pour l'instant, les transistors photoniques ne sont pas
encore assez performants.
Les premiers ordinateurs photoniques sont hybrides c'est à dire utilisant
la technologie actuelle et les améliorations de cette nouvelle technologie.
Peut être la technologie de demain matin.
Il existe plusieurs techniques
pour rammener un fichier quelconque à sa repésentation canonique,
c'est à dire la taille la plus petite possible en octets (pour fixer
les idées un octet = un lettre de l'alphabet). Exemple : "bonjour
bon bonbon" se reduira à "4 X Bon,1 X jour". on voit que
le nombre de lettres à stocker se réduit à 7 lettres ,
on codera de manière très courte 4 répétitions de
bon , 1 de jour et un code qui dira ou se trouve "jour" . l'ensemble
de ces informations restera plus petit que la phrase compléte, on dit
que l'on a compréssé cette dernière. Un algorithme de compréssion
est en terme mathématique est, en général, une bijection
(une compréssion correspond à une et une seule décompréssion):
on doit pouvoir comprésser et décomprésser un fichier quelconque,
il doit en outre ammener un gain de taille par rapport au fichier initial.
Les premiers algorithmes de codec (compression / décomprésssion)
ont été inventés par les mathématiciens bien avant
que les ordinateurs n'existent. Ce n'est que parce que le matériel ne
suivait pas les besoins logiciels que les algorithmes de compréssion
ont été remis au goût du jour.
Même avec le matériel performant d'aujourd'hui, les nouveaux algorithmes
sont indispensables : les DVD utilisent la compréssion MPEG2 : Un film
sans les algorithmes de compréssion ne pourrait pas être commercialiser
sur un DVD. Les images Jpeg ne sont transmises rapidement sur le net que parce
qu'elles sont compréssées.
Le principe du comprésseur: il consiste à trouver des occurences
similiares dans un fichier, puis à les remplacer par un code court, plus
l'occurence est présente dans un fichier, plus on lui affecte un code
court (exemple 'grand maman' est rencontré 200 fois dans un texte de
300 expréssions, on la remplacera par 'A', les autres moins fréquentes
par des expressions plus longues). On crée ensuite une table que l'on
stockera avec le fichier compréssé et les expressions à
remplacer lors de la décompréssion.
Il existe beaucoups d'algorithmes codec, certains sont adaptés aux textes,
d'autres aux images, d'autre aux sons.
L'alogorithmique de ces différents procéssus demande une bonne
connaissance mathématique. néanmoins sachez qu'il existe des algorithmes
récents utilisant la théorie des Ondelettes, isssue d'une branche
récente des mathématiques (1960) et la théorie des Fractals.
qui permettent de compréssser des représentations complexes de
l'image et du son.
Le principe reste identique, la compression fractal au lieu de repérer
des mots ou phrases, repére des bribes d'images : regarder une feuille
d'arbre, elle est composée d'une même géomérie de
base. La compréssion par Ondelettes ressemble plus à une compréssion
de texte, on applique sur le signal une transformation mathématique réversible
qui rend l'information plus répétitive, ce qui permet de la comprésser
de manière plus efficace.
Certains algorithmes ne sont pas bijectifs: Ils perdrent de l'information lors
de la compréssion. La compression d'image jpeg perd de l'information,
la compression de type texte est bijective.
S'il existe un domaine où
les choses bougent en permanence, c'est le langage de programmation.
Depuis les premières cartes perforées qui supportaient nos premiers
programmes jusqu'à la programmation neuronale qui ne cesse d'évoluer,
que de progrés réalisés.
Nos ancêtres utilisaient des
cartes perforées pour parler avec leurs ordinateurs gros comme un immeuble,
cette brâve bête repondait avec une même carte perforée.
Les pauvres (que diront ils de nous dans 100 ans), bref, ils parlaient en langage
machine. Bien que l'écran et l'imprimante aient fait leur apparition
rapidement, on a continué à glorifier le langage machine jusqu'en
1980: l'ordinateur était une affaire de spécialistes, pas d'interprétation
sans un spécialiste.
Puis est venu l'époque des logiciels 'évolués', ils tenaientt
sur 2 disquettes et exploiteraient désorrmais l'écran, le clavier,
et l'imprimante en mode texte. Trés vite, on est capable d'exploiter
le mode graphique qui demande des machines de plus en plus puisssantes.
Début 1980, apparaissent les premières interfaces graphiques :
windows , apple (mac)... Ces innovations nous entraine vers de nouveaux langages
de programmation.
Le langage machine :
Un prosseceur ne comprends que des
instructions élémentaires, charger une valeur, faire une addition,
stocker...
Programmer en langage machine, c'est écrire des programmes dans le langage
du procésseur. Tous les langages de programmation passe par le langage
machine: l'utilisateur implémente(crée) du code machine lorsqu'il
utilise un langage de programation.
On peut finallement voir les langages de programation comme des interfaces entre
le langage machine et l'utilisateur.
Le langage C est un langage évolué, destiné aux proféssionnels,
la plupart des logiciels que vous cotoyez ont été developpés
dans ce langage.
Le Basic, le Pascal et le C
Comme son nom l'indique, Le basic
est l'un des premiers langage accéssible à tous. sa grammaire
et sa syntaxe n'est pas contraignante. Il est un successeur du langage machine.
Visual basic conserve encore aujourd'hui les éléments de base
de ce langage.
C'est certainement le langage le plus populaire.
Pascal un langage proche du Basic, outre la différence de syntaxe et
grammaire, la différence importante est l'obligation de structurer l'architecture
d'un programme et des données. Pascal est proche du langage C .La grande
qualité de C est sa portabilité: on peut avec un même programme
l'implémenter sous Windows ou sur une autre plateforme.
Le langage object:
Le langage "Orienté Objet" fait son apparition dés 1984, une révolution à l'époque dans la manière de programmer, exploitant les ressources windows de l'époque. Les années 2000 vont la confirmer. Avec les nouveaux système d'exploitation, tout est programmation objets: Au lieu de construire tous les éléments d'une voiture: vous allez les assembler : la carosserie , les portes, le moteurs, ect. Ainsi quand vous intégrer tous celà, vous ne vous souciez pas comment est faite la carosserie, la porte ect, on vous donne les propriétees de ces éléments et vous faites vôtre assemblage sur cette base. Personne ne vous interdit de concevoir la porte vous même, mais celà est un projet à part indépendant du projet principal et qui devra respecter les règles de la programmation objet. finalement la programmation objet est un protocole obligatoire pour construire des logiciels complexes.