Quand tu allumes ton ordinateur, avant même d'ouvrir ton éditeur Python ou ton navigateur, un programme particulier se lance : le système d'exploitation (ou OS pour Operating System). En NSI, tu vas devoir comprendre son rôle central, car il gère la mémoire, les processus, les fichiers et les périphériques. Dans cet article, on va explorer ensemble ce qu'est un OS, comment il fonctionne, et on verra même du code Python pour simuler certains de ses mécanismes. Prêt·e ? C'est parti !
Qu'est-ce qu'un système d'exploitation ?
Un système d'exploitation est un ensemble de logiciels qui fait le lien entre le matériel (le processeur, la mémoire, le disque dur) et les applications (comme un navigateur, un jeu, ou ton script Python). Sans OS, chaque application devrait gérer elle-même les détails du matériel, ce qui serait un cauchemar. L'OS fournit des services communs : la gestion des fichiers, la gestion de la mémoire, la gestion des processus, et la gestion des entrées/sorties.
En NSI, on étudie souvent les systèmes d'exploitation comme Linux (grâce à sa transparence) et on compare avec Windows ou macOS. L'OS est composé de plusieurs parties : le noyau (kernel) qui est le cœur du système, les pilotes (drivers) qui permettent de communiquer avec le matériel, et les interfaces utilisateur (graphique ou en ligne de commande).
Le noyau : le chef d'orchestre
Le noyau est le programme central qui tourne en permanence. Il est chargé de l'ordonnancement des processus, c'est-à-dire de décider quel processus utilise le processeur à quel moment. Il gère aussi la mémoire virtuelle, les permissions, et la communication entre les processus. Quand tu exécutes un programme, c'est le noyau qui crée un processus pour ce programme.
Les processus : les unités d'exécution
Un processus est un programme en cours d'exécution. Il possède son propre espace mémoire, ses fichiers ouverts, et son état (prêt, en cours d'exécution, bloqué, etc.). Le noyau utilise un ordonnanceur pour partager le temps du processeur entre les différents processus, donnant l'illusion qu'ils s'exécutent en parallèle, même sur un processeur à un seul cœur.
Pourquoi c'est important en NSI ?
Le programme de NSI en Terminale aborde explicitement les systèmes d'exploitation : leur histoire, leur structure, les processus, et la gestion des ressources. Tu dois être capable d'expliquer le rôle de l'OS, de décrire les états d'un processus, et de comprendre les commandes de base en ligne de commande (comme ls, cd, ps sous Linux). C'est aussi l'occasion de manipuler des fichiers et des répertoires, ce qui est essentiel pour tout développeur.
Pour réviser, tu peux consulter nos cours en ligne et nos fiches de révision qui couvrent ces notions en détail.
Simuler un ordonnanceur en Python
Pour bien comprendre le fonctionnement d'un OS, rien de tel qu'un petit exemple en Python. On va simuler un ordonnanceur simple qui exécute des processus en tourniquet (round-robin). Chaque processus a un temps d'exécution restant, et on leur alloue un quantum de temps (par exemple 3 unités).
class Processus:
def __init__(self, nom, duree):
self.nom = nom
self.duree = duree # durée totale nécessaire
self.restant = duree
self.etat = "pret" # prêt, en cours, terminé
def ordonnanceur_round_robin(processus, quantum):
file = list(processus) # on crée une file d'attente
temps = 0
while file:
p = file.pop(0) # on prend le premier
if p.restant > 0:
p.etat = "en cours"
print(f"Temps {temps} : {p.nom} s'exécute (restant : {p.restant})")
if p.restant <= quantum:
temps += p.restant
p.restant = 0
p.etat = "terminé"
print(f" -> {p.nom} terminé à t={temps}")
else:
temps += quantum
p.restant -= quantum
p.etat = "pret"
file.append(p) # on le remet en fin de file
print(f"Temps total : {temps}")
# Exemple d'utilisation
processus = [Processus("A", 5), Processus("B", 3), Processus("C", 8)]
ordonnanceur_round_robin(processus, 2)
Ce code illustre la notion de file d'attente et de quantum de temps. En exécutant ce script, tu verras comment les processus s'enchaînent. C'est une simplification, mais ça capture l'essentiel de l'ordonnancement.
Cas d'usage concret : gérer des fichiers en Python
Un autre rôle clé de l'OS est la gestion des fichiers. En NSI, tu manipules souvent des fichiers en Python. Voici un exemple qui utilise le module os pour interagir avec le système de fichiers :
import os
# Afficher le répertoire courant
print("Répertoire courant :", os.getcwd())
# Lister les fichiers du répertoire courant
fichiers = os.listdir(".")
print("Fichiers :", fichiers)
# Créer un répertoire
os.mkdir("test_nsi")
print("Répertoire 'test_nsi' créé.")
# Renommer un fichier (si existant)
if "exemple.txt" in fichiers:
os.rename("exemple.txt", "exemple_renomme.txt")
print("Fichier renommé.")
# Supprimer le répertoire
os.rmdir("test_nsi")
print("Répertoire 'test_nsi' supprimé.")
Ce petit script montre comment l'OS permet aux programmes de manipuler des fichiers de manière standardisée. Tu pourras approfondir avec notre référence Python.
Comment réviser pour le bac NSI ?
Le sujet du système d'exploitation tombe régulièrement au bac. Voici quelques conseils :
- Connaître le vocabulaire : OS, noyau, processus, thread, mémoire virtuelle, système de fichiers, etc.
- Savoir décrire les états d'un processus : prêt, élu, bloqué, terminé.
- Comprendre la différence entre un programme et un processus : le programme est statique, le processus est dynamique.
- S'entraîner avec la ligne de commande : sous Linux, utilise des commandes comme
ps,top,killpour voir les processus. - Faire des exercices : simule un ordonnanceur, comme on l'a fait en Python.
Pour t'aider, tu peux aussi consulter les ressources de AlloBac et AlloLycée qui proposent des fiches et des quiz.
Conclusion
Le système d'exploitation est un pilier de l'informatique. En le comprenant, tu comprends mieux comment ton ordinateur fonctionne et comment les programmes interagissent avec le matériel. En NSI, tu as l'occasion d'explorer ces concepts de manière concrète, et avec un peu de pratique, tu deviendras un as ! Continue comme ça, et n'oublie pas de t'entraîner régulièrement. Tu vas y arriver !
