CHAPITRE 1
Architecture des ordinateurs Avant d’attaquer la programmation à proprement parler, il est bon d’avoir quelques connaissances sur l’architecture d’un ordinateur. C’est pourquoi, ce premier cours d’informatique a pour objectif d’aborder la structure interne des machines. Il existe différents types d’ordinateurs : fixe, portable, netbook, ultrabook, serveur…. Ils se distinguent par les performances de leurs composants, c’est ce qui limite leurs domaines d’utilisation. Dans ce cours, nous allons prendre comme exemple l’unité centrale d’un PC de bureau classique et expliquer dans le détail la structure de cet ordinateur.
1. Le hardware
1.1. La boîte noire Commençons par regarder l’extérieur de l’unité centrale de l’ordinateur :
2 Chapitre 1 : Architecture des ordinateurs
1.2. Les ports de communication externes
Les équipements qui sont raccordés à l’unité centrale sont appelés périphériques. Ils existent deux types de périphériques : -‐ les périphériques d’entrées : micro, clavier, souris, tablette graphique… -‐ les périphériques de sortie : haut-‐parleurs, écran, imprimante… Les ports de communications externes sont les emplacements permettant de brancher les périphériques. Ils se trouvent généralement à l’arrière de l’unité centrale.
On distingue deux grandes familles de connections suivant la méthode de transmission : -‐ les ports séries (RS232, RS432, RS485, USB, firewire…), qui envoient le signal sur une ligne de communication, chaque bit les uns après les autres et encadrés par des bits de contrôle. Le port série permet un transfert simultané entre les deux équipements. Le port série utilise deux fils conducteurs, et au moins un fil de tension de référence et un fil de masse.
-‐ les ports parallèles, où les données sont transférées en parallèle par octets, soit 8 bits en même temps, voire par paquet d’octets (8,16,24,32… bits en même temps). Le port parallèle est bidirectionnel (c’est-‐à-‐dire qu’il peut émettre et recevoir des informations) mais, contrairement au port série, ne permet pas de transferts simultanés.
Même si le transfert de données par port parallèle semble plus rapide, le port série présente de nombreux avantages : réduction du nombre de fils, vérification des données envoyées plus fiable, mode de communication moins sujet aux perturbations électromagnétiques…
• Port USB
Le port USB (pour Universal Serial Bus) est un port série qui a révolutionné les connectiques ordinateur -‐ périphériques, en instaurant un environnement tout USB uniformisant les modes de communication avec l’ordinateur. Aujourd’hui, c’est sans doute le port de communication le plus utilisé. Ses principaux concurrents sont désormais les protocoles de communication sans fil (Bluetooth et WiFi).
Version USB 1.0 USB 1.1 USB 2.0 USB 3.0 Débit 0,19 Mo/s 1,5 Mo/s 60 Mo/s 600 Mo/s
Chapitre 1 : Architecture des ordinateurs 3
• Ports de sortie vidéo
Il existe trois types de ports vidéo : -‐ port VGA (Video Graphics Array), port de type analogique -‐ port DVI (Digital Visual Interface), port de type numérique non HD apportant une amélioration en
terme de réduction du bruit par rapport au connecteur VGA analogique -‐ port HDMI (High Definition Multimedia Interface), port permettant la transmission des signaux au
format HD.
Les ports de communications sont généralement désignés par IO (ou I/O pour Input/Output) en programmation.
1.3. L’intérieur de la boîte noire Ouvrons maintenant le boîtier :
1.4. L’alimentation et le refroidissement
L’alimentation fournit la puissance nécessaire au bon fonctionnement des différents composants de l’ordinateur. Selon le format de la carte mère, les tensions à fournir peuvent varier (± 12 Volts, 5 Volts, 3,3 Volts…).
Les différents composants d’un ordinateur dissipent de la chaleur par effet Joule qu’il faut évacuer par un système de refroidissement. Il existe trois méthodes : -‐ les radiateurs à ailettes -‐ les ventilateurs -‐ les systèmes de refroidissement liquides.
�����������������/
��������
4���������������������������
�������
��������
=�2
�����C����
������������!���������
��� ������
4 Chapitre 1 : Architecture des ordinateurs
1.5. La carte mère
La carte mère (ou MB pour Mother Board) est l'élément central de l'architecture d'un ordinateur. C’est sur cet élément que sont soudés les composants essentiels : -‐ le BIOS -‐ le chipset -‐ le microprocesseur -‐ la mémoire vive (RAM) -‐ l'horloge interne -‐ la mémoire CMOS -‐ une carte graphique intégrée -‐ une carte son intégrée -‐ un ensemble de contrôleurs d'entrées/sorties aux rôles divers (communications avec le disque
dur, les ports d'entrée/sortie… ) -‐ des cartes d'extensions Il existe de nombreuses tailles de carte mère ; les formats obéissent à des standards qui définissent les dimensions et l’agencement des composants. Au cœur du système PC, la carte mère doit assurer la communication entre les divers constituants de la machine. Voici l'architecture standard :
• Le BIOS
La carte mère est pilotée par un logiciel interne qui gère le bon fonctionnement de celle-‐ci, c’est le BIOS (Basic Input/Output System). Le BIOS s’exécute lors de la mise sous tension de la carte mère, indépendamment de la présence d’un système d’exploitation (ou OS pour Operating System). A la mise sous tension, le BIOS effectue le POST (Power-‐On Self Test), c’est-‐à-‐dire qu’il vérifie l’intégrité des différents composants avant le démarrage (boot) d’un système d’exploitation et informe l’utilisateur en cas d’anomalie. Un fois le POST effectué, le système va chercher un processus de démarrage sur les périphériques de stockage indiqué dans le BIOS pour pouvoir démarrer sur un système d’exploitation.
Chapitre 1 : Architecture des ordinateurs 5
• Le chipset
Comme le présente le schéma ci-‐dessus, le centre névralgique de la carte mère est constitué du chipset. Celui-‐ci est constitué de deux entités : le North Bridge et le South Bridge. Leurs rôles respectifs sont résumés dans le tableau ci-‐dessous.
Chipset Description
North Bridge Gère les échanges entre le processeur, la mémoire et le bus graphique.
South Bridge
Gère les échanges avec les disques durs, le lecteur DVD, les cartes d’extension (par exemple, carte son ou carte graphique non intégrées), l’horloge, la mémoire CMOS, les ports USB, FireWire, le réseau.
Les circuits North Bridge et South Bridge sont reliés entre eux par un bus très rapide (en informatique, on désigne par bus un ensemble de fils support de l’information). Ces deux circuits peuvent être séparés dans deux circuits différents ou rassemblés dans une seule puce.
• Le microprocesseur
Le microprocesseur (ou CPU pour Central Processing Unit) est le cœur de l’ordinateur puisqu’il assure la fonction unité de traitement en exécutant les programmes stockés en mémoire principale. Les programmes sont structurés en une séquence d'instructions. Pour exécuter ces programmes, le microprocesseur : -‐ charge les instructions -‐ décode les instructions -‐ exécute séquentiellement les instructions.
Un microprocesseur est composé : -‐ d’une unité de commande qui joue le rôle de chef d’orchestre : elle va chercher les instructions
dans la mémoire principale, puis les charge et les décode -‐ d’une Unité Arithmétique et Logique (UAL) qui exécute les opérations -‐ de registres mémoires, petites mémoires rapides utilisées par l’UAL, qui permettent de stocker
les résultats temporaires et des informations de commande. L'intérêt de disposer d'une mémoire interne au microprocesseur est que, du fait de sa proximité et de son intégration dans la même puce, les accès à cette mémoire sont extrêmement rapides. Elle participe donc à l'amélioration des performances du microprocesseur, donc du système lui-‐même. -‐ d’une unité d’entrée/sortie, qui permet la communication avec la mémoire principale de
l’ordinateur, le disque dur et les différents périphériques.
6 Chapitre 1 : Architecture des ordinateurs
Le rôle des différents composants du microprocesseur est résumé sur la figure ci-‐dessous :
On peut caractériser les performances d’un microprocesseur grâce aux éléments suivants : -‐ la fréquence d’horloge (les fameux GHz) -‐ le nombre de cœurs qui travaillent en parallèle (les fameux multi-‐core) -‐ la taille de sa mémoire cache -‐ la consommation électrique -‐ le mode de connexion à la carte mère
La loi de Moore, établie par Gordon Moore (cofondateur d'Intel) en 1965, prévoit que la densité d'intégration des transistors doublera tout les 18 mois et ce jusqu'en 1975. La courbe ci-‐dessous donne l'évolution de la densité d'intégration sur les 40 dernières années. Par là-‐même, elle définit également l'évolution de la puissance des processeurs mais également de la mémoire.
• La mémoire vive (RAM)
La mémoire vive (RAM) de l’ordinateur est constituée de barrettes placées directement sur la carte mère. Ces barrettes permettent de stocker le flux de données que le microprocesseur doit traiter et se caractérisent par une très grande rapidité d’accès. Néanmoins, ce stockage est volatile, dans le sens où toutes les données de cette mémoire sont perdues dès que l’ordinateur n’est plus sous tension.
����������������� �����������
������� ��
� E������2����
E��������2����%��� �������D������2�����"�������������!�����%���������
��(�������$����5>IH%��������� ��������������!�������������������������
��� �������������5:�����������&�� �!���5>KH�
E����� ����(���������������!������������������������!������������������
G8�����������������
4� � �'(J�% � ���� � ������� � ���� � �!��������� � �� � � � �������� � ���
����������������������������������
1��+����2����������(�34-,� 5<678
Chapitre 1 : Architecture des ordinateurs 7
On nomme la RAM mémoire "vive" par opposition à la mémoire dite "morte", ou ROM.
Type de mémoire Définition Caractéristiques
ROM
Read Only Memory
(mémoire en lecture seule)
Dans les mémoires ROM, le contenu perdure malgré l'absence d'alimentation. Elles sont donc très utiles pour stocker les programmes et informations de démarrage (BIOS, Setup CMOS, POST). Temps d’accès : quelques dizaines de nanosecondes. Capacités : plusieurs To
RAM
Random Access Memory
(mémoire à accès aléatoire)
Les mémoires de type RAM sont des mémoires dont le contenu disparaît en absence d'alimentation. Elles sont utilisées comme mémoire de travail du système. Les mémoires Cache sont également des RAM. Temps d'accès : quelques nanosecondes. Capacité : de l'ordre de quelques Go.
1.6. Le disque dur
• Le disque dur magnétique
Le disque dur (ou HDD pour Hard Disk Drive) doit son nom à sa technologie, à l'époque où existaient encore les disques souples, ou disquettes. Sa constitution est détaillée de façon simplifiée sur la figure annotée ci-‐dessous.
����������������� �����������
������� ��
�*���1'1����&�&�
E������������"�=�2�$�����!����������������������������������� ���������B�����
����������������������������������������������������������������"�=B2�$�
�40� �'3� ���� ������'�����2���
��#
���� %4#�1��4
"�2����������������
������$
?������ �����% � ��� �=B2 �������
������������ � ��� � ������ � ��
������� � ������ � E��� � ������
�������������� � ��� �=�2���� � ��
���� � ������� � ������� � ����
�! ����� � �!���������� � A����
������ � ���� � �� � �#���� � ����
������ � ���� � ����0�� � ���
������� � �� � ���������� � ��
�������"�9�B-%�-������2B-%���
4B-,�"���*�������+�)��$�$��2����������������������������������
'������(���
�����������% � �� � ������� � �� � ����
������������AA4=B2�"�A����������
A�� ���4���� ���=B2�$�
E�������������=B2�.
-� � �!��������� � =B2 � ������� � ��
������������������������������"
�����������(�������$% �����������
�� �����.
(�������(=B2%������C�(=B2
1��+����2����������(�34-,� 5G678
=�2���������-EB,- 9����������=�2�����������-EB,
����������������� �����������
������� ��
(�����9��������������=B2( � ��� ���� ��� ����� � ���� ���� �=B2"�����������������$(�����--�����������=B2( � ��� � ����� � 3-9 � ���� � ��� � =B2"������������$
��10� ����5�6 4��� � ��� � ����=B2 ��� � ���� � �� � ������ � �����������������9�B-�������2B-%���������!�������������!��������� ��� �����Q���������������������0����'�6� ������ � ����� � ��������� � ��������� � " � ����% � --�%�����$�
��#
�� �1������#�1��4
"�2������'�������������$
E�� ������� ��� � ���� �=�2� �����������������������������%��!���' ����� ����� � �� �������� ������S���� �������!����������A���� � ���� ���������� � ���(�)� ������� � 4� � �� � ����� � �������������������� � ��� � ����� � �������������������E�������������������������������=�2�3���������������������������������=B2��������������� ��������������������� � " � �� � �� � �����!���� �$ ���� �=�2��E� ��� ���������������������������=�2�������������� ������������������ �� � ���� � � � =B2� � E � �������������� ��� ���� � ��� ��������������������������������������10� ����5�6� ��� �����������������0����'6 ����!��������� ��� ���D��
1��+����2����������(�34-,� 5H678
����������������� �����������
������� ��
�7�����2����
�7�������2����1�, '��2��
E����� �������"�?���.�?������0����������������$�������������'��������������' � �!��� ����T��#����� ������� � ��� ���� ��� ��������% ������ �������- � ������������ � ��� � �������� � �� � �+�� � ��������� � ��� � � � ���������������(��������B� � ������� � ������� � �� � ��� �� � ��� � �� � ����� � �� � ���% � �����������������������=�2��� ���� � ����� �' � � ������������ ���������M���� ��� ���� ������ � �� � �!������������ � �������������
1��+����2����������(�34-,� 5I678
�%�����8��2��9
�:��1�����
�;���%������
�� ����������
�� ��������%�1� �����
4��������� ��� ���� ����� ����������%� ��������������� ��� 7� �J���� ��� �������6���������������������U�����������V�
��������� ������������������ ���-�,�����'���������������
8 Chapitre 1 : Architecture des ordinateurs ����������������� �����������
������� ��
� 4������������������������
���������(������%������� ���������������������������������������#��������������
���� ��%����������������������������������S����������������������������E���
�����������������������������������������������������"�HG88�=42%�K788�=42%�58�888�=42%
5H�888�=42�$�
�� �����������������������"�������������$��!����������������"� ��� �����������$
����0������������������ ��������E����J�������������������� ��������������!�����'
���������������
� ������������������������ ��������
������������������������ ���������
��#<�=>?<��0����'6�%������#�
��0����' � '� !�-��2�� � #�5%� ���%%�
G�,� 7855 ?����� KWG888 <%H!!
<�,� 7858 -���� <%H!!
7�,� 788> /������������� �����D�����/�78A��- <%H!!
5�,� 788K ?����� ���0����KW5888 <%H!!
H88�D� 788H ?����� <%H!!
7H�D� 5>>: �92 ���0����7H�D4 K%8!!
5�87�D� 5>:7 ?����� ?:H>: 5G!!
7:�2� 5>I7 �92 2������5<85
H�2� 5>HI �92 <8H�=�2�� 7G!!
1��+����2����������(�34-,� 5K678
On désigne souvent le disque dur par mémoire de masse, en comparaison avec la mémoire RAM. Il est relié à la carte mère par un contrôleur de disque dur qui l'interface avec le processeur.
Principe de fonctionnement : Le disque dur magnétique est constitué de plusieurs plateaux superposés (en céramique, en verre ou en métal). Ils sont entraînés en rotation par un moteur, à des vitesses de plusieurs milliers de tours par seconde (5400 à 15 000 RPM). Chaque plateau est recouvert (recto et verso) d’une fine couche (à peine quelques microns) stockant des informations binaires. Les têtes de lecture magnétique permettent l’accès à ces informations. Capacités actuelles des disques durs : Nous sommes loin des premiers disques durs…
Capacité Année Fabriquant Taille 4 To 2011 Hitachi 3,5 " 3 To 2010 Seagate 3,5 " 2 To 2009 Western Digital 3,5 " 1 To 2007 Hitachi 3,5 " 500 Go 2005 Hitachi 3,5 " 25 Go 1998 IBM 7,0 " 1 Go 1982 Hitachi 14 " 28 Mo 1962 IBM 20 " 5 Mo 1956 IBM 24 "
• Le disque dur SSD
Le disque dur SSD (pour Solid State Drive) est basé sur la technologie des mémoires flash. Le SSD est en voie de démocratisation et constitue a priori l'avenir du stockage de masse pour plusieurs raisons. Le tableau ci-‐dessous propose un comparatif sommaire :
Caractéristiques Disque HDD Disque SSD Temps d’accès ~ 12 ms ~ 0,1 ms
Poids 400 à 700 g 10 à 50 g Consommation en veille ~ 1 W ~ 100 mW Consommation en activité ~ 4 W ~ 900 mW
Bruit 0 dB ~ 40 dB
Les chiffres sont donc sans appel : le SSD représente l'avenir. Trois critères sont néanmoins en sa défaveur :
-‐ son prix (presque 10 fois plus cher au Go que le disque mécanique) -‐ certaines technologies de SSD présentent une usure rapide -‐ leurs technologies sont limitées en nombre de cycles lecture/écriture
2. Le software On a décrit jusqu’ici le fonctionnement du matériel constituant un ordinateur. Ce dernier sert à exécuter un programme ; il stocke des données et les instructions du programme dans la mémoire de masse. Or, en pratique, on n’utilise pas un mais plusieurs programmes, souvent simultanément : navigateur internet, logiciel de courrier électronique, traitement de texte, tableur, outil de présentation, lecteur de vidéos, jeux... Si différents outils doivent stocker des informations sur le disque dur, il convient qu’ils le fassent de façon coordonnée, afin que chacun sache où aller lire et écrire les données le concernant.
Chapitre 1 : Architecture des ordinateurs 9
Comment la machine fait-‐elle pour savoir où les programmes sont stockés ? Et pour les lancer ? Comment ces programmes savent-‐ils ensuite où stocker leurs données ? Répondre à ces questions est le rôle du système d’exploitation. Il s’agit d’un programme chargé en mémoire vive dès le démarrage de l’ordinateur et qui y reste jusqu’à l’extinction de la machine et qui a pour but de lancer les différents logiciels de l’utilisateur. Le terme software représente à la fois les systèmes d’exploitation et les logiciels.
2.1. Le système d’exploitation
Un système d’exploitation est un ensemble de programmes qui dirige l’utilisation des capacités d'un ordinateur par des logiciels et gère l’organisation du disque dur et de ses fichiers. Il reçoit, de la part des logiciels, des demandes d'utilisation des capacités de l'ordinateur : capacité de stockage des différentes mémoires, capacité de calcul du processeur… Le système d'exploitation accepte ou refuse de telles demandes, puis réserve ces ressources pour éviter que leurs utilisations n'interfèrent avec d'autres demandes provenant d'autres logiciels. Le système d’exploitation identifie et gère également les différents utilisateurs, leurs dossiers personnels et leurs droits en lecture, écriture, exécution.
En pratique : Il existe deux grandes familles de systèmes d’exploitation : 1. Les systèmes d’exploitation issus d’Unix (Mac OS X, iOS, GNU/Linux, Android…). Dans tous les domaines (sauf celui des ordinateurs personnels) les systèmes issus d’Unix sont majoritaires. Et parmi eux, Linux se taille la part du lion : depuis sa création il y a 20 ans, Linux s’est imposé comme un système universel puisqu’il équipe aussi bien les téléphones portables que les boîtiers prêtés par les fournisseurs d’accès à Internet (Freebox, Livebox, Neufbox), les ordinateurs personnels (notamment sous la forme Ubuntu/GNU Linux), les serveurs web et les supercalculateurs (plus de 90 % des calculateurs du TOP 500). 2. Les systèmes d’exploitation de la famille Microsoft Windows. Ils se sont imposés grâce aux pratiques commerciales très agressives de Microsoft et sont en situation de quasi-‐monopole sur les ordinateurs personnels depuis près de deux décennies puisqu’ils en équipent près de 90 %.
Le système d’exploitation a les responsabilités suivantes : • donner l’illusion que l’ordinateur est multitâche • identifier les utilisateurs • gérer l’organisation du disque dur et de ses fichiers • contrôler l’accès aux données du disque et aux autres ressources de l’ordinateur • gérer le lancement des différentes applications utilisées • servir de garde-‐fou en cas de tentative de mauvaise utilisation des ressources de l’ordinateur
• Le multitâche
On a vu qu’un ordinateur ne peut exécuter qu’une instruction à la fois. Pourtant, le système d’exploitation permet d’exécuter plusieurs programmes en même temps. Plus exactement, il donne l’illusion que l’on exécute plusieurs programmes en même temps.
En pratique : Certains ordinateurs exécutent réellement plusieurs instructions simultanément. Ils sont dotés de plusieurs processeurs capables d’accéder indépendamment à la mémoire et aux périphériques. Les fabricants de processeurs proposent même des processeurs qui contiennent plusieurs cœurs (dualcore, quadricore), c’est-‐à-‐dire que plusieurs processeurs ont été regroupés en un seul.
10 Chapitre 1 : Architecture des ordinateurs
Pour donner cette illusion, le système d’exploitation stocke en mémoire les différentes applications que l’on veut exécuter. Il lance l’exécution d’une première application. Dès qu’il se produit une entrée/sortie ou, à défaut, lorsqu’un certain temps est écoulé (de l’ordre de la centaine de millisecondes), le noyau du système d‘exploitation reprend la main et lance l’exécution d’une autre application. En pratique le temps d’exécution d’une tâche dépasse rarement la dizaine de millisecondes. De façon schématique, voici ce qui se passe lorsque l’on tape un texte sur un ordinateur tout en lui faisant jouer une fugue de Bach à l’aide d’une application de lecture audio. Le noyau du système d’exploitation commence par exemple à exécuter l’application de lecture audio, qui envoie sur le périphérique son quelques notes. Pendant que les données sont écrites, le noyau passe la main à une autre application. Survient alors un événement : l’utilisateur vient de taper sur une touche du clavier. Le noyau reprend alors le contrôle. Il sait que le traitement de texte était en attente de cet événement : il lui passe donc la main. Celui-‐ci affiche la lettre tapée à l’écran et se remet en attente d’un autre caractère. Le noyau reprend donc la main pour la passer à une autre application en attente. Après quelques instants, survient alors un nouvel événement : le périphérique son signale que toutes les données ont été écrites. Le noyau passe alors de nouveau la main à l’application de lecture audio, qui envoie de nouveau quelques notes de la fugue sur le périphérique. De nouveau le noyau passe la main à une autre application, etc. Tout cela s’est déroulé en quelques dizaines de millisecondes tout au plus.
• L’identification des utilisateurs
Les systèmes d’exploitation (Unix comme Windows®) sont multi-‐utilisateurs : chaque utilisateur dispose d’un identifiant auprès du système (et, en général, d’un mot de passe associé), correspondant à un compte utilisateur. Un utilisateur est de plus membre d’un ou plusieurs groupe(s) d’utilisateurs, ce qui lui confère certains droits vis-‐à-‐vis du système informatique. Après avoir démarré l’ordinateur, l’ordinateur présente un écran de connexion. L’utilisateur inscrit alors son identifiant, puis son mot de passe. Le système d’exploitation le reconnaît comme un identifiant valide, vérifie que le mot de passe correspond à cet identifiant et lance un programme (ou un ensemble de programmes) qu’on appelle parfois shell. Sur les systèmes d’exploitation récents, ce shell se présente sous forme d’une interface graphique permettant à l’utilisateur de lancer les applications qu’il veut utiliser (navigateur web, gestionnaire de fichiers, suite bureautique, environnement de développement Python, l’application qu’il a programmée en Python...). Il existe aussi des shells en mode texte, qu’on appelle interprètes de commandes : ces programmes attendent une commande de l’utilisateur sous forme d’une ligne de texte, l’exécutent, attendent de nouveau une commande, l’exécutent, etc. Ils étaient historiquement utilisés sur des terminaux en mode texte, c’est-‐à-‐dire une combinaison d’un clavier et d’un écran incapable d’afficher autre chose que du texte (généralement en vert sur fond noir). Aujourd’hui, ils ont quasiment disparu, mais tous les systèmes Unix proposent des émulateurs de terminaux.
• Système de fichiers
La mémoire de masse est généralement organisée en un système de fichiers qui permet aux utilisateurs d’enregistrer leurs données et leurs programmes. Le nombre de fichiers est généralement très élevé : plusieurs centaines de milliers pour les programmes installés sur un ordinateur de bureau. Ils sont organisés en une structure arborescente de répertoires. Du point de vue de l’utilisateur, un répertoire est un ensemble de fichiers et de sous-‐répertoires, désignés par des noms.
Chapitre 1 : Architecture des ordinateurs 11
SAVOIR-‐FAIRE : Utiliser un système de fichiers
Dans un système de fichiers préexistant, il faut savoir : • se repérer dans l’arborescence • se déplacer dans l’arborescence, au moyen des fenêtres ou d’un commande (cd dans la plupart des systèmes d’exploitation). Selon l’endroit où l’on souhaite se rendre, il faudra descendre dans des sous-‐répertoires ou au contraire remonter dans un répertoire parent.
Dans les systèmes d’exploitation Windows®, les différents disques (C:, D:, etc.) ont chacun leur propre système de fichiers, et pour séparer un nom de fichier du répertoire qui le contient on utilise la notation a\b. À l’intérieur de chaque disque, le principe d’organisation sous forme d’une arborescence de répertoires reste le même.
2.2. Logiciels
Un logiciel ou application est un programme destiné à réaliser des actions précises. Par exemple, le bloc-‐ notes de Windows® est un petit logiciel qui permet d'éditer du texte. Il a été codé (c'est-‐à-‐dire conçu) spécifiquement pour ce système d'exploitation dans le but de réaliser cette tâche.
SAVOIR-‐FAIRE : Lancer des applications
Pour lancer une application (un programme), on a deux possibilités : • cliquer sur l’icône de l’application (sur le bureau ou dans la barre des tâches). Cette méthode offre l’avantage d’être très intuitive.
• Taper une commande dans un shell en mode texte. Dès que l’on veut exprimer des commandes plus complexes, cette méthode s’avère quasi incontournable.
Le shell graphique rend transparentes pour l’utilisateur les étapes du lancement d’une application. Pour démarrer par exemple Open Office, l’utilisateur clique sur un bouton pour faire apparaître un menu dans lequel il choisit l’application. Le shell graphique "sait" que le programme OpenOffice.org est installé. Plus précisément, il sait qu’un certain fichier (nommé ooffice) est exécutable par le système. Il demande donc au système d’exploitation d’exécuter ce programme. Ensuite, tout se passe comme si l’utilisateur avait tapé directement la commande ooffice dans l’interprète de commandes. Le système commence par vérifier que l’utilisateur a le droit d’exécuter le programme. Ensuite, le système réserve un espace dans la mémoire vive de l’ordinateur pour stocker les instructions du programme, ainsi que ses données. Il copie le contenu du fichier exécutable en mémoire. Celui-‐ci n’est qu’une suite de bits qui codent les instructions dans le langage du processeur (on dit que le programme est en langage machine), il peut donc les exécuter en effectuant un branchement vers les premières instructions du programme.
3. Langages de programmation
3.1. Les différents langages de programmation
Il existe deux types de langage de programmation : les langages interprétés et les langages compilés.
• Les langages interprétés
Les langages interprétés sont traduits en langage machine, à la volée, par un programme : ils ne sont
12 Chapitre 1 : Architecture des ordinateurs
donc pas exécutés directement par la machine. L’avantage des langages interprétés est qu’il n’est pas nécessaire de compiler son code pour chaque système d’exploitation ; il suffit d’installer le programme interpréteur sur votre machine et votre code marchera ! En revanche, un langage interprété est beaucoup plus lent qu’un langage compilé. Exemples : PHP, JavaScript, RUBY, Python…
• Les langages compilés
Les langages compilés sont directement exécutés par la machine. Le code source (c’est-‐à-‐dire le fichier où vous avez écrit votre code) va être compilé par un programme spécial, nommé le compilateur, qui va générer un exécutable, qui pourra fonctionner tout seul. Ici pas d’intermédiaire entre la machine et le programme, le code s’exécute donc plus rapidement. Par contre, il est bien plus compliqué à diffuser car la compilation dépend de l’architecture du processeur, du système d’exploitation… Exemples : C, C++, COBOL, FORTRAN…
3.2. Environnement de développement intégré
Un ordinateur est donc une machine universelle, sur laquelle tout utilisateur a la capacité d’écrire et d’exécuter un programme, dans les limites fixées par le système d’exploitation. Il serait cependant assez ardu de produire des programmes complexes s’il n’existait pas des moyens adaptés pour les développer. Cette section présente une famille de logiciels qui ont pour seul but de faciliter la conception de programmes, en fournissant dans un cadre unique la plupart des outils dont peut avoir besoin un programmateur.
On appelle environnement de développement intégré (abrégé en IDE) un logiciel qui permet : • d’écrire des programmes dans un éditeur adapté au langage • d’exécuter les programmes écrits • de corriger/débogueur les erreurs dans ces programmes • éventuellement de consulter de la documentation Il existe de nombreux logiciels de ce type, chacun ayant ses particularités : spécifique à un langage de programmation ou générique, léger ou complet… Cependant, tous fonctionnent de façon similaire : l’essentiel est de comprendre les principes généraux et de choisir un IDE avec lequel on travaille confortablement.
Les outils ci-‐après à titre d’exemple sont tous gratuits et fonctionnent sur le principe du logiciel libre :
• IDLE : fourni avec la distribution standard de Python, il est particulièrement sobre, donc suffisant pour une utilisation basique de Python.
• Eclipse : plus lourd à manipuler, il possède des plugins pour à peu près n’importe quel langage de programmation et pourra donc intéresser les personnes qui souhaitent utiliser le même IDE dans différents contextes.
• Emacs ou Vim : ce sont des éditeurs de texte qui peuvent être étendus pour exécuter des programmes Python, ou même d’autres langages. Si cette solution a l’avantage d’être particulièrement légère, elle est évidemment très dépouillée et n’est pas forcèment facile à prendre en main.
Chapitre 1 : Architecture des ordinateurs 13
Cette année, nous utiliserons Spyder, qui est l’IDE fournit avec Python(x,y). L’avantage le plus significatif de Spyder par rapport aux autres distributions est que les bibliothèques utilisées sont fournies directement, ce qui en simplifie largement l’installation.
La fenêtre de Spyder est divisée en trois parties : • L’éditeur, à gauche, dans lequel on écrit les programmes. • L’explorateur, en haut à droite, qui est surtout utilisé comme débogueur, mais qui peut également servir de documentation.
• La console interactive, en bas à droite, dans laquelle s’exécutent les programmes.
• La console interactive
Au démarrage de Spyder, la console interactive affiche des informations sur la version de Python utilisée, ainsi que quelques fonctions d’aide. La dernière ligne, qui commence par In suive d’un nombre entre crochets, attend que l’on tape une commande : c’est le mode interactif de Python, où chaque ligne tapée est immédiatement exécutée. Ainsi, si l’on tape une expression, sa valeur s’affiche :
On appelle session de travail une suite d’instructions saisies dans une fenêtre Python interactive avec les réponses correspondantes. Il est possible d’enregistrer le contenu d’une session de travail à l’aide de la commande Enregistrer l’historique accessible par un clic droit dans la console.
☛✡✟✠
☛✡✟✠ ☛✡✟✠
☛✡✟✠
14 Chapitre 1 : Architecture des ordinateurs
Dans la console interactive, on peut utiliser des variables pour stocker des valeurs. L’affectation s’écrit avec le symbole = et n’affiche aucune valeur, mais la variable est mémorisé, ainsi que la valeur qu’on lui a donnée. L’avantage est qu’elle peut être utilisée dans la suite de la session.
Notons que si l’on utilise dans une expression une variable à laquelle on n’a jamais donné de valeur, une erreur se produit :
La dernière ligne de ce message indique plus précisément d’où vient l’erreur, ici de la variable b utilisée à tort. Enfin, il est possible de rappeler une ligne tapée précédemment à l’aide des flèches haut et bas, et de modifier cette ligne avant de relancer son calcul avec Entrée. A chaque nouvelle session, les valeurs des variables sont perdues. Les sessions interactives sont donc à réserver pour tester très rapidement l’évaluation de quelques expressions que l’on ne souhaite pas conserver par la suite.
• L’éditeur
Dès que l’on veut écrire un programme, ou même tout simplement une suite d’instructions dont on veut garder une trace, on utilise l’éditeur. Voici un premier programme Python à tester :
On observe déjà plusieurs différences par rapport au mode interactif : • les mots-‐clés du langage (comme print) se colorent pour ressortir sur le reste du texte • les chaînes de caractère (entre guillemets) se colorent également • lorsque l’on tape une parenthèse ouvrante, la parenthèse fermante correspondante se crée automatiquement et lorsque l’on place le curseur à droite d’une parenthèse, celle-‐ci se colore en rouge s’il manque la parenthèse correspondante et en vert sinon.
Ainsi, le programme écrit devient plus lisible et on évite de nombreuses fautes de frappe. Cependant, à ce stade, le programme n’est encore qu’un texte, une suite de caractères qui n’a pas de sens pour l’ordinateur. Pour que la machine exécute (on dit aussi interprète) les instructions que l’on a tapées, il faut le lui demander par la commande Exécution du menu du même nom (ou par le raccourci clavier F5). Les instructions sont alors lues et exécutées ; le résultat, lorsqu’il y en a un, s’affiche dans l’interpréteur interactif.
Chapitre 1 : Architecture des ordinateurs 15
SAVOIR-‐FAIRE : Utiliser un IDE
Le minimum pour utiliser un environnement de développement intégré est de savoir : • lancer l’IDE • ouvrir et enregistrer les programmes que l’on écrit • exécuter ces programmes • savoir se servir du débogueur
• Le débogueur
La fenêtre située en haut à droite de Spyder possède plusieurs onglets : • l’inspecteur d’objets fournit de l’aide sur un type ou sur une fonction • l’explorateur de variables indique la valeur de toutes les variables à tout moment • l’explorateur de fichiers parcourt les fichiers Python du système de fichiers.
Celui qui va servir plus particulièrement est l’onglet Explorateur de variables. Par exemple, après l’exécution du programme écrit plus haut, on retrouve dans l’explorateur la variable 𝑥 avec une valeur de 42. Si l’interpréteur interactif dans lequel on travaille est le même depuis le début, on y retrouvera également les variables 𝑎 et 𝑏 que l’on a affectées directement dans la console. Pour chercher une erreur dans un programme, ou tout simplement pour mieux comprendre son fonctionnement, il peut être utile de l’exécuter pas à pas. Si cela reste faisable de tête pour des programmes simples, il devient vite beaucoup plus commode de confier cette tâche à la machine. On prendra l’exemple suivant :
Après avoir recopié ce programme dans l’éditeur, au lieu de l’exécuter normalement, on appelle la commande Déboguer du menu Exécution. La première ligne du programme (x = 10) est surlignée et recopiée dans l’interpréteur, mais elle n’est pas encore exécutée : on peut le vérifier en constatant que x n’a pas la valeur 10 dans l’explorateur de variables. Pour exécuter cette ligne, on peut cliquer sur le bouton Pas en avant. La ligne est alors exécutée, x prend la valeur 10 et c’est la ligne suivante (y = 7) qui est surlignée. On peut ensuite continuer à exécuter les lignes les unes après les autres et surveiller l’évolution des différentes variables dans l’explorateur. Comme il est malcommode de cliquer sur un bouton pour chaque ligne alors que seules certaines posent problème, on peut fixer des points d’arrêts dans le programme. Pour cela, on se place sur la ligne à laquelle on désire faire une pause et on choisit Ajouter un point d’arrêt dans le menu Exécution (raccourci F12). On peut également double-‐cliquer dans la marge gauche du programme ; le symbole ! s’affiche alors en face de cette ligne. Par exemple, dans le programme précédent, il peut être judicieux de placer un point d’arrêt à la dernière ligne, dans laquelle risque de se produire une division par zéro.
SAVOIR-‐FAIRE : Utiliser un débogueur
Pour identifier une erreur dans un programme : • on identifie les variable qui ne se comportent pas comme prévue • on localise l’erreur au moyen d’une exécution pas à pas • on place des points d’arrêt aux endroits critiques du programme
☛✡✟✠
☛✡✟✠ ☛✡✟✠
☛✡✟✠
Top Related