NSI Première • Programme français, lycées de Montréal

Exercices corrigés de NSI : architectures matérielles, systèmes et réseaux

Voici une série d'exercices corrigés de NSI pour la classe de Première, sur les architectures matérielles, les systèmes d'exploitation et les réseaux du programme français. Elle s'adresse aux élèves des lycées français de Montréal, le Lycée Marie de France et le Collège Stanislas.

Le fil de la série : une suite de bits n'a aucune valeur en soi, elle n'en a une que pour une CONVENTION donnée, et tout ce que fait un ordinateur se ramène à des portes logiques et au cycle lire, décoder, exécuter. Le système d'exploitation n'est pas une interface : c'est le programme qui distribue les ressources entre des programmes qui ne se connaissent pas.

Trois pièges sont désignés nommément dans le corrigé : lire une suite de bits sans se demander quelle convention s'applique, croire que deux adresses qui se ressemblent sont sur le même réseau, et vouloir accélérer un processeur qui, en réalité, attend.

Série autocorrigée Tape tes réponses sous chaque question : la page te dit juste ou faux avant d'ouvrir la correction. Avec un compte, chaque bonne réponse du premier coup rapporte des points.

Ce chapitre fait partie de NSI en Première
Avant de commencer Fiche de révision : les pièges et la méthode de ce chapitre

Avant ce chapitre

Ces notions sont supposées acquises ici. Si le premier exercice résiste, le blocage vient presque toujours de l'une d'elles, pas du chapitre lui-même.

Remonter plus loin : la chaîne complète (4 chapitres) ↓

Le chemin de remédiation, du plus ancien au plus proche. Un élève qui reprend ce chapitre de zéro le reprend dans cet ordre.

  1. 1Algorithmique et PythonSeconde, Mathématiques
  2. 2Python : types, contrôle, fonctions et tableaux
  3. 3Représentation des données : réels et texte
  4. 4Algorithmique et ScratchTroisième, Mathématiques

Rappel de cours

  • Conversion binaire : divisions successives par 2, les restes se lisent du dernier au premier. Hexadécimal : regrouper les bits par quatre depuis la droite.
  • Complément à deux sur nn bits : inverser tous les bits puis ajouter 1. L'intervalle va de 2n1-2^{n-1} à 2n112^{n-1} - 1.
  • Débordement : additionner deux nombres de même signe et obtenir le signe opposé.
  • Demi-additionneur : la somme est un OU exclusif, la retenue est un ET. Un additionneur complet ajoute la retenue entrante.
  • Modèle de von Neumann : mémoire, unité de commande, unité de calcul, entrées-sorties, reliés par un bus. Le programme est rangé comme une donnée.
  • Cycle d'instruction : lire, décoder, exécuter. Le compteur ordinal s'incrémente seul, sauf lors d'un saut qui le remplace.
  • Chemin absolu : commence à la racine. Chemin relatif : part du répertoire courant. Le point est le répertoire courant, le point-point son parent.
  • Permissions rwx par groupes de trois : propriétaire, groupe, autres. Sur un répertoire, x signifie TRAVERSER, pas exécuter.
  • Deux machines sont sur le même sous-réseau si le ET avec le masque donne la même adresse de réseau. Un /n/n laisse 232n2^{32-n} adresses, dont deux réservées.
  • Hiérarchie mémoire : registre 0,3 ns, cache 1 ns, mémoire vive 80 ns, mémoire flash 50 µs, disque 8 ms. Le temps moyen est dominé par les échecs de cache.

Partie A : Les bases (/50)

Exercice 1 : Binaire, hexadécimal et complément à deux

Un ordinateur ne connaît que des suites de bits. Tout le reste, entiers positifs, entiers négatifs, adresses, couleurs, est une CONVENTION d'interprétation de ces suites, et c'est la convention qu'il faut connaître.

  • a) Convertissez 45 en binaire sur 8 bits, puis en hexadécimal. Détaillez la méthode des divisions successives et la vérification.
  • b) La suite 11010011 est lue par deux programmes différents, l'un qui l'interprète comme un entier naturel, l'autre comme un entier relatif en complément à deux. Donnez les deux valeurs.
  • c) Écrivez moins 45 en complément à deux sur 8 bits. Détaillez la construction, puis vérifiez en additionnant 45 et son opposé.
  • d) Donnez l'intervalle des entiers représentables sur 8 bits en complément à deux, et le nombre de valeurs. Pourquoi l'intervalle n'est-il pas symétrique ?
  • e) Un programme calcule 100 plus 50 sur 8 bits signés. Quel résultat obtient-il ? Comment s'appelle ce phénomène et comment le détecte-t-on ?

Tape tes réponses, la page te dit juste ou faux 0/10

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 45 = 00101101 = 0x2D
  • b) 211 ou −45 selon la convention
  • c) Inverser puis ajouter 1 : 11010011
  • d) De −128 à 127 : 256 valeurs
  • e) 100 + 50 donne −106 : débordement

a) Divisions successives par 2 : 45=2×22+145 = 2 \times 22 + 1, 22=2×11+022 = 2 \times 11 + 0, 11=2×5+111 = 2 \times 5 + 1, 5=2×2+15 = 2 \times 2 + 1, 2=2×1+02 = 2 \times 1 + 0, 1=2×0+11 = 2 \times 0 + 1. On lit les restes du dernier au premier : 101101, donc 00101101 sur 8 bits. Vérification : 32+8+4+1=4532 + 8 + 4 + 1 = 45. En hexadécimal, on regroupe les bits par quatre depuis la droite : 0010 et 1101, soit 2 et D, donc 0x2D. Vérification : 2×16+13=452 \times 16 + 13 = 45.

b) Comme entier naturel, 1101001111010011 vaut 128+64+16+2+1=211128 + 64 + 16 + 2 + 1 = 211. Comme entier relatif en complément à deux, le bit de poids fort valant 1, le nombre est négatif : sa valeur est 211256=45211 - 256 = -45. On peut aussi le retrouver en inversant tous les bits, ce qui donne 00101100 soit 44, puis en ajoutant 1 pour obtenir 45, et en mettant le signe moins. La même suite de huit bits vaut donc 211 ou moins 45 selon la seule convention retenue, et rien dans la mémoire ne dit laquelle est la bonne.

c) On part de 45, soit 00101101. On inverse tous les bits : 11010010. On ajoute 1 : 11010011. C'est bien la suite de la question b, ce qui confirme le résultat. Vérification par addition : 00101101+1101001100101101 + 11010011 donne 100000000 sur neuf bits ; le neuvième bit sort de la largeur du registre et est perdu, il reste 00000000, c'est-à-dire zéro. C'est exactement l'intérêt du complément à deux : la soustraction se fait avec le circuit d'addition, sans matériel supplémentaire.

d) L'intervalle est de 128-128 à +127+127, soit 28=2562^{8} = 256 valeurs. Il n'est pas symétrique parce que le zéro occupe une place du côté positif : les 256 combinaisons se répartissent en 128 valeurs dont le bit de poids fort vaut 0, à savoir 0 à 127, et 128 valeurs dont ce bit vaut 1, à savoir 128-128 à 1-1. Le côté positif perd donc une place au profit du zéro. Conséquence pratique : l'opposé de 128-128 n'est pas représentable, et le calculer redonne 128-128, ce qui surprend toujours.

e) 100+50=150100 + 50 = 150, qui dépasse 127 : le résultat ne tient pas. En binaire, 01100100+00110010=1001011001100100 + 00110010 = 10010110, dont le bit de poids fort vaut 1 : lu en complément à deux, cela donne 150256=106150 - 256 = -106. Le programme obtient donc moins 106 en additionnant deux nombres positifs. Le phénomène s'appelle le DÉBORDEMENT. On le détecte à un signe caractéristique : additionner deux nombres de même signe et obtenir un résultat de signe opposé est impossible en arithmétique exacte, donc c'est la signature du débordement. Les processeurs disposent d'ailleurs d'un indicateur dédié, que les langages de haut niveau choisissent le plus souvent d'ignorer.

Exercice 2 : Portes logiques et demi-additionneur

Le schéma montre le circuit qui additionne deux bits. Il ne contient que deux portes, et pourtant tout le calcul d'un processeur se construit à partir de lui.

XORETabS = sommeR = retenue
  • a) Dressez la table de vérité complète du circuit : les quatre couples possibles de a et b, et les valeurs de S et de R correspondantes.
  • b) Vérifiez que ce circuit calcule bien l'addition de deux bits. Interprétez les colonnes S et R.
  • c) Donnez les tables de vérité des portes ET, OU et NON, puis exprimez le OU exclusif à l'aide de ces trois portes.
  • d) Ce circuit ne suffit pas pour additionner deux nombres de 8 bits. Expliquez ce qui manque et décrivez le circuit complet, dit additionneur complet.
  • e) Combien de portes ET, OU et NON faut-il pour un additionneur 8 bits construit à partir d'additionneurs complets, en admettant qu'un additionneur complet demande 9 portes élémentaires ? Que devient ce nombre pour un additionneur 64 bits ?

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) S = OU exclusif, R = ET
  • b) S somme, R retenue
  • c) OU exclusif avec ET, OU, NON
  • d) Additionneur complet : retenue entrante
  • e) 72 puis 576 portes

a) Table de vérité. Pour a valant 0 et b valant 0 : S vaut 0 et R vaut 0. Pour a valant 0 et b valant 1 : S vaut 1 et R vaut 0. Pour a valant 1 et b valant 0 : S vaut 1 et R vaut 0. Pour a valant 1 et b valant 1 : S vaut 0 et R vaut 1. La colonne S est bien celle d'un OU exclusif, qui vaut 1 quand exactement une des deux entrées vaut 1 ; la colonne R est celle d'un ET, qui vaut 1 seulement quand les deux valent 1.

b) L'addition binaire de deux bits donne : 0+0=00 + 0 = 0, 0+1=10 + 1 = 1, 1+0=11 + 0 = 1, et 1+1=101 + 1 = 10 en binaire, c'est-à-dire 0 de somme et 1 de retenue. C'est exactement le contenu de la table. La colonne S est le chiffre des unités du résultat, la colonne R est la RETENUE qui doit être reportée sur la colonne suivante, exactement comme dans une addition posée en base dix.

c) La porte ET vaut 1 seulement si les deux entrées valent 1. La porte OU vaut 1 dès qu'au moins une entrée vaut 1. La porte NON inverse son entrée unique. Le OU exclusif s'écrit alors : aa ET NON bb, OU bien NON aa ET bb. Autrement dit, on prend le OU des deux cas où les entrées diffèrent. Une autre écriture, plus compacte, est le ET du OU et du NON du ET : (a OU b)(a \text{ OU } b) ET NON(a ET b)(a \text{ ET } b), qui se lit « au moins un des deux, mais pas les deux ».

d) Il manque la prise en compte de la retenue ENTRANTE, celle produite par la colonne précédente. Le demi-additionneur additionne deux bits ; pour additionner deux nombres, chaque colonne doit en additionner TROIS : les deux bits du rang et la retenue venue du rang inférieur. Le circuit complet, appelé additionneur complet, s'obtient en chaînant deux demi-additionneurs : le premier additionne a et b, le second additionne leur somme et la retenue entrante ; la retenue sortante est le OU des deux retenues produites. On construit ensuite un additionneur de 8 bits en chaînant 8 additionneurs complets, la retenue sortante de chacun devenant la retenue entrante du suivant.

e) Pour 8 bits, il faut 8 additionneurs complets, soit 8×9=728 \times 9 = 72 portes élémentaires. Pour 64 bits, 64×9=57664 \times 9 = 576 portes. Le nombre croît linéairement avec la largeur, ce qui est très raisonnable ; en revanche le TEMPS de calcul croît lui aussi linéairement, puisque chaque retenue doit être calculée avant la suivante. C'est ce délai en cascade, et non le nombre de portes, qui a conduit à inventer des additionneurs à anticipation de retenue, plus gourmands en portes mais nettement plus rapides.

Exercice 3 : Le modèle de von Neumann et le cycle d'instruction

Le schéma donne l'organisation qui, depuis 1945, structure tous les ordinateurs à programme enregistré. Son idée décisive tient en une phrase : le programme est rangé dans la même mémoire que les données.

mémoireunité de commandeunité de calculentrées-sortiesbus
  • a) Donnez le rôle de chacun des quatre blocs, en une phrase, puis dites ce que transporte le bus.
  • b) Énoncez les trois phases du cycle d'exécution d'une instruction, dans l'ordre, et dites quel bloc travaille pendant chacune.
  • c) Quelle est l'idée centrale du modèle, et quelle conséquence pratique en tire-t-on ? Citez une application quotidienne de cette conséquence.
  • d) Le compteur ordinal contient l'adresse de la prochaine instruction. Décrivez ce qui lui arrive pendant un cycle ordinaire, puis pendant l'exécution d'un saut.
  • e) Un processeur fonctionne à 3 GHz et exécute en moyenne une instruction tous les 4 cycles d'horloge. Combien d'instructions exécute-t-il par seconde ? Combien de temps met-il à exécuter un programme de 12 milliards d'instructions ?

Tape tes réponses, la page te dit juste ou faux 0/6

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Mémoire, commande, calcul, entrées-sorties
  • b) Lire, décoder, exécuter
  • c) Programme enregistré en mémoire
  • d) Saut : adresse remplacée
  • e) 750 millions par seconde : 16 s

a) La MÉMOIRE conserve à la fois le programme et les données, sous forme de mots numérotés par des adresses. L'UNITÉ DE COMMANDE lit les instructions, les décode et pilote tous les autres blocs en conséquence. L'UNITÉ DE CALCUL effectue les opérations arithmétiques et logiques sur les données qu'on lui fournit. Les ENTRÉES-SORTIES relient la machine au monde, clavier, écran, disque, réseau. Le bus transporte trois choses : les ADRESSES, qui disent où lire ou écrire, les DONNÉES, qui sont ce qu'on lit ou écrit, et les signaux de COMMANDE, qui disent s'il s'agit d'une lecture ou d'une écriture.

b) Les trois phases sont, dans l'ordre : LIRE l'instruction en mémoire à l'adresse indiquée par le compteur ordinal, ce qui mobilise la mémoire et le bus ; DÉCODER cette instruction, ce qui mobilise l'unité de commande, qui détermine l'opération et les opérandes ; EXÉCUTER, ce qui mobilise l'unité de calcul pour un calcul, ou de nouveau la mémoire pour une lecture ou une écriture de donnée. Ce cycle se répète sans fin tant que la machine est allumée.

c) L'idée centrale est que le PROGRAMME EST UNE DONNÉE : il est rangé dans la même mémoire que les données qu'il manipule, dans le même format de mots binaires. La conséquence pratique est qu'un programme peut en lire, en écrire, en produire un autre, et qu'il suffit de charger un nouveau contenu en mémoire pour changer ce que fait la machine, sans toucher au matériel. Application quotidienne : installer une application, ou faire une mise à jour, revient exactement à cela. Avant ce modèle, changer de calcul demandait de recâbler physiquement la machine, ce qui prenait des jours.

d) Pendant un cycle ordinaire, le compteur ordinal est LU pour connaître l'adresse de l'instruction, puis INCRÉMENTÉ de la taille d'une instruction, si bien qu'il désigne déjà la suivante avant même la fin de l'exécution. Pendant un saut, l'exécution REMPLACE cette valeur par l'adresse de destination : le compteur ne pointe plus sur l'instruction suivante mais sur celle indiquée par le saut. C'est ce simple remplacement qui produit toutes les boucles et tous les branchements conditionnels d'un programme.

e) À 3 GHz, le processeur exécute 3×1093 \times 10^{9} cycles par seconde. À raison d'une instruction tous les 4 cycles, il exécute 3×109/4=7,5×1083 \times 10^{9} / 4 = 7{,}5 \times 10^{8} instructions par seconde, soit 750 millions. Un programme de 12×10912 \times 10^{9} instructions demande 12×109/(7,5×108)=1612 \times 10^{9} / (7{,}5 \times 10^{8}) = 16 secondes. Ce calcul suppose que le processeur ne s'arrête jamais, ce qui est faux en pratique : dès qu'une donnée manque en mémoire cache, il attend, et l'exercice 9 montre que cette attente dépasse largement le temps de calcul.

Exercice 4 : Lire un programme en langage machine

Voici un programme écrit dans un langage d'assemblage simplifié. LOAD charge une valeur dans un registre, ADD et SUB calculent, JNZ saute si le registre n'est pas nul, STORE écrit en mémoire, HALT arrête.

0:  LOAD  R0, #5
1:  LOAD  R1, #0
2:  ADD   R1, R1, R0
3:  SUB   R0, R0, #1
4:  JNZ   R0, 2
5:  STORE R1, 100
6:  HALT
  • a) Faites la trace complète de l'exécution : donnez les valeurs de R0 et R1 après chaque passage par l'instruction 4.
  • b) Quelle valeur est écrite à l'adresse 100 ? Que calcule ce programme, en une phrase ?
  • c) Combien d'instructions sont exécutées en tout ? Détaillez le décompte.
  • d) Écrivez l'équivalent de ce programme en Python, en quatre lignes.
  • e) On remplace la valeur initiale 5 par 1000. Combien d'instructions le programme exécute-t-il ? Écrivez un programme qui obtient le même résultat en un nombre d'instructions indépendant de la valeur initiale.

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) R1 : 5, 9, 12, 14, 15
  • b) 15 : somme de 1 à 5
  • c) 2+3×5+2=192 + 3 \times 5 + 2 = 19
  • d) Boucle while en Python
  • e) 3 004 instructions contre 7

a) Au départ, R0 vaut 5 et R1 vaut 0. Premier passage en 4 : R1 vaut 0+5=50 + 5 = 5 et R0 vaut 4, donc on saute. Deuxième passage : R1 vaut 5+4=95 + 4 = 9 et R0 vaut 3, on saute. Troisième : R1 vaut 9+3=129 + 3 = 12 et R0 vaut 2, on saute. Quatrième : R1 vaut 12+2=1412 + 2 = 14 et R0 vaut 1, on saute. Cinquième : R1 vaut 14+1=1514 + 1 = 15 et R0 vaut 0, donc on NE saute pas et l'exécution continue en 5.

b) La valeur écrite à l'adresse 100 est 15. Le programme calcule la somme des entiers de 1 à 5, c'est-à-dire 5+4+3+2+1=155 + 4 + 3 + 2 + 1 = 15. Plus généralement, il calcule la somme des entiers de 1 à la valeur initiale de R0.

c) Décompte. Les deux instructions d'initialisation, en 0 et en 1, sont exécutées une fois : cela fait 2. Le corps de boucle, formé des instructions 2, 3 et 4, est exécuté 5 fois : cela fait 3×5=153 \times 5 = 15. Les instructions 5 et 6 sont exécutées une fois : cela fait 2. Le total vaut 2+15+2=192 + 15 + 2 = 19 instructions. Le piège est de compter 4 tours au lieu de 5, en oubliant que le dernier tour s'exécute entièrement avant que le saut ne soit refusé.

d) En Python : r0 = 5 ; puis r1 = 0 ; puis while r0 != 0 : r1 = r1 + r0 et r0 = r0 - 1 ; enfin memoire[100] = r1. Le rapprochement est instructif : une boucle while de Python n'est rien d'autre qu'un test suivi d'un saut conditionnel, et le compilateur produit exactement le programme de l'énoncé.

e) Avec 1000 au lieu de 5, le total vaut 2+3×1 000+2=3 0042 + 3 \times 1\ 000 + 2 = 3\ 004 instructions. Pour obtenir le même résultat en un nombre d'instructions FIXE, on utilise la formule de la somme des premiers entiers, n(n+1)/2n(n+1)/2. Le programme devient : charger n dans R0, copier R0 dans R1, ajouter 1 à R1, multiplier R0 par R1, diviser par 2, écrire à l'adresse 100, arrêter. Cela fait 7 instructions quelle que soit la valeur de n, contre 3 004. Vérification pour n=1 000n = 1\ 000 : 1 000×1 001/2=500 5001\ 000 \times 1\ 001 / 2 = 500\ 500. C'est le même écart de nature qu'entre un algorithme linéaire et un algorithme constant : aucune accélération du processeur ne rattrape un changement de formule.

Exercice 5 : Le système de fichiers : chemins et commandes

Un système de fichiers est un arbre, exactement comme le document de l'exercice sur le Web. Voici une arborescence et les commandes qui la parcourent. Le répertoire courant est /home/ada/tp.

CheminNature
/racine
/homerépertoire
/home/adarépertoire personnel
/home/ada/tprépertoire, courant
/home/ada/tp/tri.pyfichier
/home/ada/tp/donneesrépertoire
/home/ada/tp/donnees/notes.csvfichier
/home/bob/partagerépertoire
  • a) Distinguez chemin absolu et chemin relatif. Donnez les deux chemins du fichier notes.csv depuis le répertoire courant.
  • b) Que signifient les notations point et point-point ? Écrivez le chemin relatif de /home/bob/partage depuis le répertoire courant.
  • c) Donnez la commande qui affiche le contenu du répertoire courant, celle qui crée un répertoire resultats, celle qui s'y déplace, et celle qui affiche le répertoire courant.
  • d) Un fichier a les permissions rw-r-----, son propriétaire est ada et son groupe est eleves. Décodez-les entièrement. Bob, qui n'appartient pas au groupe, peut-il le lire ?
  • e) Expliquez pourquoi le droit d'exécution sur un RÉPERTOIRE ne signifie pas la même chose que sur un fichier. Que se passe-t-il si on le retire à un répertoire ?

Tape tes réponses, la page te dit juste ou faux 0/6

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Absolu depuis /, relatif depuis le courant
  • b) ../../bob/partage
  • c) ls, mkdir, cd, pwd
  • d) rw-, r--, --- : Bob ne lit pas
  • e) x sur un répertoire : traverser

a) Un chemin ABSOLU part de la racine et commence donc par une barre oblique : il désigne le même fichier quel que soit le répertoire courant. Un chemin RELATIF part du répertoire courant et ne commence pas par une barre : il désigne des fichiers différents selon l'endroit d'où on l'écrit. Pour notes.csv, le chemin absolu est /home/ada/tp/donnees/notes.csv et le chemin relatif, depuis /home/ada/tp, est donnees/notes.csv. Le second est plus court et se déplace avec le projet ; le premier est robuste mais casse dès que l'arborescence change.

b) Le point désigne le répertoire courant lui-même, le point-point désigne son répertoire PARENT. Depuis /home/ada/tp, il faut remonter deux fois pour atteindre /home, puis redescendre : le chemin relatif est ../../bob/partage. On vérifie en comptant les remontées : un point-point mène à /home/ada, deux mènent à /home, et il reste bob puis partage.

c) Afficher le contenu du répertoire courant : ls, ou ls -l pour le détail avec les permissions. Créer un répertoire : mkdir resultats. S'y déplacer : cd resultats. Afficher le répertoire courant : pwd. Il faut retenir que cd est la seule de ces commandes qui change l'état du terminal ; les trois autres se contentent d'afficher ou de créer.

d) Les neuf caractères se lisent par groupes de trois : le propriétaire, le groupe, les autres. Ici rw- pour le propriétaire ada, donc lecture et écriture mais pas exécution ; r-- pour le groupe eleves, donc lecture seule ; --- pour les autres, donc aucun droit. Bob n'étant ni le propriétaire ni membre du groupe, il relève de la troisième catégorie : il ne peut PAS lire le fichier. Il faut noter que les trois catégories sont exclusives et testées dans cet ordre : être propriétaire l'emporte sur être membre du groupe, même si le groupe a plus de droits.

e) Sur un FICHIER, le droit d'exécution autorise à le lancer comme un programme. Sur un RÉPERTOIRE, il autorise à le TRAVERSER, c'est-à-dire à accéder à ce qu'il contient quand on en connaît le nom. Les deux sens n'ont rien à voir. Si on retire ce droit à un répertoire tout en laissant le droit de lecture, on obtient une situation déroutante : on peut lister les noms des fichiers qu'il contient, mais on ne peut ouvrir aucun d'eux, ni même savoir leur taille. Inversement, avec l'exécution mais sans la lecture, on peut ouvrir un fichier dont on connaît exactement le nom, sans pouvoir découvrir la liste. C'est ce second réglage qu'on utilise pour un répertoire de dépôt public.

Partie B : Problèmes et raisonnement (/50)

Exercice 6 : Ce que fait vraiment un système d'exploitation

Le système d'exploitation n'est pas l'interface graphique. C'est un programme, chargé au démarrage, dont la fonction est de distribuer les ressources de la machine entre des programmes qui ne se connaissent pas.

  • a) Citez cinq ressources que le système d'exploitation distribue, et pour chacune un conflit qui surviendrait s'il ne le faisait pas.
  • b) Un programme ne parle jamais directement au disque : il demande au système. Expliquez les deux raisons de cette interdiction, l'une de sécurité, l'autre de portabilité.
  • c) Qu'appelle-t-on appel système ? Donnez trois exemples et expliquez ce qui se passe, du point de vue du processeur, au moment d'un appel système.
  • d) La machine dispose de 8 Gio de mémoire vive. Trois programmes en réclament respectivement 3, 4 et 3 Gio. Expliquez ce qui se passe, nommez le mécanisme employé, et dites pourquoi la machine devient soudain très lente.
  • e) Un accès à la mémoire vive coûte 80 ns, un accès au disque 8 ms. En reprenant la question d, calculez de quel facteur un accès ralentit, puis la durée d'un programme qui fait 10610^{6} accès si un accès sur mille tombe sur le disque.

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Processeur, mémoire, fichiers, périphériques, réseau
  • b) Sécurité et portabilité
  • c) Appel système : mode noyau
  • d) 10 Gio pour 8 : échange sur disque
  • e) Facteur 100 000 : 8,088{,}08 s

a) Cinq ressources et leurs conflits. Le PROCESSEUR : sans arbitrage, un programme qui boucle monopoliserait la machine et tous les autres seraient gelés. La MÉMOIRE : sans arbitrage, deux programmes écriraient au même endroit et se détruiraient mutuellement. Les FICHIERS : sans arbitrage, deux écritures simultanées dans le même fichier produiraient un contenu incohérent. Les PÉRIPHÉRIQUES : sans arbitrage, deux programmes qui impriment mélangeraient leurs pages. Le RÉSEAU : sans arbitrage, deux programmes réclameraient le même numéro de port et les réponses arriveraient au mauvais destinataire.

b) Raison de SÉCURITÉ : si un programme pouvait écrire directement sur le disque, il pourrait lire les fichiers de tous les utilisateurs, modifier le système lui-même et contourner toute permission. Passer par le système permet de vérifier, à chaque demande, que le programme a le droit de faire ce qu'il demande. Raison de PORTABILITÉ : il existe des dizaines de types de disques, chacun avec son protocole. Si chaque programme devait les connaître, il faudrait le réécrire à chaque nouveau matériel. Le système offre une interface unique, ouvrir, lire, écrire, fermer, et se charge de la traduire ; le programme fonctionne alors sans modification sur une machine qu'il ne connaît pas.

c) Un appel système est la demande qu'un programme adresse au système d'exploitation pour obtenir un service qu'il n'a pas le droit d'accomplir lui-même. Trois exemples : ouvrir un fichier, allouer de la mémoire, envoyer des données sur le réseau. Du point de vue du processeur, l'appel provoque un changement de MODE : le processeur quitte le mode utilisateur, dans lequel les instructions privilégiées sont interdites, pour le mode noyau, dans lequel elles sont permises. Le contrôle passe à une adresse fixée à l'avance par le système, jamais choisie par le programme, ce qui est précisément ce qui rend le mécanisme sûr. À la fin du service, le processeur repasse en mode utilisateur et rend la main au programme.

d) Les trois programmes réclament 3+4+3=103 + 4 + 3 = 10 Gio alors que la machine en a 8 : il en manque 2. Le système ne refuse pas pour autant : il utilise la MÉMOIRE VIRTUELLE et le mécanisme d'échange sur disque, souvent appelé pagination ou swap. Les pages de mémoire les moins récemment utilisées sont écrites sur le disque, libérant de la place en mémoire vive ; quand un programme y accède de nouveau, elles sont relues. La machine devient très lente parce qu'un accès qui coûtait 80 nanosecondes en coûte désormais 8 millisecondes quand la page est sur le disque, soit cent mille fois plus. Si les trois programmes travaillent simultanément, les pages sont échangées sans cesse dans les deux sens, phénomène appelé écroulement, et la machine passe plus de temps à déplacer des pages qu'à calculer.

e) Le facteur de ralentissement vaut 8×103/(80×109)=100 0008 \times 10^{-3} / (80 \times 10^{-9}) = 100\ 000. Pour 10610^{6} accès dont un sur mille tombe sur le disque : 999 000999\ 000 accès en mémoire coûtent 999 000×80×1090,0799999\ 000 \times 80 \times 10^{-9} \approx 0{,}0799 s, et 1 0001\ 000 accès au disque coûtent 1 000×8×103=81\ 000 \times 8 \times 10^{-3} = 8 s. Le total vaut environ 8,088{,}08 secondes, alors que sans aucun accès disque il aurait valu 106×80×109=0,0810^{6} \times 80 \times 10^{-9} = 0{,}08 s. Un accès sur mille suffit donc à multiplier la durée par plus de cent. C'est la raison pour laquelle ajouter de la mémoire vive à une machine qui échange transforme radicalement son comportement, alors qu'un processeur plus rapide ne changerait presque rien.

Exercice 7 : Réseau : adressage, masque et routage

Le schéma montre deux sous-réseaux reliés par un routeur. Chaque machine porte une adresse, et c'est le masque qui décide si deux machines peuvent se parler directement.

routeur192.168.1.0/24192.168.2.0/24192.168.1.254192.168.2.254
  • a) Que signifie la notation /24 ? Combien d'adresses le sous-réseau 192.168.1.0/24 contient-il, et combien sont utilisables par des machines ?
  • b) La machine 192.168.1.37 veut joindre 192.168.1.90. Montrez, en appliquant le masque, qu'elles sont dans le même sous-réseau, et dites par où passe le message.
  • c) La même machine veut joindre 192.168.2.15. Montrez qu'elles ne sont pas dans le même sous-réseau et décrivez le trajet complet du message.
  • d) On veut découper 192.168.1.0/24 en quatre sous-réseaux égaux. Donnez le nouveau masque, les quatre adresses de réseau et le nombre de machines par sous-réseau.
  • e) Une machine est configurée avec l'adresse 192.168.1.37 et le masque /16 alors que le routeur utilise /24. Décrivez précisément ce qui fonctionne encore et ce qui cesse de fonctionner.

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) /24 : 256 adresses, 254 utilisables
  • b) Même réseau : envoi direct
  • c) Réseau différent : passerelle
  • d) /26 : 4 réseaux de 62 machines
  • e) Masque /16 : le réseau voisin échoue

a) La notation /24 signifie que les 24 premiers bits de l'adresse identifient le RÉSEAU, et que les bits restants identifient la machine dans ce réseau. Une adresse IPv4 comptant 32 bits, il reste 3224=832 - 24 = 8 bits, soit 28=2562^{8} = 256 adresses. Deux ne sont pas attribuables à une machine : l'adresse de réseau, 192.168.1.0, et l'adresse de diffusion, 192.168.1.255. Il reste donc 2562=254256 - 2 = 254 adresses utilisables.

b) Le masque /24 correspond à 255.255.255.0. En appliquant un ET bit à bit, l'adresse 192.168.1.37 donne le réseau 192.168.1.0, et 192.168.1.90 donne également 192.168.1.0. Les deux réseaux étant identiques, les machines sont sur le même sous-réseau : le message part DIRECTEMENT de l'une à l'autre, sans jamais passer par le routeur. C'est le calcul que fait toute machine avant chaque envoi, et c'est lui, et rien d'autre, qui décide de l'itinéraire.

c) Pour 192.168.2.15, le même ET donne le réseau 192.168.2.0, différent de 192.168.1.0. Les machines ne sont donc pas sur le même sous-réseau. Le trajet complet : la machine émettrice envoie le message à sa PASSERELLE par défaut, c'est-à-dire à l'interface 192.168.1.254 du routeur ; le routeur constate que la destination appartient à 192.168.2.0/24, réseau auquel il est directement relié par son interface 192.168.2.254 ; il transmet le message sur cette interface, et celui-ci atteint 192.168.2.15. Le message a donc franchi un saut de routeur, ce que révélerait un compteur de sauts diminué de un.

d) Pour quatre sous-réseaux, il faut emprunter 2 bits à la partie machine, puisque 22=42^{2} = 4. Le nouveau masque est donc /26, soit 255.255.255.192. Les quatre adresses de réseau sont 192.168.1.0, 192.168.1.64, 192.168.1.128 et 192.168.1.192, car 23226=26=642^{32-26} = 2^{6} = 64 adresses par sous-réseau. Chacun offre 642=6264 - 2 = 62 adresses de machine. On vérifie le total : 4×62=2484 \times 62 = 248 machines contre 254 auparavant, la différence de 6 venant des six adresses de réseau et de diffusion supplémentaires. Découper coûte des adresses, et c'est le prix de la séparation.

e) Avec un masque /16, la machine croit que tout le 192.168.0.0 forme un seul réseau local. Ce qui FONCTIONNE encore : joindre les machines de 192.168.1.0/24, puisqu'elles sont bien locales, et le calcul donne le même verdict. Ce qui CESSE de fonctionner : joindre 192.168.2.15. La machine conclut à tort que cette adresse est locale, donc elle n'envoie rien au routeur et cherche directement le destinataire sur son propre câble ; personne ne répond, et la connexion échoue par expiration de délai. Le symptôme est déroutant : la machine communique parfaitement avec ses voisins immédiats, et échoue sur une adresse qui semble pourtant plus proche que l'extérieur, lequel fonctionne d'ailleurs très bien puisqu'une adresse publique, elle, n'est pas dans 192.168.0.0/16 et part donc bien vers le routeur.

Exercice 8 : Cinq affirmations à corriger

Chacune des cinq affirmations suivantes est FAUSSE. Dites pourquoi et donnez l'énoncé correct.

  • 1) « La suite de bits 11010011 vaut 211. »
  • 2) « Sur 8 bits signés, on représente les entiers de moins 127 à 127. »
  • 3) « Le système d'exploitation est l'interface graphique de l'ordinateur. »
  • 4) « Deux machines dont les adresses commencent par 192.168 sont forcément sur le même réseau local. »
  • 5) « Pour accélérer une machine qui rame parce qu'elle manque de mémoire, il faut un processeur plus rapide. »

Tape tes réponses, la page te dit juste ou faux 0/5

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) 211 ou −45
  • 2) De −128 à 127
  • 3) Système : arbitre des ressources
  • 4) C'est le masque qui décide
  • 5) Ajouter de la mémoire

1) FAUX, ou plutôt incomplet. La suite vaut 211 si on l'interprète comme un entier NATUREL, et moins 45 si on l'interprète comme un entier relatif en complément à deux. Rien dans la mémoire ne dit laquelle des deux conventions s'applique : c'est le type déclaré dans le programme qui décide. Énoncé correct : une suite de bits n'a pas de valeur en soi, elle a une valeur POUR UNE CONVENTION donnée.

2) FAUX. L'intervalle est de moins 128 à 127, soit 256 valeurs. Il est asymétrique parce que le zéro occupe une des 128 places du côté où le bit de poids fort vaut 0. Énoncé correct : sur nn bits en complément à deux, on représente les entiers de 2n1-2^{n-1} à 2n112^{n-1} - 1.

3) FAUX. L'interface graphique est un programme comme un autre, qui s'exécute par-dessus le système. Le système d'exploitation est le programme qui distribue le processeur, la mémoire, les fichiers, les périphériques et le réseau entre tous les programmes. Un serveur fonctionne parfaitement sans aucune interface graphique. Énoncé correct : le système d'exploitation gère les ressources et arbitre entre les programmes ; l'interface graphique n'est qu'un de ses clients.

4) FAUX. C'est le MASQUE, et lui seul, qui définit le réseau local. Avec un masque /24, 192.168.1.37 et 192.168.2.15 sont sur deux réseaux différents et ne peuvent se parler qu'en passant par un routeur, malgré leurs deux premiers octets identiques. Énoncé correct : deux machines sont sur le même sous-réseau si et seulement si l'application du masque à leurs adresses donne la même adresse de réseau.

5) FAUX. Quand une machine manque de mémoire, elle échange des pages avec le disque, et un accès passe de 80 nanosecondes à 8 millisecondes, soit cent mille fois plus. Le processeur, lui, attend : il est déjà inoccupé. Énoncé correct : quand le goulot est la mémoire, il faut ajouter de la mémoire vive, ou à défaut un disque à mémoire flash qui divise le coût de l'échange par cent ; un processeur plus rapide attendrait simplement plus vite.

Exercice 9 : La hiérarchie mémoire et le coût d'un accès

La frise place cinq niveaux de mémoire selon leur temps d'accès, sur une échelle où chaque graduation vaut dix fois la précédente. Les écarts sont si grands qu'ils ne s'imaginent pas sans une comparaison.

1 ns10 ns100 ns1 µs10 µs100 µs1 ms10 msregistrecachemémoire viveSSDdisque
  • a) Relevez l'ordre de grandeur du temps d'accès de chacun des cinq niveaux. Quel facteur sépare le registre du disque ?
  • b) On ramène l'accès au registre à 1 seconde. Recalculez à cette échelle le temps d'accès des quatre autres niveaux et exprimez-les en unités parlantes.
  • c) Pourquoi les niveaux rapides sont-ils petits et les niveaux lents grands ? Donnez les deux raisons, l'une physique, l'autre économique.
  • d) Un programme parcourt un tableau de 10 millions d'entiers, soit dans l'ordre, soit dans un ordre aléatoire. Expliquez pourquoi le premier est plusieurs fois plus rapide, alors que le nombre d'accès est identique.
  • e) Un cache retient 95 pour cent des accès, les 5 pour cent restants allant en mémoire vive. En prenant 1 ns pour le cache et 80 ns pour la mémoire, calculez le temps d'accès moyen. Que devient-il si le taux de succès tombe à 80 pour cent ?

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Facteur 2,7×1072{,}7 \times 10^{7}
  • b) 4,44{,}4 min pour la mémoire, 309 jours pour le disque
  • c) Distance et coût
  • d) Lecture par blocs de 16 entiers
  • e) 4,954{,}95 ns puis 16,816{,}8 ns

a) Registre : de l'ordre de la nanoseconde, en pratique environ 0,30{,}3 ns. Cache : quelques nanosecondes, environ 1 ns pour le premier niveau. Mémoire vive : environ 80 ns, soit une centaine de nanosecondes. Mémoire flash : quelques dizaines de microsecondes, environ 50 µs. Disque à plateaux : quelques millisecondes, environ 8 ms. Le facteur entre le registre et le disque vaut 8×103/(0,3×109)2,7×1078 \times 10^{-3} / (0{,}3 \times 10^{-9}) \approx 2{,}7 \times 10^{7}, soit près de vingt-sept millions.

b) Le facteur d'échelle vaut 1/(0,3×109)3,33×1091 / (0{,}3 \times 10^{-9}) \approx 3{,}33 \times 10^{9}. Le cache, à 1 ns, devient 3,333{,}33 secondes. La mémoire vive, à 80 ns, devient 266,7266{,}7 secondes, soit environ 4,44{,}4 minutes. La mémoire flash, à 50 µs, devient 1,67×1051{,}67 \times 10^{5} secondes, soit environ 1,91{,}9 jour. Le disque, à 8 ms, devient 2,67×1072{,}67 \times 10^{7} secondes, soit environ 309 jours, c'est-à-dire dix mois. Prendre une donnée dans un registre est aussi immédiat que la lire sur son bureau ; aller la chercher sur le disque revient à commander un livre qui arrivera dans dix mois.

c) Raison PHYSIQUE : une mémoire rapide doit être proche du processeur, or la lumière parcourt 30 centimètres en une nanoseconde ; à quelques nanosecondes de budget, la mémoire doit tenir à quelques centimètres, ce qui limite sévèrement sa taille. S'y ajoute qu'une cellule rapide occupe beaucoup plus de transistors qu'une cellule lente. Raison ÉCONOMIQUE : le coût par octet varie dans le même rapport que la vitesse, de plusieurs ordres de grandeur. Une machine dont toute la mémoire serait aussi rapide qu'un cache serait techniquement possible et commercialement absurde. La hiérarchie est donc un compromis, pas une imperfection.

d) Parce que la mémoire ne se lit pas octet par octet mais par BLOCS : un accès charge dans le cache une ligne entière, typiquement 64 octets, soit 16 entiers de 4 octets. Dans un parcours ordonné, un accès sur seize seulement va réellement en mémoire vive, les quinze suivants trouvant leur donnée dans le cache. Dans un parcours aléatoire, presque chaque accès tombe sur une ligne différente, donc chacun paie le prix fort. Le nombre d'accès du programme est identique, mais le nombre d'accès à la MÉMOIRE ne l'est pas, et c'est lui qui compte. C'est la raison pour laquelle deux algorithmes de même complexité peuvent différer d'un facteur dix en pratique.

e) Avec 95 pour cent de succès : 0,95×1+0,05×80=0,95+4,00=4,950{,}95 \times 1 + 0{,}05 \times 80 = 0{,}95 + 4{,}00 = 4{,}95 ns. Avec 80 pour cent : 0,80×1+0,20×80=0,80+16,00=16,800{,}80 \times 1 + 0{,}20 \times 80 = 0{,}80 + 16{,}00 = 16{,}80 ns. Le temps moyen est multiplié par 16,80/4,953,3916{,}80 / 4{,}95 \approx 3{,}39 alors que le taux de succès n'a baissé que de 15 points. La raison est que le temps moyen est dominé par les ÉCHECS, cent fois plus coûteux : ce sont eux qu'il faut compter, jamais les succès. C'est exactement le même raisonnement que celui de l'exercice 6 sur l'échange de pages, avec des ordres de grandeur plus modestes.

Exercice 10 : Problème : diagnostiquer un poste lent

Un poste de la salle informatique est devenu très lent. Il porte un processeur à 2,4 GHz à 4 coeurs, 8 Gio de mémoire vive, un disque à plateaux, et il est relié au réseau du lycée en 100 Mbit/s. On veut trouver la cause avant de commander quoi que ce soit.

  • a) Un outil de surveillance indique : processeur à 12 pour cent, mémoire à 99 pour cent, disque à 100 pour cent, réseau à 3 pour cent. Nommez le goulot et justifiez en une phrase.
  • b) Le poste échange 240 Mio par minute avec le disque. Sachant qu'une page fait 4 kio et qu'un accès disque coûte 8 ms, combien de pages sont échangées par minute et combien de temps le disque passe-t-il à les servir ? Le chiffre est-il cohérent avec l'indication à 100 pour cent ?
  • c) On propose trois achats : un processeur à 4 GHz, 16 Gio de mémoire supplémentaires, un disque à mémoire flash à 50 µs d'accès. Estimez l'effet de chacun sur le temps de la question b et classez-les.
  • d) Un logiciel de la salle charge en mémoire un fichier de 6 Gio pour n'en lire qu'une colonne. Proposez la correction logicielle et estimez la mémoire réellement nécessaire si la colonne représente un quinzième du fichier.
  • e) Rédigez en cinq lignes le diagnostic et la recommandation à remettre au responsable de la salle, en distinguant ce qui se corrige sans dépense de ce qui demande un achat.

Tape tes réponses, la page te dit juste ou faux 0/7

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Goulot : la mémoire
  • b) 61 440 pages, 491,5491{,}5 s par minute
  • c) Mémoire d'abord, flash ensuite
  • d) Lecture en flux : 400 Mio
  • e) Corriger le logiciel avant d'acheter

a) Le goulot est la MÉMOIRE, et le disque n'en est que le symptôme. Un processeur à 12 pour cent signifie qu'il attend la plupart du temps ; une mémoire à 99 pour cent et un disque à 100 pour cent signifient que le système échange des pages en permanence, exactement le phénomène décrit à l'exercice 6. Le réseau, à 3 pour cent, est hors de cause.

b) Deux cent quarante mébioctets font 240×1 024=245 760240 \times 1\ 024 = 245\ 760 kio, soit 245 760/4=61 440245\ 760 / 4 = 61\ 440 pages par minute. À 8 ms par accès, cela demande 61 440×8×103=491,561\ 440 \times 8 \times 10^{-3} = 491{,}5 secondes de disque par minute. Or une minute n'en compte que 60 : la demande dépasse la capacité d'un facteur 491,5/608,2491{,}5 / 60 \approx 8{,}2. Le chiffre est donc parfaitement cohérent avec un disque à 100 pour cent, et il dit même davantage : le disque est saturé huit fois, ce qui signifie que les programmes attendent en file et que la machine est effectivement inutilisable.

c) Le processeur à 4 GHz ne change RIEN : il est déjà inoccupé à 88 pour cent, et l'accélérer ne ferait qu'augmenter son temps d'attente. Les 16 Gio de mémoire supprimeraient la cause : avec 24 Gio au total, plus aucune page ne serait échangée, le temps de disque tomberait à presque zéro et la machine retrouverait sa vitesse nominale. Le disque à mémoire flash ne supprimerait pas la cause mais diviserait le coût de chaque échange par 8×103/(50×106)=1608 \times 10^{-3} / (50 \times 10^{-6}) = 160 : les 491,5491{,}5 secondes deviendraient 3,073{,}07 secondes par minute, soit environ 5 pour cent d'occupation, ce qui rendrait la machine de nouveau utilisable. Classement : la mémoire d'abord, parce qu'elle traite la cause ; la mémoire flash ensuite, parce qu'elle traite l'effet mais très efficacement ; le processeur en dernier, parce qu'il ne traite rien.

d) La correction logicielle est de lire le fichier en FLUX, ligne par ligne, en ne conservant que la colonne utile, au lieu de tout charger en mémoire. Si la colonne représente un quinzième du fichier, la mémoire nécessaire tombe à 6/15=0,46 / 15 = 0{,}4 Gio, soit 400 Mio, plus un tampon de lecture de quelques mébioctets. On passe de 6 Gio à moins d'un demi-gibioctet, soit un facteur 15, sans acheter quoi que ce soit et sans changer le résultat produit. C'est de loin la meilleure des solutions envisagées jusqu'ici.

e) Le diagnostic et la recommandation. Un, le poste n'est pas lent par manque de puissance de calcul : le processeur est inoccupé à 88 pour cent, et le remplacer serait une dépense inutile. Deux, la cause est un manque de mémoire vive, qui contraint le système à échanger 61 440 pages par minute avec le disque, soit huit fois plus que ce que celui-ci peut servir. Trois, sans aucune dépense, corriger le logiciel qui charge 6 Gio pour n'en lire qu'un quinzième ramènerait le besoin à 400 Mio et supprimerait probablement le problème à lui seul. Quatre, si la correction logicielle est impossible, porter la mémoire de 8 à 24 Gio traite la cause ; à défaut, un disque à mémoire flash divise le coût d'un échange par 160 et rend la machine utilisable sans la guérir. Cinq, ne rien commander avant d'avoir tenté la correction logicielle, qui est gratuite, réversible et bénéficie à tous les postes de la salle.

Partie C : les classiques (/50)

Exercice 11 : Le protocole du bit alterné

Sur une liaison qui peut perdre des trames, la machine A envoie des messages à la machine B. Chaque message porte un bit de contrôle, 0 pour le premier, puis alternativement 1, 0, 1. À la réception d'un message, B renvoie un acquittement portant le même bit. A n'envoie le message suivant qu'après avoir reçu l'acquittement attendu ; si rien n'arrive au bout de 100 ms, A renvoie le même message. Si B reçoit un message dont le bit est celui du dernier message déjà accepté, il le jette comme doublon, mais renvoie l'acquittement.

