Maths & NSI

Première

Architectures matérielles et systèmes d'exploitation

Derrière l'exécution d'un programme se cache une organisation matérielle précise, le modèle de von Neumann, ainsi qu'un logiciel qui pilote l'ensemble des ressources de la machine : le système d'exploitation. Un ordinateur ne fonctionne cependant jamais seul : il communique avec d'autres machines à travers un réseau, et interagit avec le monde extérieur grâce à des périphériques d'entrée et de sortie (capteurs, actionneurs). Ce chapitre présente ces quatre aspects, indispensables pour comprendre comment un ordinateur fonctionne réellement et communique avec son environnement.

L'architecture de von Neumann

Les grands constituants d'un ordinateur

Le modèle de von Neumann, proposé dans les années 1940, décrit l'organisation encore utilisée aujourd'hui dans la quasi-totalité des ordinateurs. Il repose sur trois grands éléments, reliés entre eux par des bus :

  • Le processeur (CPU), qui exécute les instructions. Il comprend :
    • l'unité de commande (UC), qui lit et décode les instructions les unes après les autres, et pilote leur exécution ; elle contient notamment le compteur de programme (Program Counter, PC), qui indique l'adresse de la prochaine instruction à exécuter, ainsi que le registre d'instruction ;
    • l'unité arithmétique et logique (UAL), qui réalise effectivement les calculs (additions, comparaisons, opérations booléennes...) ;
    • des registres internes, de petites mémoires très rapides qui stockent temporairement les valeurs manipulées.
  • La mémoire vive (RAM), qui stocke à la fois les données et les instructions du programme en cours d'exécution, sous forme binaire. C'est la caractéristique fondamentale du modèle de von Neumann : données et programmes partagent la même mémoire. Elle est volatile : son contenu est perdu à l'extinction de la machine, contrairement à la mémoire de masse (disque dur, SSD).
  • Les bus, qui relient le processeur à la mémoire :
    • le bus d'adresses, qui transmet l'adresse de la case mémoire à lire ou écrire ;
    • le bus de données, qui transporte les données elles-mêmes entre le processeur et la mémoire ;
    • le bus de contrôle, qui coordonne le fonctionnement de l'ensemble (signaux de lecture/écriture, synchronisation...).

Le cycle d'exécution

Le processeur répète en boucle, au rythme d'une horloge, le cycle suivant :

  1. Lecture : l'adresse contenue dans le compteur de programme (PC) est envoyée à la mémoire, qui renvoie l'instruction qui s'y trouve.
  2. Décodage : l'instruction est interprétée (code opération + opérandes).
  3. Exécution : l'UAL (ou une autre partie du processeur) réalise l'opération demandée.
  4. Incrémentation du compteur de programme, pour pointer vers l'instruction suivante.

Dérouler une séquence d'instructions simplifiées

Pour raisonner sur ce cycle, on utilise un jeu d'instructions très simplifié, proche du langage machine :

  • LOAD Rx, valeur : place la valeur donnée dans le registre Rx ;
  • ADD Rx, Ry : remplace le contenu de Rx par Rx + Ry ;
  • STORE Rx, adresse : écrit le contenu de Rx en mémoire, à l'adresse donnée.

Exemple. Déroulons la séquence suivante :

1: LOAD R0, 5
2: LOAD R1, 3
3: ADD R0, R1
4: STORE R0, 100
Après l'instructionR0R1Mémoire[100]
15??
253?
383?
4838

À la fin, la valeur 88 (soit 5+35+3) est stockée en mémoire à l'adresse 100100.

Exercice — Dérouler une séquence d'instructions

On utilise le même jeu d'instructions simplifié que dans le cours, complété par SUB Rx, Ry (remplace le contenu de Rx par Rx - Ry). Dérouler la séquence suivante en indiquant le contenu de R0 et R1 après chaque instruction, ainsi que la valeur finalement stockée en mémoire :

1: LOAD R0, 8
2: LOAD R1, 2
3: SUB R0, R1
4: ADD R0, R0
5: STORE R0, 200
Exercice — Le rôle des bus lors d'une instruction

On reprend le jeu d'instructions et le cycle d'exécution décrits dans le cours. On exécute l'instruction STORE R0, 100, sachant que le registre R0 contient la valeur 8 au moment de cette instruction.

  1. Parmi les trois bus décrits dans le cours (bus d'adresses, bus de données, bus de contrôle), lequel transporte la valeur 100 ? Lequel transporte la valeur 8 ?
  2. Quel est le rôle du bus de contrôle lors de l'exécution de cette instruction ?
  3. On considère maintenant l'instruction LOAD R1, 3, qui place la valeur immédiate 3 directement dans le registre R1 (rappel du cours : cette instruction ne fait pas intervenir la mémoire). Cette instruction utilise-t-elle l'un des trois bus reliant le processeur à la mémoire pour transmettre la valeur 3 ? Justifier.
  4. Le compteur de programme (PC) indique l'adresse de la prochaine instruction à exécuter. Lorsque le processeur va chercher cette instruction en mémoire (étape "Lecture" du cycle), quel bus transporte la valeur du PC vers la mémoire, et quel bus renvoie l'instruction lue par la mémoire ?
Exercice — Dérouler une séquence avec un jeu d'instructions étendu

On complète le jeu d'instructions du cours avec deux nouvelles instructions :

  • MOVE Rx, Ry : copie le contenu de Ry dans Rx (le contenu de Ry reste inchangé) ;
  • INC Rx : ajoute 1 au contenu de Rx.

Dérouler la séquence suivante en indiquant le contenu de R0, R1 et R2 après chaque instruction, ainsi que la valeur finalement stockée en mémoire :

1: LOAD R0, 4
2: LOAD R1, 10
3: MOVE R2, R1
4: INC R2
5: ADD R0, R2
6: INC R0
7: STORE R0, 300
Exercice — Un second jeu d'instructions : LDR, STR, ADD et SUB

D'après un devoir surveillé de NSI Première (2020-2021).

De nombreux simulateurs de processeur utilisés en NSI emploient le jeu d'instructions suivant, un peu différent de celui du cours mais fondé sur les mêmes idées. Le premier opérande est toujours le registre qui reçoit le résultat ; le dernier opérande de ADD et SUB est soit une valeur immédiate, notée avec #, soit un registre.

InstructionExempleEffet
LDRLDR R0, 102copie dans R0 le mot stocké en mémoire à l'adresse 102
STRSTR R1, 63écrit le contenu de R1 en mémoire, à l'adresse 63
MOVMOV R0, R2copie le contenu de R2 dans R0 (sans accès à la mémoire)
ADDADD R0, R3, #13écrit dans R0 la somme du contenu de R3 et du nombre 13
SUBSUB R1, R2, R0écrit dans R1 le contenu de R2 moins le contenu de R0

1. Quelle instruction additionne le nombre 1 et le contenu du registre R2, puis range le résultat dans R0 ?

A. ADD R1, R2, R0 — B. ADD R2, R0, #1 — C. ADD R0, R2, #1 — D. ADD R0, R2, R1

2. Écrire un programme qui calcule la différence entre la valeur stockée à l'adresse mémoire 6 et celle stockée à l'adresse 7 (valeur de l'adresse 6 moins valeur de l'adresse 7), puis range le résultat à l'adresse 18. On utilisera au plus trois registres.

3. La mémoire contient 25 à l'adresse 6 et 9 à l'adresse 7. Donner le contenu des registres et de l'adresse 18 après chaque instruction de votre programme.

4. La mémoire contient 7 à l'adresse 10. Que contient l'adresse 11 après l'exécution du programme suivant ?

LDR R0, 10
ADD R1, R0, #5
ADD R2, R1, R0
STR R2, 11

QCM — Architecture de von Neumann

1. Quel est le rôle principal de la mémoire vive (RAM) dans l'architecture de von Neumann ?
2. Que fait l'unité de commande (UC) du processeur ?
3. On exécute la séquence suivante : 1: LOAD R0, 4 ; 2: LOAD R1, 6 ; 3: ADD R0, R1 ; 4: ADD R0, R1 ; 5: STORE R0, 200. Que vaut Mémoire[200] à la fin ?
4. Dans le modèle d'architecture de von Neumann, en combien de grandes parties un ordinateur se décompose-t-il ?
5. Quel est le rôle du processeur dans un ordinateur ?
6. Quel est le rôle de l'unité arithmétique et logique (UAL) d'un processeur ?
7. Parmi les éléments suivants, lequel fait partie des dispositifs d'entrée-sortie (les périphériques) du modèle de von Neumann ?

Transmission de données dans un réseau

Qu'est-ce qu'un réseau ?

Un réseau informatique est un ensemble de machines reliées entre elles, capables d'échanger des données. On y distingue plusieurs types d'équipements :

  • un poste (ou une machine, un hôte) : un ordinateur, un serveur, ou plus généralement tout appareil connecté au réseau ;
  • un commutateur (switch), qui relie entre elles les machines d'un même réseau local et aiguille chaque donnée reçue directement vers son destinataire ;
  • un routeur, qui relie entre eux plusieurs réseaux différents — par exemple un réseau local à Internet (son fonctionnement détaillé, notamment le routage, est étudié en classe de terminale).

Chaque machine possède une adresse, qui permet de l'identifier sur le réseau, un peu comme une adresse postale identifie un destinataire pour le courrier.

Le découpage des données en paquets

Lorsqu'une donnée volumineuse (un fichier, une page web...) doit être transmise sur un réseau, elle n'est presque jamais envoyée en une seule fois : elle est découpée en unités de taille limitée, appelées paquets. Ce découpage présente plusieurs intérêts :

  • il permet à plusieurs communications de partager équitablement la capacité du réseau, en faisant circuler les paquets des unes et des autres à tour de rôle, plutôt que de réserver tout le réseau à une seule transmission ;
  • en cas de perte ou d'erreur sur un paquet, il suffit de retransmettre ce seul paquet, et non l'intégralité de la donnée ;
  • les paquets d'une même donnée peuvent éventuellement emprunter des chemins différents à travers le réseau, avant d'être réassemblés dans l'ordre à l'arrivée.

L'encapsulation

Avant d'être émis sur le réseau, chaque paquet est enrichi des informations nécessaires à son acheminement et à son contrôle : c'est l'encapsulation. Concrètement, on ajoute un en-tête au début des données, qui peut par exemple contenir l'adresse de l'expéditeur, l'adresse du destinataire, ou des informations permettant de détecter une erreur de transmission.

En pratique, une donnée traverse généralement plusieurs niveaux de traitement successifs avant son émission, et chaque niveau ajoute son propre en-tête à ce que lui a transmis le niveau précédent — un peu comme des enveloppes empilées les unes dans les autres :

Donnée d'origine :                      Bonjour
Après un 1er en-tête (ex. transport) :  [ en-tête transport | Bonjour ]
Après un 2e en-tête (ex. réseau) :      [ en-tête réseau | en-tête transport | Bonjour ]
Après un 3e en-tête (ex. liaison) :     [ en-tête liaison | en-tête réseau | en-tête transport | Bonjour ]

Le paquet ainsi obtenu est celui qui circule réellement sur le réseau. À la réception, la machine destinataire effectue l'opération inverse, la désencapsulation : elle retire les en-têtes un par un, dans l'ordre inverse de leur ajout, jusqu'à retrouver la donnée d'origine.

Le protocole du bit alterné

Un réseau n'est pas parfaitement fiable : un paquet peut se perdre en chemin, ou son accusé de réception peut lui-même se perdre au retour. Le protocole du bit alterné est un protocole simple qui permet à un émetteur de s'assurer qu'un paquet a bien été reçu par le destinataire, et de le retransmettre si ce n'est pas le cas. Son principe est le suivant :

  • l'émetteur associe à chaque paquet envoyé un bit de séquence, qui vaut alternativement 0 ou 1 (d'où le nom du protocole) ;
  • après avoir envoyé un paquet, l'émetteur attend un accusé de réception (noté ACK, pour acknowledgement) contenant ce même bit, avant d'envoyer le paquet suivant ;
  • si l'émetteur ne reçoit aucun accusé de réception avant l'expiration d'un délai fixé (un timeout), il considère que le paquet — ou son accusé de réception — a été perdu, et retransmet le même paquet, avec le même bit ;
  • le récepteur compare le bit du paquet reçu à celui du dernier paquet qu'il a déjà accepté : si les deux bits sont identiques, il s'agit d'une retransmission d'un paquet déjà reçu (l'accusé de réception précédent avait dû se perdre) ; le récepteur ne traite pas une deuxième fois cette donnée, mais renvoie tout de même un accusé de réception, pour que l'émetteur puisse progresser.

Exemple. L'émetteur souhaite transmettre deux paquets de données, notés A puis B. Le paquet B est perdu lors d'un premier envoi.

ÉtapeÉmetteur envoieReçu par le destinataire ?Réponse du récepteurBit suivant de l'émetteur
1Paquet(bit=0, A)ouiACK(0)—
2(reçoit ACK(0))——passe à 1
3Paquet(bit=1, B)non, perdu(rien, timeout)reste à 1
4Paquet(bit=1, B) (retransmission)ouiACK(1)—
5(reçoit ACK(1))——passe à 0

Au total, le paquet B a dû être envoyé deux fois, mais le destinataire n'a reçu et traité chaque donnée (A, puis B) qu'une seule fois, dans le bon ordre, malgré la perte survenue sur le réseau.

Ce protocole illustre une idée plus générale : sur un réseau, la fiabilité d'une transmission (ne rien perdre, ne rien dupliquer) doit être assurée par un protocole, et non par le simple espoir que le support physique ne fera jamais d'erreur. Cette capacité à simuler ou mettre en œuvre un petit réseau est généralement travaillée en classe lors d'un TP dédié, à l'aide d'un logiciel de simulation, qui permet d'observer concrètement l'échange de paquets entre postes, commutateurs et routeurs.

Exercice — Identifier les couches d'encapsulation

On considère un message ordinaire, Bonjour, envoyé par une application à travers un réseau. Après son passage à travers plusieurs niveaux de traitement, le paquet réellement transmis sur le réseau a la structure schématique suivante :

[ en-tête liaison | en-tête réseau | en-tête transport | Bonjour ]
  1. Quelle partie de ce paquet correspond aux données produites par l'application, c'est-à-dire au message lui-même ?
  2. Combien de niveaux de traitement ont ajouté un en-tête à ce message avant son émission sur le réseau ?
  3. Pourquoi ajoute-t-on plusieurs en-têtes distincts, plutôt qu'un seul en-tête regroupant toutes les informations nécessaires ?
  4. Le destinataire reçoit ce paquet. Dans quel ordre doit-il retirer les en-têtes pour retrouver le message d'origine Bonjour ? Justifier.
Exercice — Paquets et surcoût de l'encapsulation

Un fichier de 50 500 octets doit être transmis sur un réseau où chaque paquet peut transporter au maximum 1 000 octets de données utiles. Chaque paquet reçoit ensuite, lors de l'encapsulation, un en-tête de 40 octets.

  1. Combien de paquets pleins (contenant chacun 1 000 octets de données) sont nécessaires ? Le fichier se découpe-t-il exactement en paquets pleins, ou reste-t-il des données pour un dernier paquet incomplet ?
  2. En déduire le nombre total de paquets nécessaires pour transmettre l'intégralité du fichier.
  3. Calculer la taille totale (données utiles + en-têtes) effectivement transmise sur le réseau.
  4. Calculer le surcoût dû à l'encapsulation, c'est-à-dire le rapport entre la taille totale des en-têtes et la taille initiale du fichier.
Exercice — Bit alterné : une perte de paquet

L'émetteur souhaite transmettre trois paquets de données à la suite, notés M1, M2 et M3, en utilisant le protocole du bit alterné présenté dans le cours. Le bit de séquence débute à 0. Cette fois, c'est le tout premier envoi du paquet M1 qui est perdu sur le réseau ; tous les envois suivants se déroulent normalement.

  1. Dresser, comme dans l'exemple du cours, le tableau étape par étape de cet échange (paquet envoyé, reçu ou non, réponse du récepteur, bit suivant de l'émetteur).
  2. Combien de paquets l'émetteur a-t-il dû envoyer au total sur le réseau ?
  3. Combien de données le destinataire a-t-il effectivement reçues et traitées, et dans quel ordre ?
