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.

Intro S.E : Révision DS

Document source

Intro S.E : Révision DS

Programming, Operating Systems, Scripting · PDF · 10 pages · 1969

Afficher l'aperçu du document

Consulter le document original →

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> :

  1. L'alias :
    alias rm="rm -ri"
    
  2. 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) :
    sort -k4rn -k5rn liste.txt
    
    (L'option r inverse l'ordre pour qu'il soit décroissant, et n pré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 :

  1. 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.
  2. 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é par ls -l.
  3. Apprendre les arguments des commandes essentielles : Les filtres de base tels que grep, sort, cut, wc ou find reviennent 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.
  4. 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 if en 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).

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions