Quelques principes de fonctionnement d’un ordinateur (2h)
1 Fonctionnement d’un ordinateur
1.1 Le processeur, cœur de l’ordinateur
Tous les ordinateurs manipulent des donn´
ees binaires 1cod´
ees sous forme ´
electrique : une tension nulle
correspond `
a une valeur 0, une tension non nulle (5Vpar exemple) `
a un 1.
On sait effectuer des op´
erations sur ces valeurs. Les principales d’entre elles sont :
– op´
erations unaires : le NON (NOT)
– op´
erations binaires : le ET (AND), le OU (OR) et le OU EXCLUSIF (XOR)
`
A partir de op´
erateurs basiques, on peut cr´
eer des op´
erations plus compliqu´
ees (par exemple un addi-
tionneur `
a 2 bits)
`
A partir de l`
a, on cr´
ee un processeur, c’est `
a dire un circuit ´
electronique capable de r´
ealiser des op´
erations
fondamentales (Unit´
e Arithm´
etique et Logique) et d’ex´
ecuter des programmes (Unit´
e de Contrˆ
ole) s’il est
coupl´
e`
a une m´
emoire :
– Op´
erations logiques (NON, ET, OU, . . . ) (UAL)
– Incr´
ementation, addition (UAL)
Comparaisons (UAL)
– D´
eplacement de valeurs entre diff´
erents emplacements de la m´
emoire (UAL)
Gestion d’une suite d’instructions avec ex´
ecution puis avancement d’un pas (UC)
Gestion d’appels et de piles (UC)
Test logiques et branchements conditionnels (UC)
1.2 Les p´
eriph´
eriques
Deux p´
eriph´
eriques sont essentiels au fonctionnement utile d’un ordinateur : la m´
emoire vive et la
m´
emoire de masse. La m´
emoire vive est rapide et volatile ; elle permet de stocker l’´
etat actuel de la ma-
chine et les donn´
ees sur lesquelles on est en train de travailler. La m´
emoire de masse est plus lente mais non
volatile, et permet de sauvegarder des donn´
ees sur un temps long.
Pour interagir avec l’ext´
erieur, la carte m`
ere a besoin d’autres p´
eriph´
eriques. Ce sont des interfaces entre
le processeur et le monde ext´
erieur. Pour permettre le dialogue entre ces entit´
es, on met en place des bus
d´
ecrits par un protocole standard. Un bus contient 3 fonctions principales : une fonction de contrˆ
ole pour
synchroniser les ´
echanges ; une fonction d’adressage pour indiquer l’adresse (pixel sur l’´
ecran, fichier sur
un DD, . . . ) qu’on lit ou ´
ecrit ; et une fonction de lecture ou ´
ecriture de donn´
ees.
Les premiers ordinateurs ´
etaient programm´
es par cˆ
ablage direct des fils par des op´
erateurs ! Puis on a
progress´
e :
premier ´
ecran cathodique en 1958 (MIT + IBM : Semi Automatic Ground Environnement de l’US Air
Force)
utilisation de cartes perfor´
ees pour coder les programmes en 1952 (IBM)
premier ordinateur produit en grand volume avec un clavier et un ´
ecran de 12 lignes en 1964 (IBM
2260)
invention de la souris en 1968 par D.Engelbart
premier ´
ecran tactile lanc´
e par IBM en 1972
introduction des bandes magn´
etiques en 1973, puis des lecteurs de disquettes, disques durs. . .
1. Hormis les ordinateurs analogiques, tr`
es particuliers et non trait´
es ici.
1
L’utilisation de ces p´
eriph´
eriques est int´
egr´
ee au sein d’un logiciel qui assure la coordination des actions :
si on clique ici, c¸a affiche c¸a,. . . En gros, un logiciel comporte deux types de tˆ
aches : des algorithmes (tˆ
aches
d´
efinies `
a l’avance, comme un calcul) et des interfaces utilisateurs (r´
eactions `
a des actions de l’utilisateur).
L’interaction se faisant `
a travers des p´
eriph´
eriques de plus en plus d´
evelopp´
es et donc compliqu´
es, de
nombreuses tˆ
aches fastidieuses et r´
ep´
etitives apparaissent ; on les code alors une fois pour toute sous forme
de librairies. Par exemple, avec l’apparition des ´
ecrans, de nouvelles possibilit´
es sont explor´
ees :
´
Ecriture de texte
– Trac´
e de formes g´
eom´
etriques (carr´
es, lignes, cercles,. . . )
Affichage d’images
Dessins en 3D
. . .
Une librairie rassemble des capacit´
es qu’on peut utiliser via un petit ensemble de commandes appel´
ees API
(Application Programming Interface). Par exemple une librairie d’´
ecriture de texte `
a l’´
ecran va sp´
ecifier
quelle commande utiliser pour ´
ecrire un texte, quelle commande pour changer la couleur, . . .
Un programme utilise alors uniquement des commandes de librairies pour g´
erer les fonctions complexes
de l’ordinateur. Souvent les librairies utilisent d’autres librairies : on parle alors de couches logicielles
(tableau 1)
Couche logicielle Fonction
Programme R´
ealise les actions sp´
ecifiques `
a l’application
Librairie GTK G`
ere les objets graphiques (widgets)
Gestionnaire de fenˆ
etres G`
ere la position, la taille, la visibilit´
e, . . . des fenˆ
etres
Serveur X11 G`
ere l’affichage `
a l’´
ecran
Noyau G`
ere les fonctions de base
TABLE 1 – Sch´
ema simplifi´
e des couches logicielles d’une application graphique simple sous Linux
Au cours du temps, certaines librairies s’imposent comme des standards ; elle sont alors parfois directe-
ment int´
egr´
ees dans les cartes logiques des ordinateurs. Par exemple, de plus en plus de fonctions graphiques
comme la 3D, l’alpha-blending,. . . sont impl´
ement´
ees dans les cartes graphiques.
2 La programmation d’un ordinateur
Qu’apporte un langage de programmation ?
2.1 La gestion de la m´
emoire
Un processeur ne connaˆ
ıt que le langage machine sous forme de codes compliqu´
es. Une programmation
directe en langage machine est possible grˆ
ace `
a l’assembleur. Il permet d’´
ecrire les instruction machine
sous une forme `
a peu pr`
es compr´
ehensible (pour un angliciste). C’est le plus simple des langages de pro-
grammation, qui g`
ere l’organisation de la m´
emoire. On peut lui dire ”r´
eserve moi 2 octets de m´
emoire sous
le nom index”, et il se d´
ebrouillera pour le faire.
La machine manipule des donn´
ees sans rien comprendre `
a ce qu’elle fait. L’assembleur n’en fait pas plus.
Les donn´
ees n’ont pas de type. Par exemple, dans un emplacement de la m´
emoire se trouvera la chaˆ
ıne de
donn´
ees 01000101 10001110 ; qu’est-ce que c¸a veut dire ? Il y a plein de fac¸on de lire c¸a, tout d´
epend le
sens qu’on y a mis quand on l’a ´
ecrit.
Un langage de programmation va permettre de g´
erer les types de donn´
ees. Dans un langage typ´
e comme
C, JAVA, . . . , on d´
eclare une variable en indiquant de quel type elle sera ; dans un langage non typ´
e (ou
typ´
e dynamiquement) comme Python, Ruby, Javascript,. . . , la valeur qu’on donne `
a une variable permet de
connaˆ
ıtre son type.
Chaque adresse de la m´
emoire peut contenir des informations. Le d´
eclaration de variables permet de
savoir quel type d’information y sera stock´
e. Un langage de programmation doit aussi permettre de lib´
erer
2
la m´
emoire quand on n’en a plus besoin, de changer la taille de m´
emoire utilis´
ee au fur et `
a mesure du
d´
eroulement du programme,. . .
En Assembleur, on peut ´
ecrire n’importe quoi n’importe o`
u. C’est tr`
es rapide, surtout pour tout faire
planter. Dans un langage comme le C, on r´
eserve de la m´
emoire quand on en a besoin, et on peut la lib´
erer
(via des commandes allo/realloc/malloc/free). En Python, la m´
emoire est r´
eserv´
ee quand on en a besoin,
et un ramasse-miettes (Garbage Collector) se charge de rep´
erer les variables qui ne servent plus et de lib´
erer
la m´
emoire correspondante. C’est pratique pour le programmeur, mais coˆ
uteux en performances et am`
ene
des probl`
emes de pertes de m´
emoires (Memory Leak).
2.2 La gestion des branchements conditionnels et des boucles
La gestion des conditions et des boucles est un des points o`
u un langage de programmation am`
ene le
plus d’am´
eliorations. Les langages de haut niveau comme Python apportent en plus la notion de boucle sur
un tableau (ou tout autre objet it´
erable) qui facilite l’´
ecriture.
Deux exemples suivent pour montrer ce qu’est une boucle et un test en C et Python, et aussi que c’est
incompr´
ehensible en assembleur.
2.3 Les paradigmes de programmation
Il existe plusieurs fac¸ons d’indiquer `
a un langage de programmation ce qu’on veut faire. La fac¸on la plus
naturelle est le paradigme imp´
eratif, dans lequel on indique des commande `
a la suite les unes des autres.
Il en existe d’autres, Python en impl´
emente beaucoup, en particulier le paradigme objet qui est tr`
es
courant. Il s’agit de d´
eclarer des objets avec leurs caract´
eristiques et ce qu’ils savent faire. L’interpr´
eteur
s’occupe alors de faire vivreces objets.
3 Syst`
emes de fichiers
3.1 Notions g´
en´
erales sur les fichiers
Les fichiers sont des espaces dans la m´
emoire de masse (disque dur,cl´
e USB,. . . ) contenant un certain
type d’information. Il a un nom qui est le plus souvent termin´
e par une extension indiquant le type de
contenu du fichier.
Il existe deux grandes fac¸ons de stocker du contenu dans un fichier : soit en ´
ecrivant du texte (fichier
texte), soit en ´
ecrivant une suite de valeurs, illisible (fichier binaire).
La partie sur les droits des fichiers est au programme. . . mais sous windows c’est la foire, tout le monde
peut ´
ecrire `
a peu pr`
es partout ou presque. Sous Linux c’est plus clair. Paragraphe `
a reprendre je pense.
Les fichiers sp´
eciaux : y en a-t-il d’autres ?
Les syst`
emes de fichiers sont des standards indiquant comment les fichiers vont ˆ
etre stock´
es sur le disque.
Le principal probl`
eme est de g´
erer la modification des fichiers : changement du nom, modification de la
taille, ajout de donn´
ees `
a la fin, . . . . De mani`
ere g´
en´
erale, les fichiers sont tous ´
eparpill´
es en plusieurs
morceaux sur le disque. Chaque syst`
eme de fichiers a ses avantages et ses inconv´
enients, le but principal
´
etant :
de garantir une vitesse de lecture/´
ecriture bonne (probl`
eme de fragmentation)
– d’ˆ
etre robuste : dans certains cas, une erreur de 1bit peut dans certains cas rendre tout le fichier illisible,
tandis que dans d’autres cas on peut s’en sortir.
3.2 Organisation g´
en´
erale des fichiers et r´
epertoires
Les fichiers sont rang´
es dans des boˆ
ıtes appel´
ees r´
epertoires (directory en anglais). Un r´
epertoire peut
contenir d’autres r´
epertoires. Le r´
epertoire qui contient tous les autres est la racine. Tout r´
epertoire contient
par d´
efaut deux r´
epertoires : .qui se repr´
esente lui-mˆ
eme, et .. qui repr´
esente le r´
epertoire parent (sauf
pour la racine).
3
Un fichier est repr´
esent´
e par son chemin absolu : c’est le chemin qui indique comment aller de la racine
jusqu’au fichier en passant par diff´
erents r´
epertoires. Mais dans de nombreux cas, un fichier a besoin d’en
appeler un autre situ´
e tout pr`
es, sans remonter `
a la racine. Le chemin relatif est alors tr`
es utile. En particulier,
si (dans l’exemple montr´
e) on d´
eplace rep1 `
a un autre emplacement, le chemin absolu change, mais le
chemin relatif reste.
Les diff´
erents disques peuvent correspondre `
a diverses racines : c’est le choix du syst`
eme Windows. Les
autres syst`
emes de type Unix choisissent un disque comme racine, et les autres disques sont mont´
es comme
des r´
epertoires.
Attention `
a la convention typographique : les r´
epertoires sont toujours s´
epar´
es par des slash / (sous Unix,
ou dans les URL des navigateurs internet) sauf sous Windows o`
u c’est un backslash \.
FTP : que faut-il en dire ?
3.3 Encodage des fichiers
Rien `
a ajouter, c¸a parle tout seul. On rencontrera surtout ces probl`
emes avec les lectures/´
ecritures de
fichiers (pour les BDD `
a la fin de l’ann´
ee, un peu aussi pour la sauvegarde de tableaux Numpy).
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !