Intro S.E : Révision DS
Questions de cours Question 1 - Bibliothèques non utilisées par le système Réponse correcte : 1. Les bibliothèques applicatives. Les bibliothèques applicatives sont destinées aux programmes utilisateurs (les applications) pour accomplir des tâches spécifiques à ces logiciels (par exemple, le traitement d'image ou la création d'interfaces graphiques).
D'après le document Intro S.E : Révision DS
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming, Operating Systems, Scripting · PDF · 10 pages · 1969
Afficher l'aperçu du document
Questions de cours
Question 1 - Bibliothèques non utilisées par le système
Réponse correcte : 1. Les bibliothèques applicatives.
Les bibliothèques applicatives sont destinées aux programmes utilisateurs (les applications) pour accomplir des tâches spécifiques à ces logiciels (par exemple, le traitement d'image ou la création d'interfaces graphiques). Le système d'exploitation lui-même s'appuie plutôt sur des bibliothèques systèmes (qui font l'interface avec le noyau) et des utilitaires de base.
Question 2 - Rôle du système de fichiers
Réponse correcte : 3. Il permet de stocker les informations et de les organiser sur les mémoires secondaires.
Un système de fichiers (File System) a pour but de structurer, stocker et retrouver les données de manière persistante sur des mémoires secondaires (disques durs, SSD, clés USB), par opposition à la mémoire vive (RAM) ou la mémoire cache qui sont volatiles et gérées directement par le gestionnaire de mémoire de l'OS.
Question 3 - Architecture logicielle classique
Réponses correctes : 1 et 3.
- 1. Le système d'exploitation directement au-dessus du matériel.
- 3. Les applications directement au-dessus du système d'exploitation.
L'architecture classique en couches superpose les éléments ainsi : le matériel est tout en bas, le système d'exploitation vient s'interfacer directement avec lui pour en gérer les ressources, et enfin les applications s'exécutent par-dessus le système d'exploitation en utilisant ses services.
Question 4 - Nature de Linux
Réponse correcte : 4. Un système d'exploitation au format libre.
Bien que Linux fonctionne sur PC (option 1) et sur Macintosh modernes, l'option qui définit le mieux son essence dans ce contexte est son statut de système d'exploitation libre (open source). Le terme "pingouin" (option 3) fait référence à sa mascotte Tux, mais Linux est bel et bien un noyau de système d'exploitation, et non le dessin animé lui-même.
Question 5 - Caractéristiques d'Unix
Réponses correctes : 1, 3 et 4.
- 1. Multitâche
- 3. Multi-utilisateur
- 4. À temps partagé
Unix a été conçu dès l'origine pour permettre à plusieurs utilisateurs de se connecter simultanément (multi-utilisateur) et d'exécuter plusieurs processus en même temps (multitâche) grâce à un ordonnancement allouant des tranches de temps à chaque processus (temps partagé). Il n'est pas "à temps complet", une appellation qui n'est pas standard en systèmes d'exploitation.
Question 6 - Architecture logicielle (Doublon)
Réponses correctes : 1 et 3.
Note de correction : Cette question est identique à la Question 3. Cependant, le corrigé source indique comme réponse "1, 3, 4". C'est une erreur manifeste dans le document source, probablement due à un copier-coller de la réponse de la Question 5. L'option 4 affirme que "Le système d'exploitation est à côté des applications", ce qui est conceptuellement faux dans une architecture classique. Les seules réponses valides restent la 1 et la 3.
Question 7 - Origine d'Unix
Réponse correcte : 1. 1969.
Le développement d'Unix a commencé en 1969 aux laboratoires Bell (Bell Labs) par Ken Thompson, Dennis Ritchie et d'autres chercheurs.
Question 8 - Le multitâche
Réponses correctes : 1 et 2.
- 1. Nécessite, pour un système d'exploitation, d'avoir en mémoire centrale plusieurs tâches simultanément.
- 2. Permet de commencer l'exécution d'un second programme alors qu'un premier est déjà en exécution.
Le multitâche implique que le système puisse charger plusieurs processus en RAM et basculer de l'un à l'autre pour donner l'illusion d'une exécution simultanée, ce qui valide les propositions 1 et 2. La proposition 3 est restrictive (les systèmes modernes n'exécutent pas forcément "à tour de rôle" strict, mais avec des priorités) et la 4 est fausse car un système multitâche peut tout à fait être multi-utilisateur (comme Unix).
Exercice 1 - Script CSH de concaténation avec vérifications
Le langage attendu ici est le C Shell (csh ou tcsh), comme l'indiquent les mots-clés de la correction source (foreach, $#argv, $<).
Le code source comportait des erreurs de syntaxe empêchant son exécution, notamment exit (-1) qui n'est pas valide, des problèmes d'échappement de caractères dans les echo, et des opérateurs logiques mal formatés. J'ai réparé ces éléments pour que le script soit fonctionnel tout en conservant la logique exacte demandée.
#!/bin/csh
# Vérification du nombre d'arguments
if ($#argv != 3) then
echo "Usage: $0 <file1> <file2> <file3>"
exit 1
endif
# Vérification des fichiers d'entrée (file1 et file2)
foreach i (1 2)
if (! -e $argv[$i]) then
echo "$0: $argv[$i] doesn't exist"
exit 2
endif
if (! -f $argv[$i]) then
echo "$0: $argv[$i] isn't an ordinary file"
exit 3
endif
if (! -r $argv[$i]) then
echo "$0: you don't have reading permission on $argv[$i]"
exit 4
endif
end
# Vérification du fichier de sortie (file3) s'il existe
if (-e $3) then
while (1)
echo -n "$0: $3 exists. Overwrite it? [y/n] "
set response = $<
if ($response == "y" || $response == "n") break
end
if ($response == "n") then
exit 5
endif
if (! -w $3) then
echo "$0: you don't have writing permission on $3"
exit 6
endif
endif
# Concaténation des deux fichiers dans le troisième
cat $1 $2 > $3
Exercice 2 - Parcours et test des droits dans /etc
Le but est de lister les fichiers selon leurs droits. Le code source est un script Bourne Shell (sh ou bash). J'ai formaté le code pour le rendre lisible et ajouté les guillemets de sécurité autour de la variable $FILE.
Liste des fichiers accessibles en lecture
#!/bin/sh
for FILE in /etc/*; do
if test -r "$FILE"; then
echo "$FILE"
fi
done
Liste des fichiers accessibles en écriture
#!/bin/sh
for FILE in /etc/*; do
if test -w "$FILE"; then
echo "$FILE"
fi
done
Exercice 3 - Script d'affichage de tables de multiplication
Le code source comportait des guillemets typographiques (” et “) qui provoqueraient une erreur d'exécution dans un terminal. Ceux-ci ont été remplacés par des guillemets standard (").
#!/bin/sh
# $1 est la table (ex: 5)
# $2 est la limite de multiplication (ex: 10)
for V in $(seq 0 $2); do
echo "$V x $1 = $(expr $V \* $1)"
done
Note sur la réparation : L'opérateur de multiplication * dans la commande expr doit être échappé avec \ ou mis entre guillemets stricts pour ne pas être interprété comme un joker (wildcard) par le shell. J'ai utilisé \*.
Exercice 4 - Gestion des fichiers, droits et commandes Unix
Question 1 - Type du fichier 2050.txt
C'est un lien symbolique pointant vers /home/r/liuppa/belloir/public/ise/tp1/2050.txt.
On le sait grâce à la lettre l présente au tout début de la chaîne des droits (lrwxrwxrwx) et à la flèche -> à la fin de la ligne.
La commande permettant de le créer depuis le répertoire courant est :
ln -s /home/r/liuppa/belloir/public/ise/tp1/2050.txt 2050.txt
(Le corrigé source utilise le tilde ~/public/..., ce qui est correct uniquement si la commande est tapée directement par l'utilisateur propriétaire de ce dossier, belloir).
Question 2 - Droits de station.txt
Les droits actuels du fichier station.txt sont -rw-------, ce qui signifie que le propriétaire a les droits de lecture (r) et d'écriture (w), mais le groupe et les autres utilisateurs n'ont aucun droit.
La commande pour ajouter le droit d'exécution (x) au groupe (g) est :
chmod g+x station.txt
Question 3 - Affichage du contenu du répertoire
La commande utilisée pour obtenir cet affichage détaillé est :
ls -l
Signification de chaque colonne (de gauche à droite) :
- Les droits d'accès sur le fichier (avec le type de fichier en premier caractère).
- Le nombre de liens matériels (hard links) pointant vers ce fichier.
- Le nom du propriétaire du fichier.
- Le groupe propriétaire du fichier.
- La taille du fichier en octets.
- La date et l'heure de la dernière modification.
- Le nom du fichier (et sa cible si c'est un lien).
Question 4 - Recherche de la dernière sauvegarde
La commande pour chercher les fichiers modifiés il y a 5 jours dans le répertoire SAV est :
find SAV -mtime 5
Note pédagogique : L'option -mtime 5 cible les fichiers modifiés il y a exactement 5 jours (entre 5 et 6 jours). Si l'on voulait les fichiers modifiés depuis moins de 5 jours, on utiliserait -mtime -5. Nous conservons la commande du corrigé.
Question 5 - Recherche combinée de la sauvegarde et d'une date
Le but est d'exécuter un grep sur les fichiers trouvés par find.
Note de correction : L'énoncé demande de chercher la date du 13/02/06, mais la commande source recherche 13/12/06. Voici la commande corrigée avec la date demandée par l'énoncé, et en réparant les espaces manquants avant l'option -exec :
find SAV -mtime 5 -exec grep "13/02/06" {} \;
(L'échappement des slashes \/ utilisé dans la source n'est pas nécessaire pour grep tant que la chaîne est entre guillemets).
Question 6 - Expression régulière
L'expression régulière permettant de repérer le format station<jjmmaa>.txt :
station[0-9]{6}\.txt
Le point est échappé (\.) car c'est un caractère spécial en regex. [0-9]{6} vérifie la présence d'exactement 6 chiffres.
Question 7 - Raccourci de commande rm -ri
Les deux méthodes sont la création d'un alias et l'écriture d'un script shell.
(Le document source contenait des tirets typographiques qui ont été remplacés par des tirets standards -).
Méthode 1 : L'alias
alias rm="rm -ri"
Méthode 2 : Le script exécutable (nommé rm)
#!/bin/bash
rm -ri "$1"
Question 8 - Script de recherche de station
Le code du corrigé source (if [ $(grep $1 $2) ]) est structurellement dangereux et dysfonctionnel : si grep trouve plusieurs mots ou des espaces, la condition [ ... ] provoquera une erreur de syntaxe ("too many arguments"). J'ai réparé le script en utilisant la méthode standard de test de retour d'une commande avec l'option -q (quiet).
#!/bin/bash
# $1 : nom de la station
# $2 : fichier dans lequel chercher
if grep -q "$1" "$2"; then
echo "station $1 connu"
else
echo "station $1 inconnu"
fi
Question 9 - Services du noyau
Les services principaux assurés par le noyau (kernel) d'un système d'exploitation sont :
- La gestion des processus (ordonnancement, création, destruction).
- Le chargement et l'exécution des programmes.
- La gestion de la mémoire (principale et secondaire).
- La gestion des Entrées/Sorties (E/S) et des périphériques.
Question 10 - Succès d'Unix dans les années 80
Plusieurs facteurs expliquent ce succès :
- Une adoption massive par les universités américaines.
- Une forte volonté de standardisation de la part des entreprises et des utilisateurs.
- Son faible coût pour un système véritablement multi-utilisateurs.
- Son impressionnante portabilité (un grand nombre d'architectures matérielles supportées).
Exercice 5 - Traitement de données avec les filtres Unix
Dans toutes les commandes ci-dessous, les tirets typographiques (–) présents dans le document source ont été remplacés par des tirets standards - requis par le terminal.
Question 1 - Compter le nombre de lignes et de mots
wc -l liste.txt ; wc -w liste.txt
Question 2 - Tris multiples
(a) Par ordre alphabétique des étudiants : (En supposant que le nom de l'étudiant est dans la première colonne)
sort -k1 liste.txt
(b) Par note décroissante dans la matière A (colonne 4), puis B (colonne 5) :
sort -k4rn -k5rn liste.txt
(c) Par filière (colonne 2) :
sort -k2 liste.txt
Question 3 - Filtrer les étudiants d'informatique
grep -w info liste.txt
L'option -w garantit que l'on cherche le mot exact "info" et non un mot contenant ces lettres.
Question 4 - Filtrer les étudiants de physique et de mathématique
grep -v -w info liste.txt
Note sur la correction : L'auteur du sujet suppose ici implicitement que le fichier ne contient que les trois filières (info, physique, mathématique). Ainsi, exclure l'informatique (-v) permet de garder uniquement la physique et les mathématiques.
Question 5 - Filtrer les étudiantes puis les étudiants
grep -w F liste.txt ; grep -w M liste.txt
Question 6 - Afficher UNIQUEMENT les prénoms triés par filière
(En supposant que le prénom se trouve dans la première colonne et que le séparateur est une tabulation, comportement par défaut de cut).
sort -k2 liste.txt | cut -f 1
Question 7 - Créer un fichier de synthèse complexe
Le but est d'isoler les hommes (M), de les classer par filière (-k2,2), puis par note décroissante en matière A (-k4rn) et B (-k5rn), et de rediriger la sortie (>) vers le fichier.
grep -w M liste.txt | sort -k2,2 -k4rn -k5rn > math_hommes.txt
Méthode
Pour réussir ce type d'épreuve associant culture générale des systèmes d'exploitation et programmation de scripts :
- Apprenez la théorie de base : Comprenez bien la distinction entre système d'exploitation, noyau, application et matériel. Familiarisez-vous avec les concepts historiques (Unix, Linux, temps partagé).
- Maîtrisez les commandes Unix : Les utilitaires comme
ls,grep,find,sort,cut, etwcont des options récurrentes (-l,-w,-v,-r,-n). Lisez leur documentation viamanlors de vos révisions. - Faites attention à la syntaxe shell : Un espace manquant autour d'un crochet de test
[ ]en Bash, ou un caractère non échappé, fausse la totalité de la réponse. Testez vos scripts sur une vraie machine Linux pour internaliser ces règles de formatage (variables, bouclesfor, instructionsif). - Vérifiez la logique par étapes : Pour les commandes composées avec des tubes (
|) ou des exécutions imbriquées (-exec), construisez votre instruction mentalement de gauche à droite. Le flux de texte doit être correctement filtré avant d'être trié ou découpé.
Commentaires
Aucun commentaire pour le moment. Posez la première question.