Exercice — Bit alterné : quand l'accusé de réception se perd

On reprend le protocole du bit alterné. L'émetteur envoie un paquet de données noté P, avec le bit de séquence 0. Cette fois, le paquet P est bien reçu par le destinataire (qui le traite normalement), mais c'est l'accusé de réception ACK(0) renvoyé par le destinataire qui se perd sur le chemin du retour, sans jamais parvenir à l'émetteur.

  1. Que fait l'émetteur, n'ayant reçu aucun accusé de réception avant l'expiration de son délai ?
  2. Le destinataire reçoit alors une deuxième fois un paquet portant le bit 0. Comment sait-il qu'il s'agit d'une retransmission de P, et non d'un nouveau paquet de données ?
  3. Le destinataire traite-t-il la donnée P une deuxième fois ? Que se passerait-il si c'était le cas, par exemple si P représentait une opération à effectuer une seule fois (un paiement, un compteur à incrémenter...) ?
  4. Pourquoi le destinataire doit-il malgré tout renvoyer un accusé de réception, même s'il ne traite pas la donnée une deuxième fois ?
Exercice — Ports TCP et connexion en trois temps

L'ordinateur d'Inès, d'adresse IP 192.168.1.20, affiche une page d'un site Web hébergé par le serveur 203.0.113.5 et, au même moment, relève ses courriels sur le serveur 198.51.100.7. Le serveur Web écoute sur le port TCP 443 (HTTPS), le serveur de messagerie sur le port 993.

  1. Les adresses IP permettent d'acheminer les données jusqu'à la bonne machine. Pourquoi ne suffisent-elles pas à les remettre au bon programme ?
  2. Le système d'exploitation de l'ordinateur d'Inès attribue au navigateur le port 51 734 et au logiciel de messagerie le port 50 211. Ces numéros sont choisis dans la plage des ports dynamiques, de 49 152 à 65 535. Recopier et compléter le tableau des deux connexions en cours.
ConnexionIP sourcePort sourceIP destinationPort destination
Navigateur → site Web
Messagerie → serveur de courriel
  1. Avant tout échange de données, TCP établit la connexion « en trois temps ». Le navigateur envoie un segment SYN avec le numéro de séquence 4200 ; le serveur répond par un segment SYN-ACK portant son propre numéro de séquence, 7700. Compléter :
ÉtapeSegmentNuméro de séquence envoyéNuméro accusé (attendu ensuite)
1SYN (client → serveur)4200—
2SYN-ACK (serveur → client)7700…
3ACK (client → serveur)……
  1. Pendant l'échange, un segment se perd. Comment TCP s'en aperçoit-il et que fait-il ?
  2. Pour une visioconférence en direct, on préfère souvent le protocole UDP, qui ne retransmet jamais les données perdues. Pourquoi ?
Exercice — TP Filius : configurer, tester et relier deux réseaux locaux

D'après un TP de NSI Première. Ce TP se réalise avec le logiciel libre de simulation de réseaux Filius : en mode conception (marteau), on construit et configure le réseau ; en mode simulation (triangle vert), on le fait fonctionner.

Partie 1 — Un réseau local. Relier trois ordinateurs à un switch. Leur donner les adresses IP 192.168.1.1, 192.168.1.2 et 192.168.1.3, le masque 255.255.255.0, et les noms PC1, PC2 et PC3. En mode simulation, installer le logiciel « Ligne de commande » sur chaque machine.

  1. Sur PC1, la commande ipconfig affiche la configuration de la machine. Relever son adresse MAC, son adresse IP, son masque, et en déduire l'adresse du réseau. Qu'est-ce qu'une adresse MAC ? À quoi sert le masque ?
  2. Depuis PC1, saisir ping 192.168.1.2. À quoi sert cette commande ? Que signifie la valeur TTL affichée ?
  3. Afficher les échanges de données de PC1. Quels protocoles apparaissent ? Quel est le rôle d'ARP, puis celui d'ICMP ?
  4. Que donne ping 192.168.0.20 ? Expliquer.

Partie 2 — Un serveur DHCP. Dans un nouveau réseau, relier un serveur et deux ordinateurs à un switch. Donner au serveur l'adresse 192.168.1.1 (masque 255.255.255.0) et le configurer pour distribuer les adresses de 192.168.1.2 à 192.168.1.10 ; régler les deux ordinateurs pour qu'ils obtiennent leur adresse automatiquement.

  1. Vérifier avec ipconfig les adresses obtenues. Quel est le rôle d'un serveur DHCP ?
  2. Combien de messages le client et le serveur échangent-ils avant que le client obtienne son adresse ? Les nommer dans l'ordre.
  3. Le client envoie son premier message à l'adresse IP 255.255.255.255, depuis l'adresse 0.0.0.0. Pourquoi ?
  4. DHCP s'appuie sur UDP et non sur TCP, avec les ports 67 (serveur) et 68 (client). Pourquoi TCP ne conviendrait-il pas ?

Partie 3 — Relier deux réseaux. Un premier réseau local relie les ordinateurs 192.168.0.10 et 192.168.0.11 au switch 1 ; un second relie 192.168.1.10, 192.168.1.11 et 192.168.1.12 au switch 2. On relie les deux switchs à un routeur à deux interfaces.

  1. Depuis 192.168.0.10, que donne ping 192.168.1.10 avant toute autre configuration ? Pourquoi ?
  2. Proposer une adresse IP pour chacune des deux interfaces du routeur.
  3. Le ping échoue encore. Que faut-il renseigner sur chaque ordinateur ? Quel est le rôle de cette information ?
  4. Une fois le ping réussi, décrire le chemin suivi par les paquets de 192.168.0.10 vers 192.168.1.10. Combien de sauts (routeurs traversés) compte-t-il ? À quoi sert la table de routage du routeur ?
Exercice — Épreuve pratique NSI 2026 — Sujet 23 : décodage et contrôle de trames de capteurs

Banque nationale de sujets 2026 de l'épreuve pratique, sujet n°23 (situation d'évaluation d'une heure).

Trames d'un module de capteurs agricoles

L'entreprise PlovaNuviam développe un module d'acquisition DEMETER, de transmission et de traitement de données environnementales (température, humidité…) pour la prévention de maladies dans les cultures agricoles comme les vignes.

Plusieurs fois par heure, chaque module mesure la température et l'humidité et transmet les données par ondes radio. Ces données sont réceptionnées sur un serveur dont le rôle est de vérifier, d'analyser et de traiter les informations. Le but de ce sujet est de finaliser la programmation du serveur et de répondre à certaines problématiques. Un code Python à corriger et à compléter ainsi qu'un jeu de données sont fournis avec ce document.

Description des données envoyées

Les données mesurées par chacun des modules DEMETER sont envoyées par trames de 40 bits, dont la forme est la suivante :

ID (8 bits)Clé de sécurité (8 bits)Température (12 bits)Humidité (8 bits)Bits de contrôle (4 bits)
0010101011001000010010001100011000101101

Pour une trame donnée notée trame et représentée par une chaîne de caractères :

  • les 8 premiers bits trame[0:8] correspondent à l'identifiant (ID) du module en binaire classique ;
  • les 8 bits suivants trame[8:16] sont une clé de sécurité ;
  • les 12 bits suivants trame[16:28] encodent la température. Pour l'obtenir en °C, il faut convertir cette valeur binaire en décimal, lui soustraire 900, puis diviser le tout par 10. Par exemple, 010010001100 vaut 1164 en décimal, ce qui donne (1164 − 900) / 10 = 26.4 °C. Une température inférieure à −10 °C est considérée comme une erreur de mesure ;
  • les 8 bits suivants trame[28:36] encodent l'humidité en pourcentage. Attention, elle est codée en décimal codé binaire (BCD) : chaque chiffre décimal est codé séparément sur 4 bits. Par exemple, 01100010 se sépare en 0110 (6) et 0010 (2), ce qui donne 62 %. Exception : 100 % est codé 10100000 ;
  • les 4 derniers bits trame[36:40] sont des bits de parité permettant de vérifier l'intégrité des 4 premiers blocs. Le bit de parité vaut 0 si le nombre de « 1 » dans le bloc correspondant est pair, sinon il vaut 1. Par exemple, pour l'ID 00101010, le nombre de « 1 » est impair (3), donc le premier bit de contrôle est 1.

Indication : en Python, l'expression int(chaine, 2) prend une chaîne de caractères contenant l'écriture binaire d'un entier et renvoie cet entier.

Question 1. On dispose d'une classe Transmission dont le rôle est de décoder les informations reçues.

>>> t = Transmission("0010101011001000010010001100011000101101")
>>> t
ID : 42 / Temp. : 26.4°C / Hum. : 62%
>>> t.get_temperature()
26.4

Implémenter les méthodes decoder_temperature et decoder_humidite. Ces méthodes ne renvoient rien, mais modifient directement les propriétés de l'objet. Écrire des tests pour vérifier que ces méthodes décodent bien 26.4 et 62 avec la trame d'exemple de l'énoncé.

Appel professeur — Appeler le professeur pour lui présenter votre réponse ou en cas de difficulté.

Question 2. Écrire la méthode est_valide(self) qui renvoie True si les 4 bits de contrôle correspondent bien à la parité des 4 blocs de données, et False sinon.

Appel professeur — Appeler le professeur pour lui présenter votre réponse ou en cas de difficulté.

Question 3. Le fichier data.txt contient une série de plus de 300 transmissions réelles. Dans le fichier analyse.py, une fonction d'analyse a été écrite pour automatiser le traitement et l'affichage des données valides. Exécuter le fichier analyse.py et identifier les erreurs qui pourraient survenir.

Question 4. Proposer des corrections de la classe Transmission permettant de la rendre plus robuste afin de pouvoir effectuer l'analyse, et commenter l'affichage obtenu.

Appel professeur — Appeler le professeur pour lui présenter votre réponse ou en cas de difficulté.

Fichiers fournis

Le dossier comporte une version PDF de l'énoncé, les codes sources de départ transmission.py et analyse.py et le fichier data.txt (314 trames). La bibliothèque matplotlib doit être disponible.

transmission.py

class Transmission:
 
    def __init__(self, trame):
        self._id = None
        self._temperature = None
        self._humidite = None
        self._trame = trame
 
        self.decoder()
 
    def __repr__(self):
        """ Méthode permettant l'affichage """
        return f"ID : {self._id} / Temp. : {self._temperature}°C / Hum. : {self._humidite}%"
 
    def decoder(self):
        self.decoder_id()
        self.decoder_temperature()
        self.decoder_humidite()
 
    def decoder_id(self):
        # int(s, 2) : conversion binaire -> décimal
        self._id = int(self._trame[0:8], 2)
 
    def decoder_temperature(self):
        pass  # À compléter
 
    def decoder_humidite(self):
        pass  # À compléter
 
    def get_id(self):
        return self._id
 
    def get_temperature(self):
        return self._temperature
 
    def get_humidite(self):
        return self._humidite
 
    def est_valide(self):
        return False  # À compléter

