Tu révises le chapitre sur les systèmes d'exploitation en NSI et tu as l'impression que « ça va », mais les questions du bac te font douter ? Bonne nouvelle : les pièges sont toujours les mêmes, et une fois repérés, ils ne te piègeront plus. Dans cet article, on passe en revue les erreurs les plus fréquentes sur le système d'exploitation en NSI, avec des exemples concrets en Python et des méthodes pour ne plus te tromper. À la fin, tu sauras exactement ce qu'on attend de toi à l'écrit comme à l'oral.
Pourquoi le système d'exploitation est un chapitre piégeux
Le système d'exploitation (souvent abrégé OS, pour Operating System) est le logiciel qui fait le lien entre le matériel de la machine et les programmes que tu utilises. Windows, Linux, macOS ou Android en sont des exemples. En NSI, on l'étudie sous quatre angles : la gestion des processus, la gestion de la mémoire, la gestion des fichiers et les interactions avec les utilisateurs (shell, commandes).
Pourquoi tant d'élèves perdent des points ? Parce que ce chapitre mélange trois niveaux :
- un niveau conceptuel (qu'est-ce qu'un processus, un ordonnanceur ?) ;
- un niveau pratique (lancer des commandes, écrire un script Python qui crée des processus) ;
- un niveau vocabulaire (ne pas confondre programme, processus, thread, tâche).
Si tu confonds ces niveaux, tu réponds à côté. La suite te donne les pièges un par un, avec la bonne façon de raisonner.
Piège n°1 : confondre programme, processus et thread
C'est le piège numéro un. Un programme est un fichier sur le disque : du code, des instructions, mais rien qui s'exécute. Un processus est ce même programme en cours d'exécution, chargé en mémoire, avec un identifiant (PID), un état et des ressources. Un thread (fil d'exécution) est une unité plus fine : plusieurs threads peuvent partager la mémoire d'un même processus.
Retiens la formule : programme = recette de cuisine, processus = plat en train de cuire, thread = plusieurs cuisiniers qui utilisent la même cuisine. Une même recette peut donner plusieurs plats (plusieurs processus), et un plat peut être préparé par plusieurs cuisiniers (plusieurs threads).
Le test qui te sauve à l'écrit
Quand on te demande « combien de processus sont créés ? », demande-toi toujours : est-ce que le code lance une nouvelle exécution ou juste une fonction ? En Python, appeler une fonction ne crée pas de processus. Utiliser os.fork() ou subprocess.Popen en crée un. C'est cette distinction qui fait la différence entre 2 et 4 points sur une question.
Piège n°2 : croire qu'un processus s'exécute en continu
Beaucoup d'élèves imaginent qu'un processus « tourne » sans interruption jusqu'à sa fin. Faux. Sur une machine avec un seul cœur, un seul processus s'exécute à un instant donné. L'ordonnanceur du système alterne très rapidement entre les processus : c'est le temps partagé. Chaque processus passe par plusieurs états :
- élu (en cours d'exécution sur le processeur) ;
- prêt (il pourrait s'exécuter, mais le processeur est occupé) ;
- bloqué (il attend une ressource : entrée clavier, fichier, réseau).
Un processus bloqué ne consomme pas de temps processeur. C'est pour ça qu'on peut avoir 200 processus ouverts sans que la machine rame : la plupart sont bloqués ou prêts, pas élus.
Exemple Python : observer un processus
Voici un petit script qui montre qu'un processus a bien un identifiant et un processus parent. Tu peux le tester sur une machine Linux ou dans un environnement Python adapté :
import os
print("PID du processus courant :", os.getpid())
print("PID du processus parent :", os.getppid())
# On lance une commande externe : un nouveau processus est créé
os.system("echo Bonjour depuis un autre processus")
Chaque exécution te donne des PID différents : c'est normal, ils sont attribués par le système au moment du lancement. Ne t'étonne pas si le résultat change à chaque fois, c'est justement la preuve qu'un processus est une instance vivante, pas un fichier figé.
Piège n°3 : mal comprendre l'ordonnancement
Au bac, on te demande parfois de simuler un ordonnancement simple, par exemple premier arrivé, premier servi (FIFO) ou tourniquet (round-robin). Les erreurs classiques :
- oublier qu'un processus bloqué sort de la file des prêts ;
- ne pas remettre un processus préempté à la fin de la file (round-robin) ;
- confondre temps d'attente et temps d'exécution.
Astuce : fais toujours un petit tableau avec les colonnes processus, arrivée, durée, début, fin, attente. Tu remplis ligne par ligne en respectant la règle. C'est mécanique, et ça rapporte tous les points.
Mini-simulation en Python
Tu peux même coder un ordonnanceur FIFO pour vérifier tes calculs à la main :
# Ordonnancement FIFO simple
processus = [("P1", 0, 4), ("P2", 1, 3), ("P3", 2, 2)] # (nom, arrivée, durée)
# On trie par temps d'arrivée
processus.sort(key=lambda p: p[1])
temps = 0
for nom, arrivee, duree in processus:
if temps < arrivee:
temps = arrivee # le processeur attend
debut = temps
temps += duree
print(f"{nom} : début={debut}, fin={temps}, attente={debut - arrivee}")
Ce code t'entraîne à la fois à la programmation et à la compréhension des états d'un processus. Garde-le sous la main pour tes révisions : c'est typique de ce qu'on peut te demander d'adapter.
Piège n°4 : négliger les commandes du shell
Le shell est l'interpréteur de commandes : c'est ton interface avec le système d'exploitation. En NSI, on attend que tu connaisses quelques commandes de base, notamment sous Linux :
ls: lister le contenu d'un dossier ;cd: changer de dossier ;pwd: afficher le dossier courant ;cp,mv,rm: copier, déplacer, supprimer ;ps: lister les processus ;kill: terminer un processus par son PID.
Le piège fréquent : croire que ces commandes sont « de la culture générale ». Non : on peut te demander d'écrire une commande précise, ou d'expliquer ce qu'elle fait. Entraîne-toi à les taper dans un terminal (ou une machine virtuelle) plutôt qu'à les relire passivement.
Un lien avec Python
Python peut exécuter des commandes du shell grâce au module subprocess. C'est un bon exemple de pont entre les deux parties du programme :
import subprocess
resultat = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(resultat.stdout)
Tu vois ici qu'un programme Python peut demander au système d'exécuter une autre commande. C'est ainsi que fonctionnent beaucoup d'outils réels.
Piège n°5 : oublier la gestion des fichiers et des droits
Un système d'exploitation organise le stockage en une arborescence de dossiers et de fichiers. Deux pièges reviennent souvent :
- confondre chemin absolu (commence par
/sous Linux, parC:\sous Windows) et chemin relatif (part du dossier courant) ; - ignorer la notion de droits (lecture, écriture, exécution) associés à un utilisateur et un groupe.
Sous Linux, la commande chmod modifie ces droits. Par exemple, chmod 755 script.py donne tous les droits au propriétaire et la lecture/exécution aux autres. Ce n'est pas à mémoriser par cœur, mais tu dois comprendre la logique : le système protège les fichiers en vérifiant qui demande quoi.
Exemple en Python
Le module os permet de manipuler l'arborescence :
import os
print("Dossier courant :", os.getcwd())
print("Contenu :", os.listdir("."))
# Créer un dossier s'il n'existe pas
if not os.path.exists("mon_dossier"):
os.mkdir("mon_dossier")
Attention : os.getcwd() renvoie le dossier courant, pas le dossier du script. C'est une confusion classique quand on exécute un fichier depuis un autre dossier.
Piège n°6 : réviser passivement
Le chapitre sur le système d'exploitation se retient mal par simple lecture. Trois méthodes marchent vraiment :
- manipuler : ouvre un terminal, lance des commandes, regarde
psévoluer ; - écrire : recopie et adapte les scripts Python, modifie-les, casse-les, répare-les ;
- expliquer : reformule chaque notion à voix haute, comme si tu la présentais à l'oral du bac.
Pour t'entraîner, appuie-toi sur les cours NSI et les fiches de révision du site. Si tu veux consolider les bases en programmation avant d'attaquer les processus, la référence Python est un bon point de départ.
Et si tu as besoin d'un accompagnement plus personnalisé pour préparer l'épreuve, tu peux aussi jeter un œil aux ressources du réseau Allo Education, comme Allolycee pour le lycée ou Allobac pour le bac.
Ce qu'on attend de toi à l'épreuve
À l'écrit du bac NSI, les questions sur le système d'exploitation sont souvent :
- une question de cours courte (définir un processus, citer un rôle de l'OS) ;
- un exercice d'application (simuler un ordonnancement, lire un script) ;
- une question de culture informatique (comparer deux OS, expliquer le rôle du shell).
À l'oral, on peut te demander d'expliquer un script que tu as écrit, ou de justifier un choix technique. Entraîne-toi à parler sans notes, en utilisant le vocabulaire exact. C'est ce qui distingue une réponse correcte d'une réponse excellente.
Conclusion : transforme les pièges en réflexes
Le système d'exploitation en NSI n'est pas un chapitre difficile : c'est un chapitre précis. Les pièges viennent presque toujours des mêmes confusions : programme/processus/thread, processus élu/prêt/bloqué, chemin absolu/relatif, commande tapée/commande comprise. Si tu fais l'effort de manipuler, d'écrire du Python et d'expliquer à voix haute, tu transformeras ces pièges en réflexes. Et le jour du bac, tu répondras avec assurance, parce que tu auras compris, pas seulement mémorisé. Allez, ouvre un terminal et lance ta première commande : c'est en pratiquant qu'on progresse vraiment.
