Intro S.E : Révision DS
Questions de cours Question 1 - Les bibliothèques ignorées par le système d'exploitation La bonne réponse est la proposition 1. Les bibliothèques applicatives. Les bibliothèques systèmes et utilitaires sont fournies ou utilisées par le système d'exploitation pour fonctionner et exposer ses services (les appels système).
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 - Les bibliothèques ignorées par le système d'exploitation
La bonne réponse est la proposition 1. Les bibliothèques applicatives.
Les bibliothèques systèmes et utilitaires sont fournies ou utilisées par le système d'exploitation pour fonctionner et exposer ses services (les appels système). Les bibliothèques applicatives, en revanche, sont liées aux logiciels utilisateurs et ne font pas partie du système d'exploitation lui-même.
Question 2 - Le rôle d'un système de fichiers
La bonne réponse est la proposition 3. Il permet de stocker les informations et de les organiser sur les mémoires secondaires.
Le système de fichiers (File System) est la structure de données utilisée par le système d'exploitation pour gérer le stockage persistant (disques durs, clés USB, etc., qui sont des mémoires secondaires). La mémoire vive et la mémoire cache sont volatiles et gérées par d'autres sous-systèmes (gestionnaire de mémoire).
Question 3 - Architecture logicielle classique
Les bonnes réponses sont les propositions 1. Le système d'exploitation directement au-dessus du matériel et 3. Les applications directement au-dessus du système d'exploitation.
L'architecture standard se représente en couches : le matériel est tout en bas, le système d'exploitation (noyau) se place juste au-dessus pour le piloter, et les applications tournent au-dessus du système d'exploitation qui leur fournit une abstraction du matériel.
Question 4 - Ce qu'est Linux
La bonne réponse est la proposition 4. Un système d'exploitation au format libre.
Linux est un noyau (et par extension un système d'exploitation avec GNU) libre et open-source. Bien qu'il fonctionne sur PC (et Macintosh modernes), l'option 4 est la définition fondamentale attendue ici. (La mascotte est bien un manchot, souvent appelé "pingouin" par erreur de traduction, mais ce n'est pas ce qui définit Linux).
Question 5 - Caractéristiques du système Unix
Les bonnes réponses sont les propositions 1. Multitâche, 3. Multi-utilisateur et 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 fractions de temps processeur à chacun (temps partagé).
Question 6 - Architecture logicielle (bis)
Bien que le document source indique les réponses 1, 3 et 4 pour cette question qui est strictement identique à la Question 3, il s'agit d'une erreur de frappe dans le corrigé original (qui a dupliqué la solution de la question 5). L'option 4 ("Le système d'exploitation à côté des applications") est fausse sur le plan architectural. Les seules réponses techniquement valables restent 1 et 3.
Question 7 - L'origine d'Unix
La bonne réponse est la proposition 1. 1969.
Le développement d'Unix a commencé en 1969 aux laboratoires Bell (AT&T) par Ken Thompson et Dennis Ritchie.
Question 8 - Le multitâche
Les bonnes réponses sont les propositions 1 et 2.
Le multitâche nécessite d'avoir plusieurs processus (tâches) chargés en mémoire centrale (1) et permet effectivement de lancer l'exécution d'un programme alors qu'un autre n'est pas encore terminé (2). L'option 3 décrit plutôt le mécanisme sous-jacent (temps partagé) que le concept global, et le multitâche n'empêche nullement le multi-utilisateur (option 4), bien au contraire.
Exercice 1 - Script de concaténation sous C-Shell
Le code source fourni utilise la syntaxe du C-Shell (csh ou tcsh). Le code d'origine a été altéré par des caractères d'échappement inutiles (comme \<file1\> ou \?) et des erreurs de syntaxe pour la fonction exit. Voici le code corrigé afin qu'il s'exécute correctement :
#!/bin/csh
if ($#argv != 3) then
echo "Usage: $0 <file1> <file2> <file3>"
exit -1
endif
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
if (-e $3) then
while (1)
echo -n "$0: $3 exists. Overwrite it? [y|n] "
set i = $<
if ($i == y || $i == n) break
end
if ($i == n) then
exit -5
endif
if (! -w $3) then
echo "$0: you don't have writing permission on $3"
exit -6
endif
endif
cat $1 $2 > $3
Note sur la correction : Les arguments des appels exit sous C-shell ne doivent pas comporter de parenthèses (ex: exit -1 et non exit (-1)). J'ai également retiré les antislashs illisibles qui parasitaient l'affichage des chaînes de caractères.
Exercice 2 - Listes des fichiers accessibles dans /etc
Le script en syntaxe Bash (ou Bourne Shell) permet d'itérer sur le contenu du répertoire et de vérifier les permissions à l'aide de la commande test.
#!/bin/bash
echo "Fichiers accessibles en lecture :"
for FILE in /etc/*; do
if test -r "$FILE"; then
echo "$FILE"
fi
done
echo "Fichiers accessibles en écriture :"
for FILE in /etc/*; do
if test -w "$FILE"; then
echo "$FILE"
fi
done
Exercice 3 - Table de multiplication
Le script suivant prend deux paramètres. Le premier ($1) est la table à calculer, le second ($2) est la limite supérieure.
#!/bin/bash
for V in $(seq 0 $2); do
echo "$V x $1 = $(expr $V \* $1)"
done
Note sur la correction : Dans le document d'origine, le caractère de multiplication était encadré par des guillemets typographiques ” altérés, et expr nécessite de protéger le caractère * par un antislash \* (ou des guillemets simples '*') pour éviter que le shell ne l'interprète comme un joker (wildcard) listant les fichiers du répertoire courant.
Exercice 4 - Gestion des fichiers et répertoires
Question 4.1 - Type et création du fichier 2050.txt
Le fichier 2050.txt est un lien symbolique.
On le sait grâce au caractère l situé en toute première position de la description des droits d'accès (lrwxrwxrwx), ainsi que par la flèche -> qui indique vers quel fichier pointe le lien.
La commande pour créer ce lien est :
ln -s /home/r/liuppa/belloir/public/ise/tp1/2050.txt 2050.txt
(On peut aussi utiliser ~/public/... si l'on se trouve dans le bon répertoire personnel, comme indiqué dans la correction d'origine).
Question 4.2 - Droits du fichier station.txt
Les droits du fichier station.txt sont -rw-------. Cela signifie que l'utilisateur (le propriétaire) a les droits de lecture (r) et d'écriture (w), mais n'a pas le droit d'exécution. Les membres du groupe et les autres utilisateurs n'ont aucun droit.
La commande pour donner le droit d'exécution au groupe propriétaire est :
chmod g+x station.txt
Question 4.3 - Commande d'affichage et colonnes
La commande ayant permis cet affichage est ls -l.
Voici la signification des 7 colonnes affichées :
| Colonne | Information donnée |
|---|---|
| 1ère | Le type du fichier (1er caractère) et les droits d’accès (9 caractères suivants) |
| 2ème | Le nombre de liens physiques pointant vers ce fichier |
| 3ème | Le nom du propriétaire du fichier |
| 4ème | Le nom du groupe propriétaire |
| 5ème | La taille du fichier en octets |
| 6ème | La date et l'heure de la dernière modification |
| 7ème | Le nom du fichier |
Question 4.4 - Recherche de la dernière sauvegarde
La commande permettant de rechercher les fichiers modifiés il y a 5 jours est :
find SAV -mtime 5
Attention : Strictement parlant, -mtime 5 cherche les fichiers modifiés il y a exactement 5 jours (entre 120 et 144 heures). Si l'on souhaite chercher les fichiers modifiés depuis moins de 5 jours, on utiliserait -mtime -5. Nous conservons la commande de la source.
Question 4.5 - Recherche combinée avec la date de chute de neige
La commande source présente plusieurs erreurs (date incorrecte par rapport à l'énoncé, et un espace erroné dans le -exec). La question demande de chercher la date 13/02/06, mais le corrigé cherche 13/12/06. Voici la commande corrigée qui répond exactement à l'énoncé :
find SAV -mtime 5 -exec grep "13/02/06" {} \;
Question 4.6 - Expression régulière pour les fichiers de sauvegarde
Sachant que la date est au format jjmmaa (6 chiffres), l'expression régulière la plus précise est :
station[0-9]{6}\.txt
Question 4.7 - Raccourci pour une commande sécurisée
Il y a deux méthodes principales pour simplifier l'appel à rm -ri <fichier> :
- L'alias :
alias rm="rm -ri" - Le script shell : Créer un fichier exécutable (par exemple nommé
suppr) contenant :#!/bin/bash rm -ri "$1"
Question 4.8 - Script de recherche de station
Le code fourni dans le corrigé source (if [ $(grep $1 $2) ]) est incorrect en Bash : si le fichier contient des espaces, la commande de test [ ] va générer une erreur de syntaxe. La bonne pratique est d'utiliser l'option silencieuse (-q) de grep. Voici le script corrigé :
#!/bin/bash
if grep -q "$1" "$2"; then
echo "station $1 connu"
else
echo "station $1 inconnu"
fi
Question 4.9 - Services assurés par le noyau
Les principaux types de services assurés par le noyau (kernel) sont :
- La gestion des processus (ordonnancement, création, destruction)
- Le chargement et le lancement des programmes
- La gestion de la mémoire (allocation de la mémoire principale et virtuelle)
- La gestion des Entrées/Sorties (pilotes de périphériques, système de fichiers)
Question 4.10 - Le succès d'Unix dans les années 80
Le succès fulgurant d'Unix s'explique par :
- Son adoption massive par les universités américaines.
- Le besoin de standardisation par les entreprises et les utilisateurs.
- Son faible coût pour un système d'exploitation multi-utilisateurs.
- Sa portabilité, offrant un grand nombre d'architectures matérielles supportées (car écrit en langage C).
Exercice 5 - Manipulation du fichier liste.txt
Dans cet exercice, nous supposons que les colonnes du fichier sont séparées par des tabulations ou des espaces.
Question 5.1 - Compter le nombre de lignes et de mots
wc -l liste.txt ; wc -w liste.txt
Question 5.2 - Tri du fichier
- (a) Par ordre alphabétique des étudiants (colonne 1) :
sort -k1 liste.txt - (b) Par note décroissante dans la matière A (colonne 4), puis la matière B (colonne 5) :
(L'optionsort -k4rn -k5rn liste.txtrinverse l'ordre pour qu'il soit décroissant, etnprécise qu'il s'agit d'un tri numérique). - (c) Par matière (colonne 2, ici "filière") :
sort -k2 liste.txt
Question 5.3 - Filtrer les étudiants d'informatique
grep -w "info" liste.txt
(Le tag -w garantit que l'on cherche le mot entier "info" et non une sous-chaîne).
Question 5.4 - Filtrer pour les étudiants de physique et mathématique
Le corrigé source part du principe que si l'étudiant n'est pas en "info", il est forcément en "physique" ou "mathématique" (exclusion via -v).
grep -v -w "info" liste.txt
Question 5.5 - Liste des étudiantes, puis des étudiants
En filtrant sur la colonne du sexe (M ou F) :
grep -w "F" liste.txt ; grep -w "M" liste.txt
Question 5.6 - Afficher uniquement les prénoms, triés par filière
En supposant que le prénom se trouve dans la première colonne :
sort -k2 liste.txt | cut -f 1
Question 5.7 - Création du fichier math_hommes.txt
Pour filtrer les hommes (M), les trier par filière (col 2), puis par note décroissante en A (col 4) et en B (col 5), et sauvegarder le résultat :
grep -w "M" liste.txt | sort -k2,2 -k4rn -k5rn > math_hommes.txt
Méthode
Pour réussir ce type d'épreuve sur les systèmes d'exploitation (spécialement le monde Unix/Linux), voici la marche à suivre :
- Comprendre l'architecture système : Ne confondez pas le noyau (kernel), le shell (l'interpréteur de commandes), et les utilitaires. Révisez vos couches architecturales.
- Maîtriser les droits d'accès : Les notations octales (ex: 755) et symboliques (ex:
g+x,rwx) doivent être maîtrisées. Vous devez savoir déchiffrer le premier bloc retourné parls -l. - Apprendre les arguments des commandes essentielles : Les filtres de base tels que
grep,sort,cut,wcoufindreviennent systématiquement. Connaître par cœur l'utilité des options-v(inverse),-w(mot exact),-n(numérique), et-r(renversé) vous fera gagner un temps précieux. - Tester son code mentalement : Les examens écrits demandent de coder sur papier. Lors de l'écriture d'un script Bash ou C-Shell, vérifiez bien vos espaces (particulièrement autour des crochets d'un
ifen Bash) et vos variables. Soyez attentif à la façon dont le shell interprétera les caractères spéciaux (comme le*de la multiplication de la question 3, qu'il faut échapper).
Commentaires
Aucun commentaire pour le moment. Posez la première question.