analyse.py

import matplotlib.pyplot as plt
from transmission import Transmission
 
# Extraction des données
with open("data.txt", "r") as f:
    trames = f.read().split("\n")
    trames.pop()  # La dernière ligne est vide, on la supprime
 
# Création d'une liste de températures pour les transmissions valides
transmissions = [Transmission(t) for t in trames]
temperatures = [t.get_temperature() for t in transmissions if t.est_valide()]
 
print(f"Nombre de trames reçues : {len(trames)}")
print(f"Nombre de trames valides : {len(temperatures)}")
 
# Affichage des températures
plt.figure(figsize=(10, 5))
plt.plot(temperatures, label="Température (°C)")
plt.title("Évolution de la température")
plt.xlabel("Mesures")
plt.ylabel("Température (°C)")
plt.legend()
plt.grid(True)
plt.show()

data.txt (début du fichier)

0010101011001000010010001100011000101101
0010101010011111010010001010011000011001
0010101011010101010010001010011000011101
0010101001011110010010000111011000011111
0010101000101110010010001000011000011011
...
Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

QCM — Transmission de données dans un réseau

1. Quel est l'intérêt principal du découpage d'une donnée en paquets avant de la transmettre sur un réseau ?
2. À quoi correspond l'encapsulation d'un paquet avant son émission sur le réseau ?
3. Dans le protocole du bit alterné, à quoi sert le bit associé à chaque paquet envoyé ?
4. Dans le protocole du bit alterné, que fait l'émetteur si aucun accusé de réception ne lui parvient avant l'expiration du délai fixé (timeout) ?

Le système d'exploitation

Rôle d'un système d'exploitation