Un trajet d'une trame, dans un sens ou dans l'autre, dure 20 ms ; on néglige les temps de traitement.

  • a) A envoie trois messages M1, M2 et M3, sans aucune perte. Quels bits portent-ils ? Combien de trames circulent en tout ?
  • b) Cette fois, l'acquittement de M1 est perdu. Décrivez ce que fait A, puis ce que fait B en recevant de nouveau M1. Combien de trames sont émises en tout, trame perdue comprise, et combien de messages B transmet-il à son application ?
  • c) Que se passerait-il, dans la situation de la question b, si les messages ne portaient aucun bit de contrôle ?
  • d) Pourquoi un seul bit suffit-il, alors qu'on envoie des milliers de messages ?
  • e) Combien de temps dure l'envoi des trois messages sans perte ? Et avec la perte de la question b ? Combien de messages par seconde la liaison écoule-t-elle au mieux ?

Tape tes réponses, la page te dit juste ou faux 0/9

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Bits 0, 1, 0 : 6 trames
  • b) Renvoi, doublon jeté : 8 trames, 3 messages
  • c) Sans bit : M1 livré deux fois
  • d) Deux cas à distinguer : un bit
  • e) 120 ms, puis 220 ms ; 25 messages/s

a) M1 porte le bit 0, M2 le bit 1 et M3 le bit 0. Chaque message est suivi de son acquittement : 3 messages et 3 acquittements, soit 6 trames.

b) A ne reçoit pas l'acquittement de M1 : au bout de 100 ms, il RENVOIE M1, toujours avec le bit 0. B, qui a déjà accepté un message de bit 0 et attend maintenant le bit 1, reconnaît un doublon : il le jette, mais renvoie l'acquittement 0, puisque c'est précisément la perte de cet acquittement qui a provoqué le renvoi. A reçoit enfin l'acquittement et passe à M2. Trames émises : 4 messages et 4 acquittements, dont un perdu, soit 8. B transmet exactement 3 messages à son application : M1, M2 et M3, sans doublon.

c) B ne pourrait pas distinguer un renvoi de M1 d'un nouveau message : il transmettrait M1 DEUX fois à son application. Pour un virement bancaire ou une commande, cela signifie une opération exécutée deux fois, sans que personne ne s'en aperçoive.

d) Parce que A n'envoie jamais un nouveau message tant que le précédent n'est pas acquitté. À tout moment, B n'a que deux cas à distinguer : c'est encore le message qu'il a déjà reçu, ou c'est le suivant. Deux cas se codent sur un bit. Il faudrait davantage de bits si A envoyait plusieurs messages d'avance sans attendre.

e) Sans perte, chaque échange dure 20+20=4020 + 20 = 40 ms : les trois messages prennent 3×40=1203 \times 40 = 120 ms. Avec la perte : M1 part à 0 ms, l'acquittement est perdu, le délai expire à 100 ms ; le renvoi arrive à 120 ms et son acquittement à 140 ms ; M2 et M3 prennent ensuite 40 ms chacun, d'où une fin à 220 ms. Au mieux, la liaison écoule 1 00040=25\frac{1\ 000}{40} = 25 messages par seconde : attendre chaque acquittement est sûr, mais lent.

Exercice 12 : Encapsulation : du fichier aux trames

Un fichier de 4 000 octets est envoyé sur Internet. La couche transport (TCP) le découpe en segments de 1 460 octets de données au plus, et ajoute à chacun un en-tête de 20 octets. La couche réseau (IP) ajoute un en-tête de 20 octets, et la couche liaison (Ethernet) ajoute 18 octets d'en-tête et de fin de trame.

  • a) En combien de segments le fichier est-il découpé ? Combien d'octets de données le dernier contient-il ?
  • b) Quelle est la taille d'une trame pleine ? Et celle de la dernière trame ?
  • c) Combien d'octets circulent en tout sur le câble ? Quel est le surcoût des en-têtes rapporté aux 4 000 octets de données, en pour cent ?
  • d) Dans quel ordre les en-têtes sont-ils ajoutés à l'émission ? Quel en-tête un routeur lit-il pour choisir la direction d'un paquet ?
  • e) Dans un terminal à distance, chaque touche frappée part dans un segment contenant un seul octet de données. Quelle est la taille de la trame, et combien de fois le surcoût dépasse-t-il la donnée ?

Tape tes réponses, la page te dit juste ou faux 0/9

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 3 segments, 1 080 octets au dernier
  • b) 1 518 et 1 138 octets
  • c) 4 174 octets, surcoût 4,354{,}35 %
  • d) TCP, IP, Ethernet ; le routeur lit IP
  • e) 59 octets pour un octet utile

a) 4 0001 4602,74\frac{4\ 000}{1\ 460} \approx 2{,}74 : deux segments pleins ne suffisent pas, il en faut 3. Les deux premiers portent 2×1 460=2 9202 \times 1\ 460 = 2\ 920 octets, le dernier 4 0002 920=1 0804\ 000 - 2\ 920 = 1\ 080 octets.

b) Une trame pleine mesure 1 460+20+20+18=1 5181\ 460 + 20 + 20 + 18 = 1\ 518 octets. La dernière mesure 1 080+58=1 1381\ 080 + 58 = 1\ 138 octets. Les 58 octets d'en-têtes sont les mêmes quelle que soit la quantité de données.

c) Total : 2×1 518+1 138=4 1742 \times 1\ 518 + 1\ 138 = 4\ 174 octets. Le surcoût vaut 3×58=1743 \times 58 = 174 octets, soit 1744 0004,35\frac{174}{4\ 000} \approx 4{,}35 pour cent des données. Pour un gros fichier, découpé en trames pleines, les en-têtes restent une petite fraction.

d) À l'émission, on descend les couches : l'application fournit les données, TCP ajoute son en-tête, puis IP, puis Ethernet, qui est donc à l'extérieur. C'est l'ENCAPSULATION, comme une lettre glissée dans une enveloppe, elle-même glissée dans un sac postal. Un routeur lit l'en-tête IP, qui porte l'adresse de destination, pour choisir la direction ; il retire l'enveloppe Ethernet et en remet une nouvelle pour le lien suivant, sans ouvrir le segment TCP.

e) La trame mesure 1+58=591 + 58 = 59 octets pour un octet utile : le surcoût de 58 octets dépasse la donnée 58 fois. C'est pourquoi les protocoles regroupent volontiers plusieurs petits envois en un seul segment quand c'est possible : le coût d'un paquet ne dépend presque pas de ce qu'il transporte.

Exercice 13 : Droits en octal et enchaînement de commandes

Sous Linux, chaque groupe de trois droits rwx se code par un chiffre : r vaut 4, w vaut 2, x vaut 1, et l'on additionne. Le shell permet aussi de rediriger l'affichage d'une commande dans un fichier avec > ou >>, et de passer la sortie d'une commande en entrée de la suivante avec le tube |.

Le fichier notes.csv contient les six lignes du tableau ci-dessous, en-tête compris.

Contenu de notes.csv
nom;matiere;note
Ada;NSI;16
Bob;Maths;12
Eve;NSI;14
Lin;NSI;9
Noé;Physique;15
  • a) Écrivez rwxr-xr-- en octal. Quels droits donne la commande chmod 640 rapport.txt ?
  • b) Le fichier sauve.sh a les droits rw-r--r--. Que répond le système à ./sauve.sh ? Donnez la commande chmod en octal qui permet au seul propriétaire de l'exécuter, sans changer les autres droits.
  • c) On exécute echo a > f.txt, puis echo b >> f.txt, puis echo c > f.txt. Que contient f.txt ?
  • d) Qu'affiche cat notes.csv | grep NSI | wc -l ? Décrivez le rôle de chaque étape.
  • e) Un répertoire contient les fichiers a.txt, b.txt et c.txt. On exécute cp a.txt d.txt, puis mv b.txt e.txt, puis rm c.txt. Combien de fichiers contient-il, et lesquels ?

Tape tes réponses, la page te dit juste ou faux 0/8

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 754 ; chmod 640 : rw-r-----
  • b) Permission denied : chmod 744
  • c) > écrase : f.txt contient c
  • d) 3 lignes contiennent NSI
  • e) a.txt, d.txt, e.txt

a) rwx vaut 4+2+1=74 + 2 + 1 = 7, r-x vaut 4+1=54 + 1 = 5, r-- vaut 4 : rwxr-xr-- s'écrit 754. chmod 640 donne 6 = rw- au propriétaire, 4 = r-- au groupe, 0 = --- aux autres : rw-r-----.

b) Le système répond Permission denied : personne n'a le droit x. Il faut ajouter x au propriétaire seulement : rw- devient rwx, soit 7, et le reste ne change pas : chmod 744 sauve.sh, qui donne rwxr--r--. Le piège est d'écrire chmod 777, qui donne aussi le droit d'écriture à tout le monde.

c) f.txt contient seulement c. La redirection > ÉCRASE le fichier : le premier echo écrit a, le second ajoute b grâce à >>, mais le troisième, avec >, remplace tout le contenu par c. Confondre > et >> est la manière la plus rapide de perdre un fichier de résultats.

d) cat affiche les six lignes du fichier ; grep NSI ne laisse passer que les lignes contenant la chaîne NSI, celles d'Ada, d'Eve et de Lin ; wc -l compte les lignes reçues. L'affichage est 3. Chaque commande ne fait qu'une chose, et le tube | les assemble : c'est le principe de conception des outils Unix.

e) cp crée une copie : a.txt reste et d.txt apparaît, soit 4 fichiers. mv renomme : b.txt disparaît et e.txt apparaît, toujours 4. rm supprime c.txt : il reste 3 fichiers, a.txt, d.txt et e.txt. Le piège est de croire que mv copie : il déplace.

Exercice 14 : Problème : le circuit de vote majoritaire

Trois juges a, b et c appuient chacun sur un bouton, qui vaut 1 s'ils acceptent et 0 sinon. Une lampe M doit s'allumer quand AU MOINS DEUX juges acceptent. On veut construire le circuit avec des portes ET et OU à deux entrées.

  • a) Dressez la table de vérité de M pour les huit combinaisons de a, b et c. Combien de lignes allument la lampe ?
  • b) Justifiez que M = (a ET b) OU (a ET c) OU (b ET c). Combien de portes à deux entrées faut-il pour réaliser cette expression ?
  • c) Vérifiez l'expression pour a = 1, b = 0, c = 1, puis pour a = 0, b = 0, c = 1.
  • d) Écrivez une fonction Python majorite(a, b, c) en une seule instruction return, d'abord avec and et or, puis avec une somme.
  • e) Le jury compte maintenant cinq juges, et M s'allume à partir de trois acceptations. Combien la table de vérité a-t-elle de lignes, et combien allument la lampe ? Combien de termes ET à trois entrées l'expression analogue contient-elle ?

Tape tes réponses, la page te dit juste ou faux 0/8

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 4 lignes sur 8
  • b) 3 ET et 2 OU : 5 portes
  • c) 1 puis 0
  • d) a + b + c >= 2
  • e) 32 lignes, 16 allumées, 10 termes

a) La lampe s'allume pour 011, 101, 110 et 111, c'est-à-dire quand deux ou trois boutons valent 1 : 4 lignes sur 8. Elle reste éteinte pour 000, 001, 010 et 100.

b) « Au moins deux juges acceptent » signifie qu'il existe une PAIRE de juges qui acceptent tous les deux : la paire a et b, ou la paire a et c, ou la paire b et c. Chaque paire se teste par un ET, et l'existence d'une paire par un OU. Il faut 3 portes ET et 2 portes OU, car un OU à trois entrées se réalise avec deux OU à deux entrées : 5 portes au total.

c) Pour 101 : a ET b vaut 0, a ET c vaut 1, b ET c vaut 0 ; le OU vaut 1, la lampe s'allume, et deux juges ont bien accepté. Pour 001 : les trois ET valent 0, donc M vaut 0, et un seul juge a accepté.

d) return (a and b) or (a and c) or (b and c), ou, les boutons valant 0 ou 1, return a + b + c >= 2. La seconde écriture traduit directement l'énoncé et se généralise à n juges ; la première traduit le circuit.

e) Avec cinq entrées, la table a 25=322^{5} = 32 lignes. La lampe s'allume pour 3, 4 ou 5 acceptations : (53)+(54)+(55)=10+5+1=16\binom{5}{3} + \binom{5}{4} + \binom{5}{5} = 10 + 5 + 1 = 16 lignes, exactement la moitié, par symétrie. L'expression analogue teste chaque TRIO de juges : il y en a (53)=10\binom{5}{3} = 10, donc 10 termes ET à trois entrées. Le circuit grossit vite, alors que la version par somme, a + b + c + d + e >= 3, reste courte : un additionneur et un comparateur remplacent l'énumération.

Exercice 15 : Problème : multiplier par décalages

Décaler un nombre binaire d'un rang vers la gauche, en ajoutant un 0 à droite, le multiplie par 2 ; le décaler vers la droite le divise par 2 en jetant le dernier bit. En Python, ce sont les opérateurs << et >>. Les processeurs multiplient en combinant décalages et additions, ce qui est bien plus rapide que des additions répétées. On travaille sur des octets.

  • a) Que valent 13 << 1, 13 << 3 et 104 >> 2 ? Écrivez 13 et 13 << 3 en binaire sur 8 bits.
  • b) On calcule 13 × 11 en écrivant 11 en binaire. Détaillez les décalages et les additions nécessaires, et vérifiez le résultat.
  • c) Le résultat de 13 × 11 tient-il sur un octet non signé ? Et celui de 13 × 25 ? Que contient l'octet dans ce second cas ?
  • d) Pour calculer 13 × 200, combien d'additions faut-il avec des additions répétées ? Et avec la méthode par décalages ?
  • e) −20 s'écrit 11101100 en complément à deux. Que donne un décalage à droite qui ajoute un 0 à gauche ? Et un décalage qui recopie le bit de signe ? Lequel divise correctement par 2 ?

Tape tes réponses, la page te dit juste ou faux 0/11

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 26, 104, 26
  • b) 104+26+13=143104 + 26 + 13 = 143
  • c) 143 tient ; 325 devient 69
  • d) 200 additions contre 3 termes
  • e) 118 faux, −10 juste : décalage arithmétique

a) 13 s'écrit 00001101. 13 << 1 vaut 26 ; 13 << 3 vaut 13×23=10413 \times 2^{3} = 104, soit 01101000 : les trois bits 1 ont glissé de trois rangs vers la gauche. 104 >> 2 vaut 1044=26\frac{104}{4} = 26.

b) 11=10112=8+2+111 = 1011_{2} = 8 + 2 + 1, donc 13×11=13×8+13×2+13×113 \times 11 = 13 \times 8 + 13 \times 2 + 13 \times 1. On décale 13 de 3 rangs, 104, puis de 1 rang, 26, et on garde 13 : trois additions de termes, un par bit 1 de 11. 104+26+13=143104 + 26 + 13 = 143, et l'on vérifie 13×11=14313 \times 11 = 143.

c) Un octet non signé va jusqu'à 255 : 143 tient. 13×25=32513 \times 25 = 325 ne tient pas : l'octet ne garde que les 8 bits de poids faible, soit 325256=69325 - 256 = 69. Le produit est faux sans aucun message, exactement comme le débordement de l'exercice 1.

d) Avec des additions répétées, il faut ajouter 13 deux cents fois : 200 additions. Avec les décalages, 200=110010002=128+64+8200 = 11001000_{2} = 128 + 64 + 8 contient trois bits 1 : trois termes à additionner, obtenus par des décalages de 7, 6 et 3 rangs. Le nombre d'opérations dépend du nombre de BITS du multiplicateur, au plus 8 sur un octet, et non de sa valeur.

e) Avec un 0 ajouté à gauche : 01110110, qui vaut 118. Le nombre est devenu positif : c'est faux. En recopiant le bit de signe : 11110110, qui vaut 246256=10246 - 256 = -10, bien la moitié de −20. Le décalage qui recopie le bit de signe, appelé décalage ARITHMÉTIQUE, est le seul correct pour les entiers signés ; Python applique d'ailleurs cette règle avec >>, puisque -20 >> 1 vaut -10.

Chapitre précédent Interactions homme-machine sur le Web

Ce chapitre resservira dans

Les chapitres qui le réclament en amont, plus tard dans l'année ou dans les années suivantes.

Voir aussi

Vous cherchez un tuteur en NSI à Montréal ?

Contactez-moi pour une première séance. C'est le chapitre de NSI où les élèves de Première décrochent le plus, parce qu'il ne ressemble à rien de ce qu'ils ont vu avant ; il se rattrape très bien en quelques séances.

Site par Studio Squalli