Aller au contenu

Fiche d'exercices : Systèmes d'exploitation et Linux

📚 Partie 1 : Concepts fondamentaux des systèmes d'exploitation

Introduction 🦊

Exercice 1 - Rôles du système d'exploitation

Associez chaque fonction à son rôle dans le système d'exploitation :

Fonctions :
1. Gestion de la mémoire
2. Ordonnancement des processus
3. Gestion des fichiers
4. Interface utilisateur
5. Gestion des périphériques

Rôles :
A. Permettre l'interaction avec l'utilisateur
B. Organiser et stocker les données
C. Allouer la RAM aux programmes
D. Décider quel programme s'exécute
E. Contrôler imprimantes, clavier, souris
Associations correctes :
1. Gestion de la mémoire → C. Allouer la RAM aux programmes
2. Ordonnancement des processus → D. Décider quel programme s'exécute
3. Gestion des fichiers → B. Organiser et stocker les données
4. Interface utilisateur → A. Permettre l'interaction avec l'utilisateur
5. Gestion des périphériques → E. Contrôler imprimantes, clavier, souris
Introduction 🦊

Exercice 2 - Types de systèmes d'exploitation

Classez ces systèmes d'exploitation par catégorie :

Systèmes : Windows 11, Ubuntu, macOS, Android, iOS, CentOS, Debian, FreeBSD

Catégories :
1. Systèmes propriétaires
2. Systèmes open source
3. Systèmes mobiles
4. Systèmes serveur
Classification :
1. Propriétaires : Windows 11, macOS, iOS
2. Open source : Ubuntu, CentOS, Debian, FreeBSD
3. Mobiles : Android, iOS
4. Serveur : CentOS, Debian, Ubuntu Server, FreeBSD

Note : Certains systèmes peuvent appartenir à plusieurs catégories
Moyen 🦊🦊

Exercice 3 - Processus et threads

Analysez cette situation :

Un navigateur web a ouvert 3 onglets :
• Onglet 1 : YouTube (vidéo en cours)
• Onglet 2 : Gmail (lecture d'emails)
• Onglet 3 : Google Docs (édition de document)

Questions :
1. Combien de processus sont créés ?
2. Quels sont les avantages de cette architecture ?
3. Que se passe-t-il si l'onglet YouTube plante ?
4. Comment le système gère-t-il les priorités ?
Analyse :
1. Processus : Généralement 4 processus (1 principal + 3 pour les onglets)
2. Avantages :
• Isolation : un onglet qui plante n'affecte pas les autres
• Sécurité : séparation des contextes
• Performance : parallélisation possible
3. Si YouTube plante : Seul cet onglet se ferme, les autres continuent
4. Priorités : L'onglet actif a plus de CPU, les onglets en arrière-plan sont limités

📚 Partie 2 : Commandes Linux de base

Introduction 🦊

Exercice 4 - Navigation dans les répertoires

Vous êtes dans le répertoire /home/user. Écrivez les commandes pour :

1. Afficher le répertoire courant
2. Lister le contenu du répertoire
3. Aller dans le répertoire Documents
4. Revenir au répertoire parent
5. Aller directement à la racine
6. Retourner au répertoire home de l'utilisateur
Commandes :
1. pwd
2. ls
3. cd Documents
4. cd ..
5. cd /
6. cd ~ ou cd /home/user
Introduction 🦊

Exercice 5 - Manipulation de fichiers

Écrivez les commandes pour :

1. Créer un fichier vide nommé "test.txt"
2. Créer un répertoire "projet"
3. Copier test.txt dans le répertoire projet
4. Renommer test.txt en ancien.txt
5. Supprimer le fichier ancien.txt
6. Supprimer le répertoire projet et son contenu
Commandes :
1. touch test.txt
2. mkdir projet
3. cp test.txt projet/
4. mv test.txt ancien.txt
5. rm ancien.txt
6. rm -r projet
Moyen 🦊🦊

Exercice 6 - Permissions et propriétés

Analysez cette sortie de ls -l :

-rw-r--r-- 1 alice users 1024 Jan 15 10:30 document.txt
drwxr-xr-x 2 alice users 4096 Jan 15 09:15 dossier
-rwxr-xr-- 1 bob admin 512 Jan 14 16:45 script.sh

Questions :
1. Quels sont les types de ces éléments ?
2. Qui peut lire document.txt ?
3. Qui peut exécuter script.sh ?
4. Quelle commande pour donner tous les droits à tous sur document.txt ?
Analyse :
1. Types :
• document.txt : fichier régulier (-)
• dossier : répertoire (d)
• script.sh : fichier régulier (-)

2. Lecture document.txt : alice (propriétaire), users (groupe), tous (autres)

3. Exécution script.sh : bob (propriétaire), admin (groupe)

4. Commande : chmod 777 document.txt
Moyen 🦊🦊

Exercice 7 - Recherche et filtrage

Écrivez les commandes pour :

1. Trouver tous les fichiers .txt dans le répertoire courant
2. Chercher le mot "erreur" dans le fichier log.txt
3. Afficher les 10 dernières lignes de log.txt
4. Compter le nombre de lignes dans un fichier
5. Afficher les processus contenant "python"
6. Trouver les fichiers modifiés dans les dernières 24h
Commandes :
1. find . -name "*.txt"
2. grep "erreur" log.txt
3. tail -n 10 log.txt
4. wc -l fichier.txt
5. ps aux | grep python
6. find . -mtime -1
Difficile 🦊🦊🦊

Exercice 8 - Pipes et redirections

Créez des commandes complexes pour :

1. Lister les fichiers, trier par taille, afficher les 5 plus gros
2. Compter le nombre de processus par utilisateur
3. Sauvegarder la liste des fichiers dans un fichier
4. Chercher "TODO" dans tous les fichiers .py et compter les occurrences
5. Afficher les lignes uniques d'un fichier trié
Commandes complexes :
1. ls -la | sort -k5 -n | tail -5
2. ps aux | awk '{print $1}' | sort | uniq -c
3. ls -la > liste_fichiers.txt
4. grep -r "TODO" *.py | wc -l
5. sort fichier.txt | uniq

📚 Partie 3 : Gestion des processus et système

Moyen 🦊🦊

Exercice 9 - Surveillance système

Analysez cette sortie de la commande top :

PID USER %CPU %MEM COMMAND
1234 alice 25.0 15.2 python script.py
5678 bob 12.5 8.1 firefox
9012 root 5.0 2.3 systemd

Questions :
1. Quel processus consomme le plus de CPU ?
2. Quel processus utilise le plus de mémoire ?
3. Comment arrêter le processus python ?
4. Que fait le processus systemd ?
Analyse :
1. Plus de CPU : python script.py (25.0%)
2. Plus de mémoire : python script.py (15.2%)
3. Arrêter python : kill 1234 ou killall python
4. systemd : Gestionnaire de services système (processus init moderne)
Difficile 🦊🦊🦊

Exercice 10 - Scripts et automatisation

Créez un script bash qui :

1. Vérifie si un répertoire "backup" existe
2. Le crée s'il n'existe pas
3. Copie tous les fichiers .txt du répertoire courant vers backup
4. Affiche le nombre de fichiers copiés
5. Ajoute la date et l'heure dans un fichier log
Script bash :
#!/bin/bash

# Vérifier et créer le répertoire backup
if [ ! -d "backup" ]; then
    mkdir backup
    echo "Répertoire backup créé"
fi

# Compter les fichiers .txt
count=$(ls *.txt 2>/dev/null | wc -l)

if [ $count -gt 0 ]; then
    # Copier les fichiers .txt
    cp *.txt backup/
    echo "$count fichiers .txt copiés vers backup"
else
    echo "Aucun fichier .txt trouvé"
fi

# Ajouter l'entrée dans le log
echo "$(date): Sauvegarde effectuée - $count fichiers" >> backup.log
                
Pour exécuter :
chmod +x backup.sh
./backup.sh