Un système d'exploitation (Windows, macOS, Linux...) est le logiciel qui sert d'intermédiaire entre le matériel et les utilisateurs ou les autres logiciels. Il gère notamment :

  • la mémoire (répartition entre les différents programmes) ;
  • le processeur, en partageant son temps entre les différents processus (programmes en cours d'exécution) ;
  • les périphériques (écran, clavier, réseau...) ;
  • les fichiers, organisés en une arborescence de répertoires.

Arborescence de fichiers : chemins absolus et relatifs

Les fichiers sont rangés dans des répertoires (ou dossiers), eux-mêmes organisés en arbre à partir d'un répertoire racine.

/home/eleve/
├── Documents/
│   ├── NSI/
│   └── Maths/
├── Images/
└── Musique/

Pour désigner un fichier ou un répertoire, on utilise :

  • un chemin absolu, qui part toujours de la racine : /home/eleve/Documents/NSI ;
  • un chemin relatif, qui part du répertoire courant (celui où l'on se trouve). Depuis /home/eleve/Images, le chemin relatif vers Documents/NSI s'écrit ../Documents/NSI (.. signifie « le répertoire parent »).

Quelques commandes de base en ligne de commande

CommandeRôle
pwdAfficher le répertoire courant (print working directory)
lsLister le contenu du répertoire courant
cd <rep>Se déplacer dans le répertoire <rep>
cd ..Remonter au répertoire parent
mkdir <nom>Créer un nouveau répertoire
rm <fichier>Supprimer un fichier
cp <src> <dest>Copier un fichier
mv <src> <dest>Déplacer ou renommer un fichier

Droits et permissions d'accès aux fichiers

Sous un système de type Unix (Linux, macOS), chaque fichier possède des droits d'accès définis pour trois catégories d'utilisateurs : le propriétaire, le groupe, et les autres. Pour chaque catégorie, trois droits sont possibles : read (lire), write (écrire), execute (exécuter).

La commande ls -l affiche ces droits sous la forme d'une chaîne de 9 caractères, par exemple rwxr-xr-- :

PropriétaireGroupeAutres
rwxr-xr--

Ici, le propriétaire peut tout faire (lire, écrire, exécuter), le groupe peut lire et exécuter, et les autres ne peuvent que lire.

On peut modifier ces droits avec la commande chmod, en notation numérique : on associe 44 à r, 22 à w, 11 à x, et on additionne. Par exemple, rwx vaut 4+2+1=74+2+1=7. La commande chmod 754 fichier donnerait donc les droits rwxr-xr-- au fichier.

En Python, le module os permet aussi d'interagir avec le système de fichiers :

import os
print(os.getcwd())     # affiche le repertoire courant
print(os.listdir("."))  # liste le contenu du repertoire courant
Exercice — Arborescence et droits d'accès

Partie A. On part du répertoire personnel /home/eleve. On exécute successivement les commandes : mkdir Projets ; cd Projets ; mkdir NSI ; mkdir Maths ; cd NSI ; mkdir TP.

  1. Représenter l'arborescence obtenue.
  2. Donner le chemin absolu du répertoire TP.
  3. En admettant qu'on se trouve maintenant dans /home/eleve/Projets, donner le chemin relatif vers TP.

Partie B. Un fichier notes.txt a pour droits d'accès rw-r-----.

  1. Le propriétaire peut-il exécuter ce fichier ?
  2. Les utilisateurs qui ne sont ni le propriétaire, ni membres du groupe, peuvent-ils le lire ?
  3. Donner la commande chmod (notation numérique) qui donnerait en plus le droit d'écriture au groupe, pour obtenir rw-rw----.
Exercice — Suivre une suite de commandes en ligne

On part du répertoire /home/eleve, qui est vide. On exécute successivement les commandes suivantes :

pwd
mkdir devoirs
cd devoirs
mkdir maths
mkdir nsi
ls
cd nsi
pwd
  1. Qu'affiche la première commande pwd ?
  2. Après les commandes mkdir devoirs et cd devoirs, quel est le répertoire courant ?
  3. Qu'affiche la commande ls (ligne 6) ?
  4. Qu'affiche la seconde commande pwd (dernière ligne) ?
Exercice — Copier et déplacer des fichiers avec des chemins relatifs

On part de l'arborescence suivante :

/home/eleve/
├── Documents/
│   ├── rapport.txt
│   └── NSI/
└── Images/
    └── photo.png

Le répertoire courant est /home/eleve/Documents. On exécute successivement les commandes suivantes :

cp rapport.txt NSI/
cd NSI
cp rapport.txt bilan.txt
cd ..
mv rapport.txt ../Images/
ls
cd NSI
ls
  1. Après la commande cp rapport.txt NSI/ (ligne 1), le fichier rapport.txt existe-t-il toujours dans /home/eleve/Documents ? Justifier en rappelant la différence entre cp et mv.
  2. Que contient le répertoire /home/eleve/Documents/NSI juste après la commande cp rapport.txt bilan.txt (ligne 3) ?
  3. Après la commande mv rapport.txt ../Images/ (ligne 5), le fichier rapport.txt existe-t-il encore dans /home/eleve/Documents ? Que contient alors /home/eleve/Images ?
  4. Donner précisément ce qu'affichent les deux commandes ls des lignes 6 et 8.
  5. Le fichier /home/eleve/Documents/NSI/rapport.txt (créé à la ligne 1) a-t-il été affecté par la commande mv de la ligne 5 ? Justifier.
Exercice — Logiciel libre, logiciel propriétaire et rôle d'un système d'exploitation

D'après une fiche d'activité de NSI Première.

Un logiciel libre garantit à ses utilisateurs quatre libertés : l'exécuter pour tout usage, étudier son fonctionnement (son code source est accessible), le modifier, et le redistribuer, modifié ou non. Un logiciel propriétaire reste la propriété de l'entreprise qui le développe : il est en général distribué sous forme exécutable seulement, avec une licence qui limite ce que l'utilisateur a le droit d'en faire.

  1. Un logiciel libre est-il forcément gratuit ? A-t-on le droit de le redistribuer gratuitement ?
  2. Beaucoup d'applications de réseaux sociaux sont gratuites sur smartphone. Sont-elles libres pour autant ?
  3. Windows est un système d'exploitation propriétaire. Quelles conséquences ce statut a-t-il pour ses utilisateurs ?
  4. Chez Karim, la box internet, la télévision connectée, la caméra de surveillance et le disque réseau fonctionnent tous avec un système d'exploitation de la famille Linux.
    • a. Pourquoi ces appareils ont-ils besoin d'un système d'exploitation ?
    • b. Utilisent-ils exactement la même version de ce système ?
    • c. Proposer des raisons qui poussent leurs fabricants à choisir Linux.

QCM — Système d'exploitation

1. Quelle commande permet d'afficher le chemin du répertoire courant ?
2. Sur un fichier, la permission rw-r--r-- signifie que :
3. On veut donner à un fichier les droits rw-rw-r-- (propriétaire : lecture+écriture ; groupe : lecture+écriture ; autres : lecture seule). Quelle est la commande chmod correspondante ?

Périphériques d'entrée/sortie et interface Homme-Machine

Périphériques d'entrée et périphériques de sortie

Un périphérique est un équipement relié à l'ordinateur, qui permet d'échanger des informations avec l'extérieur (l'utilisateur, ou plus largement l'environnement physique). On distingue :

  • les périphériques d'entrée, qui fournissent des informations à l'ordinateur. Le clavier ou la souris en sont des exemples familiers, mais on trouve aussi des capteurs : un capteur mesure une grandeur physique (température, luminosité, humidité, présence d'un obstacle...) et la convertit en une donnée numérique exploitable par un programme ;
  • les périphériques de sortie, qui reçoivent des informations depuis l'ordinateur pour agir sur l'environnement. Parmi eux, les actionneurs convertissent une donnée numérique en une action physique concrète : faire tourner un moteur, allumer une LED, émettre un son...

Exemples de capteurs et d'actionneurs

CapteurGrandeur mesuréeExemple d'usage
Capteur de températuretempérature ambiantedéclencher un chauffage ou une climatisation
Capteur de luminosité (photorésistance)intensité lumineuseallumer automatiquement un éclairage
Capteur de présence (infrarouge)présence d'une personnedéclencher une alarme ou un éclairage
Capteur d'humidité du soltaux d'humiditépiloter un système d'arrosage
ActionneurAction produiteExemple d'usage
Moteurmouvement (rotation, translation)faire tourner un volet roulant
LEDémission de lumièresignaler un état (voyant allumé ou éteint)
Buzzerémission d'un sonsignal sonore d'une alarme
Électrovanneouverture ou fermeture d'un circuit (eau, gaz...)déclencher un arrosage

L'interface Homme-Machine (IHM) programmée

Une interface Homme-Machine (IHM) est l'ensemble des éléments, matériels et logiciels, qui permettent à un utilisateur d'interagir avec un système informatique. Réaliser une IHM par programmation consiste à écrire le code qui réagit à des entrées — une action de l'utilisateur (clic, appui sur un bouton) ou une donnée fournie par un capteur — pour produire en retour une sortie adaptée (affichage, activation d'un actionneur...), conformément à un cahier des charges donné.

Ce principe rejoint celui de la programmation événementielle déjà rencontrée pour les interfaces Web (voir le chapitre Interactions entre l'homme et la machine sur le Web) : une action déclenche l'exécution d'une fonction associée. Ici, l'événement déclencheur n'est plus seulement un clic de souris, mais peut aussi être la mesure d'un capteur.

La boucle acquisition - décision - action

De nombreux systèmes associant capteurs et actionneurs fonctionnent selon un schéma répétitif à trois étapes :

  1. Acquisition : lire la valeur mesurée par un capteur.
  2. Décision : comparer cette valeur à une condition (souvent un seuil), pour déterminer l'action à effectuer.
  3. Action : piloter un actionneur en conséquence.

Exemple. Un système de ventilation automatique, qui active un ventilateur dès que la température dépasse 25 °C, et le désactive sinon, peut se programmer ainsi (pseudo-code) :

tant que Vrai:
    temperature = lire_capteur_temperature()
    si temperature > 25:
        activer(ventilateur)
    sinon:
        desactiver(ventilateur)

Cette boucle est en général exécutée en continu, ou à intervalles réguliers, pour que le système réagisse à l'évolution de son environnement.

Exercice — Capteurs ou actionneurs ?

On considère les dix périphériques suivants, employés dans une maison connectée : thermomètre électronique, moteur de volet roulant, capteur de luminosité, LED de signalisation, capteur de pluie, buzzer d'alarme, capteur de présence infrarouge, ventilateur, capteur d'humidité du sol, électrovanne d'arrosage.

  1. Classer chacun de ces dix périphériques dans un tableau à deux colonnes : capteurs (périphériques d'entrée) et actionneurs (périphériques de sortie).
  2. Pour deux des capteurs de cette liste, préciser la grandeur physique qu'ils mesurent.
  3. Pour deux des actionneurs de cette liste, préciser l'action physique qu'ils produisent.
Exercice — Tracer une boucle d'arrosage automatique

Un système d'arrosage automatique exécute le pseudo-code suivant, qui lit toutes les heures l'humidité du sol (en pourcentage) grâce à un capteur, et pilote une électrovanne d'arrosage :

tant que Vrai:
    humidite = lire_capteur_humidite()
    si humidite < 30:
        activer(electrovanne)
    sinon:
        desactiver(electrovanne)
    attendre(3600)

Le capteur renvoie les valeurs suivantes, heure après heure :

Heure12345
Humidité mesurée (%)2225312835
  1. Recopier et compléter le tableau en indiquant, pour chaque heure, l'état de l'électrovanne (activée ou désactivée).
  2. À quelle(s) heure(s) l'état de l'électrovanne change-t-il par rapport à l'heure précédente ?
  3. Que se passerait-il si le capteur d'humidité tombait en panne et renvoyait en permanence la valeur 0 ? Ce comportement est-il souhaitable ?
Exercice — Analyser une IHM à bouton poussoir

Un boîtier domestique comporte un bouton poussoir et une LED. Le cahier des charges est le suivant : « à chaque appui sur le bouton, la LED change d'état : elle s'allume si elle était éteinte, elle s'éteint si elle était allumée ». Cette IHM est programmée ainsi :

etat_led = 'eteinte'

fonction bouton_presse():
    si etat_led == 'eteinte':
        etat_led = 'allumee'
        allumer(led)
    sinon:
        etat_led = 'eteinte'
        eteindre(led)

On part de l'état initial etat_led = 'eteinte', et le bouton est pressé 5 fois de suite.

  1. Donner, dans un tableau, l'état de la LED après chacun des 5 appuis.
  2. Ce comportement est-il conforme au cahier des charges ? Justifier.
  3. Un utilisateur presse le bouton un très grand nombre de fois de suite. D'après ce code, l'état final de la LED est-il prévisible à l'avance ? Justifier à l'aide de la parité du nombre d'appuis.
Exercice — Écrire la boucle de surveillance d'une serre connectée

Une serre connectée doit respecter le cahier des charges suivant :

  • si l'humidité de l'air mesurée est inférieure à 40 %, un brumisateur doit être activé, et désactivé sinon ;
  • si la température mesurée dépasse 28 °C, un ventilateur doit être activé, et désactivé sinon ;
  • ces deux conditions doivent être vérifiées indépendamment l'une de l'autre à chaque tour de boucle (l'état du brumisateur ne doit pas dépendre de celui du ventilateur, et réciproquement).

On dispose des fonctions lire_temperature(), lire_humidite(), activer(x) et desactiver(x). Écrire, en pseudo-code, une boucle de surveillance qui met en œuvre ce cahier des charges.

QCM — Périphériques et interface Homme-Machine

1. Parmi les périphériques suivants, lequel est un capteur ?
2. Quel est le rôle d'un actionneur ?
3. Dans une boucle acquisition - décision - action associant un capteur et un actionneur, à quoi correspond l'étape de décision ?
4. Que signifie « réaliser par programmation une IHM répondant à un cahier des charges donné » ?

Exercices bilan

Identifier les constituants de l'architecture de von Neumann

ApplicationCorrigé gratuit

1. Rôles des constituants. Pour chacune des quatre descriptions suivantes, indiquer à quel constituant de l'architecture de von Neumann elle correspond (processeur / unité de commande / unité arithmétique et logique / mémoire vive) :

a. « Je lis et décode les instructions les unes après les autres, et je pilote leur exécution. » b. « Je réalise effectivement les calculs : additions, comparaisons, opérations booléennes. » c. « Je stocke, sous forme binaire, à la fois les données et les instructions du programme en cours d'exécution. » d. « Je contiens le compteur de programme, qui indique l'adresse de la prochaine instruction à exécuter. »

2. Les trois bus. Associer chacun des trois bus à son rôle :

  • bus d'adresses
  • bus de données
  • bus de contrôle

a. transporte les données elles-mêmes entre le processeur et la mémoire ; b. coordonne le fonctionnement de l'ensemble (signaux de lecture/écriture, synchronisation) ; c. transmet l'adresse de la case mémoire à lire ou écrire.

3. Mémoire volatile. Un élève rédige un long texte dans un logiciel de traitement de texte, sans jamais l'enregistrer sur le disque dur, lorsqu'une coupure de courant survient. Le texte est perdu. Expliquer ce fait en utilisant le vocabulaire du cours (on distinguera clairement la mémoire vive de la mémoire de masse).

4. Remettre le cycle dans l'ordre. Les quatre étapes du cycle d'exécution d'une instruction sont données ci-dessous dans le désordre : Exécution, Lecture, Incrémentation, Décodage. Les remettre dans l'ordre dans lequel le processeur les effectue réellement.

5. Une mini-trace. On exécute la séquence suivante :

1: LOAD R0, 7
2: STORE R0, 50

Donner la valeur de R0 après l'instruction 1, puis la valeur de Mémoire[50] après l'instruction 2.

Dérouler un programme écrit dans un langage machine simplifié

Application

On considère un programme, écrit avec le jeu d'instructions simplifié du cours, qui calcule le total de trois achats :

1: LOAD R0, 12
2: LOAD R1, 15
3: ADD R0, R1
4: LOAD R2, 9
5: ADD R0, R2
6: STORE R0, 200

1. Dérouler le programme. Compléter, pour chacune des six instructions, un tableau donnant la valeur de R0, R1, R2 et Mémoire[200] juste après son exécution (on notera ? tant qu'un registre ou la case mémoire n'a pas encore été modifié).

2. Résultat final. Quelle est la valeur stockée en mémoire à l'adresse 200 à la fin de l'exécution ? Vérifier qu'elle correspond bien au total des trois achats (12, 15 et 9).

3. Le cycle appliqué à une instruction. On s'intéresse à l'instruction 3 (ADD R0, R1). Décrire précisément ce qui se passe lors de chacune des quatre étapes du cycle du processeur (lecture, décodage, exécution, incrémentation) pour cette instruction en particulier.

4. Une question de bon sens. Si on avait échangé les instructions 4 et 5 (donc écrit ADD R0, R2 avant LOAD R2, 9), qu'aurait valu le résultat final stocké en mémoire ? Expliquer le problème.

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Découper des données en paquets et comprendre l'encapsulation

EntraînementCorrigé gratuit

Une machine doit envoyer, sur le réseau, un fichier de 4200 octets. On suppose ici qu'un paquet ne peut transporter au maximum que 700 octets de données utiles.

1. Combien de paquets ? Calculer le nombre de paquets nécessaires pour transmettre l'intégralité du fichier. Justifier le calcul.

2. Trois avantages du découpage. Citer, en les reformulant avec vos propres mots, trois avantages du découpage d'une donnée volumineuse en plusieurs paquets plutôt que son envoi en une seule fois.

3. Un paquet se perd. Si le troisième paquet, et lui seul, est perdu en chemin, laquelle des propriétés citées à la question précédente intervient ? Que doit-on retransmettre ?

4. Encapsulation. On veut envoyer le message Salut à travers trois couches successives de traitement : d'abord un en-tête de transport, puis un en-tête de réseau, puis un en-tête de liaison. Donner, dans l'ordre, le contenu du paquet juste après l'ajout de chacun des trois en-têtes (on pourra s'inspirer de la présentation utilisée en cours).

5. Désencapsulation. À la réception du paquet complet obtenu à la question 4, dans quel ordre le destinataire retire-t-il les trois en-têtes ? Justifier en une phrase pourquoi cet ordre est l'inverse de celui de l'encapsulation.

Protocole du bit alterné : que se passe-t-il quand un accusé de réception se perd ?

Entraînement

Un émetteur E veut transmettre, dans l'ordre, trois paquets de données notés A, B et C à un récepteur R, en utilisant le protocole du bit alterné vu en cours. Cette fois, ce n'est pas un paquet qui se perd, mais l'accusé de réception (ACK) du tout premier paquet.

1. Dérouler l'échange. En reprenant les règles du protocole du bit alterné données en cours, compléter un tableau (une ligne par étape) donnant : ce qu'envoie E, si c'est reçu par R, la réponse de R, et le bit que E utilisera pour son prochain envoi. On précisera bien l'étape où l'accusé de réception se perd.

2. Un ACK renvoyé sans retraiter la donnée. À un moment de l'échange, R reçoit une seconde fois le paquet A. Expliquer pourquoi R ne le traite pas comme une nouvelle donnée, tout en expliquant pourquoi il doit néanmoins renvoyer un accusé de réception.

3. Un piège à éviter. Un camarade affirme : « si R avait, par erreur, retraité une seconde fois le paquet A comme une donnée nouvelle, cela n'aurait pas eu de conséquence grave. » Expliquer pourquoi cette affirmation est fausse.

4. Du point de vue de l'émetteur. L'émetteur E, lorsqu'un délai (timeout) s'écoule sans qu'il reçoive d'accusé de réception, retransmet le paquet. Peut-il savoir, à cet instant, si c'est le paquet lui-même ou l'accusé de réception qui s'est perdu ? Quelle conséquence cela a-t-il sur son comportement ?

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Chemins et droits d'accès dans une arborescence de fichiers

Entraînement

Julie organise ses fichiers selon l'arborescence suivante :

/home/julie/
├── Projets/
│   ├── NSI/
│   └── SVT/
├── Photos/
└── Videos/

1. Chemin absolu. Donner le chemin absolu du répertoire NSI.

2. Chemin relatif. Julie se trouve dans le répertoire Photos. Donner le chemin relatif, depuis ce répertoire, vers le répertoire NSI.

3. Lire des droits. La commande ls -l affiche, pour un script que Julie a écrit, la chaîne -rwxr-x---. Donner séparément les droits du propriétaire, du groupe et des autres, puis traduire cette chaîne en notation numérique (chmod).

4. Fixer des droits. Julie veut maintenant qu'un fichier contenant des mots de passe ne soit accessible en lecture et en écriture que par elle-même, sans aucun droit pour le groupe ni pour les autres. Donner la chaîne de 9 caractères correspondante, puis la commande chmod (en notation numérique) qui permettrait d'obtenir ces droits.

5. Une commande utile. Une fois dans le répertoire Projets, quelle commande Julie doit-elle taper pour remonter au répertoire julie ? Et pour vérifier, une fois là, dans quel répertoire elle se trouve ?

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Capteurs, actionneurs et boucle acquisition-décision-action pour un arrosage automatique

Entraînement

On conçoit un système d'arrosage automatique pour un jardin. Il utilise un capteur d'humidité du sol et une électrovanne qui contrôle l'arrivée d'eau.

1. Capteur ou actionneur ? Le capteur d'humidité du sol est-il un périphérique d'entrée ou de sortie ? Et l'électrovanne ? Justifier en une phrase pour chacun.

2. Écrire la boucle. Le système doit fonctionner ainsi : tant qu'il est allumé, il mesure en continu l'humidité du sol ; si cette humidité est strictement inférieure à 30 (sur une échelle arbitraire de 0 à 100), il ouvre l'électrovanne ; sinon, il la ferme. Écrire cette boucle en pseudo-code, sur le modèle de la boucle acquisition-décision-action vue en cours.

3. Dérouler la boucle. Un capteur relève, au cours d'une journée, les mesures successives d'humidité suivantes : 45, 28, 15, 32, 29. Pour chacune de ces cinq mesures, indiquer si l'électrovanne est ouverte ou fermée, en appliquant strictement la règle de la question 2.

4. Pourquoi une boucle ? Expliquer pourquoi ce système doit répéter en continu (ou à intervalles réguliers) les trois étapes acquisition-décision-action, plutôt que de les exécuter une seule fois au démarrage.

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Sujet type bac : le système embarqué d'une station météo connectée

Type bac

Une petite station météo autonome mesure la température plusieurs fois par jour, transmet ses relevés à un serveur distant, et pilote un chauffage d'appoint pour protéger un capteur sensible au gel. On étudie successivement son processeur, sa transmission réseau, son système de fichiers et sa boucle de pilotage.

Partie A — Un calcul embarqué.

Le microcontrôleur de la station exécute le programme suivant, écrit avec le jeu d'instructions simplifié du cours, pour additionner trois relevés de température :

1: LOAD R0, 18
2: LOAD R1, 21
3: ADD R0, R1
4: STORE R0, 300
5: LOAD R2, 17
6: ADD R0, R2
7: STORE R0, 301
  1. Dérouler ce programme : donner, après chacune des sept instructions, les valeurs de R0, R1, R2, Mémoire[300] et Mémoire[301].
  2. Quelle valeur contient Mémoire[300] à la fin de l'exécution ? Que représente-t-elle ? Même question pour Mémoire[301].
  3. Quel est l'intérêt d'avoir stocké le résultat intermédiaire en mémoire, à l'adresse 300, avant de poursuivre le calcul, plutôt que de laisser ce résultat uniquement dans le registre R0 ?

Partie B — Transmission des relevés.

La station regroupe les mesures d'une journée dans un fichier de 5000 octets et l'envoie sur le réseau. On suppose ici qu'un paquet transporte au maximum 800 octets de données utiles.

  1. Combien de paquets sont nécessaires pour transmettre ce fichier en entier ? On détaillera le calcul, en n'oubliant pas le dernier paquet, incomplet.
  2. Juste avant d'être émis, chaque paquet reçoit successivement un en-tête de transport, puis un en-tête de réseau, puis un en-tête de liaison. Décrire, dans l'ordre, l'opération inverse réalisée par le serveur à la réception d'un paquet.

Partie C — Organisation des fichiers.

Sur la station, les relevés sont rangés selon l'arborescence suivante :

/home/station/
├── Logs/
│   ├── Janvier/
│   └── Fevrier/
├── Config/
└── Scripts/
  1. Donner le chemin absolu du répertoire Fevrier.
  2. Donner le chemin relatif vers Logs/Fevrier depuis le répertoire Scripts.
  3. Le fichier de log du jour doit pouvoir être lu par n'importe quel programme du système, mais modifié uniquement par le processus de la station (son propriétaire). Donner la chaîne de droits à 9 caractères correspondante, puis la commande chmod en notation numérique.

Partie D — Piloter le chauffage d'appoint.

Le chauffage d'appoint doit s'activer dès que la température mesurée descend strictement en dessous de 18 °C, et s'éteindre sinon.

  1. Écrire, en pseudo-code, la boucle acquisition-décision-action correspondante.
  2. Dérouler cette boucle pour la séquence de relevés suivante : 16, 19, 17, 20, 15. Indiquer, pour chacun, l'état du chauffage.
Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Chapitre suivant